按:本文为《程序员》杂志约稿,刊发于2012年3月号,名为《程序员学英语三部曲》,http://www.programmer.com.cn/10833/。
总的来说,程序员可算是英语水平比较好的群体,因为在这个行业,英文资料是最全面、最及时,对英文资料的需求也最迫切的。因此,就我的观察,即便刚入门不久的程序员,面对陌生的问题,一般也能查阅英文文档,找到需要的信息。但是另一方面,我也发现,经常阅读英文文档的程序员,英语水平许多时候却不像“经常阅读英文”的样子。应《程序员》的编辑邀约,我在这里列几点自己的学习心得,供大家参考。
第一,既要看代码,也要读文档。
读文档只读代码,是很多程序员的习惯,也是导致程序员虽然读了很多英文资料,英文水平却没有相应提高的原因之一。以前曾在《程序员》上看到介绍阅读技术图书方法的文章,提出过“先代码后文字”的方法,也就是“先看代码,看不明白再看文字”。这种阅读法能极大提高阅读效率,但如果技术图书只看代码就足够,还要文字干什么呢?很多时候,代码只是冰山一角,代码背后的思维和逻辑才是真正的重头戏,只有写成文字才能解释,也只有阅读文字才能理解。
比如,两段代码都是 x = 5; 看起来没差别,但一段的文字说明是“x should be not more than five”,另一段的文字说明是“x should be no more than five”。不查词典,你能弄清楚两种说法的区别吗——前者是“x必须小于等于5”,后者是“x应当只有5”,意思不同,应用的方法与场合也不相同。
近年来,有越来越多的技术人员投身译介活动,这本来是一件好事,但如果阅读能力不过关,反而会造成更多的困扰。经常有希望翻译技术文档的程序员来找我讨论翻译问题,希望了解一些句子应该如何表达。一开始,我也认为这是中文表达的问题,但后来逐渐发现,其实更多的问题出在英文阅读上,所以我的回答经常是:你觉得作者这里说的是什么意思?引导对方把原文的意思逐步表达出来,其实这时候,真正的译文已经浮出水面了。
最近的例子来自这句话:But as with any web-based system, atom-based solutions trade latency for scalability, making atom often inappropriate for very low-latency notifications。这句话之所以难翻译,问题似乎在于,除去句子的主干,之前有一个But as…, 之后又有一个making…。然而我最后发现,对这个句子有疑问的程序员其实根本没搞懂trade…for…的用法(翻译为“基于atom的解决方案需要权衡延迟性和扩展性”),如果明白它是“牺牲xx换取xx”之后,整个句子就相当好理解,也非常容易翻译了:与所有基于web的系统一样,基于atom的解决方案为追求可扩展性,增大了延迟,所以atom往往并不合适用对延迟要求极低的提示。
要解决这个问题,首先要做的是改变“只看代码不看文字”的习惯,或者至少要做到“阅读文字之后,能明白它的意思与代码是一致的”;另一个有效的办法是通过阅读纯文字的英文资料来学习某些新的知识(比如关于深入原理的细致讲解),这个方法我推荐给许多朋友,非常有效。
第二,注意读音。
以前总听人说,中国人学了很多年英语,其实是哑巴英语。不知道现在的情况有多少改观,但就我所见,不少程序员虽然阅读了大量英文资料,也会加入英文的讨论组,也敢开口说,但是还会在读音上出现许多问题。这里说的“读音”,并不是字正腔圆的口音,而是一些术语的读音。
计算机科学的术语来源非常广泛。比如设计模式里,有一种模式叫Facade,许多人往往直接读作’fəkɑ:d,其实这个词来自法文,正确的读音其实是fə’sɑ:d;再比如伪代码的“伪”pseudo,正确的读音是’su:dəʊ,但是我很少遇到能把它读对的程序员,许多人干脆不会发这个音。
也许有人说,这些问题不重要,大家“将错就错”,约定俗成就好了,但事情没有这么简单。最近我参见某个技术聚会,有位嘉宾(技术高手)把框架名chameleon(变色龙)读成了’tʃəmiljən,而正确的读音是kə’miljən,因为没有文字资料,许多人听了半天才知道他说的是什么,一些不熟悉chameleon的听众更是到结束也没明白。中国人聚会尚且如此,如果有机会参加中外技术交流,读错造成的问题就更大了。
解决这个问题有一个非常好的办法,就是学习美国大学的公开课,耶鲁、斯坦福等学校的计算机系都放出了许多高质量的公开课,学习其中的一些精品课程,不但能夯实基础,还能顺带学会许多每天都要遇到,但不会或者读错的术语。比如我就从中学到,数据类型char的读音是kɑ:,而不是tʃɑ:(经多位读者指出,这个例子有误,kɑ:和tʃɑ:都是可以接受的)。
第三,锻炼英文表达。
如果你背过单词,大概听到过“被动单词”和“主动单词”的说法,前者是指“看到了能认出来”的单词,后者指“表达时能主动应用”的单词。就我的观察,许多程序员掌握的大多数英语,都属于“被动英语”——看到了能认识,但要表达同样的意思,未必说得出来。
平时这样似乎没有问题,可是到了查阅资料时,不会表达就成了大的障碍。相比中文技术资料世界中“无责任/不负责转贴”泛滥的情况,英文技术资料的质量要高得多,Google搜索资料的准确性也远高于百度;但是,要能够顺利应用英文资料,需要“主动”输入信息,描述问题,这时候“被动英语”就成了大问题。
我自己多次遇到过这样的情况:即便答案近在咫尺(输入正确的关键词,Google的第一条结果就是答案),但程序员就是一筹莫展——因为他不知道计算机的“嘟嘟”声是beep,不知道搜“多线程”资料应该用concurrency,也不知道“死机”是system halt,“黑屏”是blank screen,“(登录时)不停返回”是infinite loop……
要解决这个问题,最好的办法是在阅读资料时多用心,记住这些说法;另一方面,没事的时候多浏览stackoverflow之类的网站,不要因为问题与自己无关而忽略,多留心这些问题到底是什么,是如何表达的。这样,在自己遇到问题时,才能迅速找到可能的解决方案,节省时间。
有人说,以汉语为母语的程序员,学习英语已经是迫不得已,不但要会阅读,还要会读、会表达,真是难上加难。这种说法有一定道理,但是在目前并没有更好的解决方案,学会阅读、认准读音、锻炼表达,确实可以给自己带来好处。长远来看,要改变这种情况,需要中文技术圈的所有人员努力贡献高质量的资料(原创和翻译都可以),如果只是“无责任转贴”,既不亲自验证,也不整理格式,中文技术资料的整体质量只会持续恶化,反向逼迫更多的人把英语学好。
+
分享到:
相关推荐
将学到的英语知识应用到实际工作中,如编写英文邮件、参加国际会议等。实践是检验学习效果的最佳方式,也是巩固记忆的有效手段。 ### 知识点三:推荐学习资源 针对程序员群体,以下是一些实用的英语学习资源: - ...
英语单词表--程序员学习英语必用 本资源摘要信息旨在帮助程序员学习英语,提供了50个常用的英语单词,涵盖了日常生活、工作、学习等多个方面。这些单词包括私人的、私聊、剧场、游戏、熊、商业、博物馆、决定、中心...
java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...
个人独家收藏,小编愿意在这里和大家分享程序员的工作经验。 一位程序员工作10年总结的13个忠告+一名程序员的十年工作经历+程序员(工作十几年)的创业血泪史,万字长文,与君共勉!+程序员工作几年的一些感悟+...
2024 程序员学习路线规划及课程体系介绍.docx 2024 程序员学习路线规划及课程体系介绍.docx 2024 程序员学习路线规划及课程体系介绍.docx 2024 程序员学习路线规划及课程体系介绍.docx 2024 程序员学习路线规划及...
C++黑马程序员学习资料,附赠《InterviewGuide第四版By阿秀》、《LeetCode刷题手册》、《背包问题九讲》、《算法图解》pdf版本,三个基础课程文档手册及三个实验项目,由简到繁分别为《通讯录管理系统》、《职工管理...
有很多的JAVA程序员,在初期学习时,通常会对如何学习而感到迷茫。下面笔者就将转发一篇一位网友的精品帖,这位作者对于JAVA程序的学习分析的很到位,相信能帮助那些正在处于迷茫状态的初学者...
程序员书籍 学习资料搜集 包括基础 中级 技巧方面的书籍
《程序员求职面试英语宝典》教授程序员如何用英语进行自我介绍,如何回答关于职业规划和工作经历的问题,以及如何应对压力面试。这些内容不仅能够提升程序员的面试技巧,还能增加他们在面试中的自信。 最后,行业...
然而,对于程序员而言,除了不断学习新技术外,积累工作经验同样重要。工作经验能够帮助程序员在专业领域内实现质的飞跃,为个人职业发展奠定坚实的基础。接下来,让我们结合程序员的工作经验,深入探讨面试过程中的...
程序员密码学
在软件开发的世界中,程序员的经验是历经无数代码行与项目挑战所铸就的宝贵资产。经验丰富的程序员往往在技术深度、解决问题的能力以及与团队的协作上有着独到之处。本文将详细探讨程序员成长过程中的关键经验,以及...
总体来看,《程序员密码学》不仅是一本理论与实践并重的技术书籍,也是软件开发人员在追求高安全性软件产品过程中的重要参考工具。通过学习和理解书中的概念和技术,程序员可以更好地设计和实现安全、高效的密码学...
在基础知识方面,作者指出很多程序员,包括经验丰富的和初学者,在这方面存在模糊的认识。程序员需要掌握的不仅仅是某一种编程语言,更重要的是要深刻理解数据结构、算法、具备解决问题的能力以及良好的编程习惯。在...
读书笔记:寻找程序员学习英语背后的秘密.旨在归纳不同类型程序员需求的 英语单词表
程序员必看,学习的方法!
Java 程序员常用英语 Java 程序员常用英语是指在编程过程中经常使用的英语单词和短语。这些英语单词和短语是编程语言的基础,掌握它们对提高编程效率和理解新技术非常重要。 1. 数组相关英语单词 * array 数组 *...
java程序员学习路线图,为学习java编程提供清晰的学习路径
《程序员英语单词册》是一本专为程序员设计的英语词汇手册,旨在帮助程序员在日常工作和学习中提升英语水平,特别是与计算机科学和技术相关的专业词汇。这本单词册涵盖了程序员日常遇到的各种技术术语,使得程序员在...
本书是针对程序员或其他学过用过至少一种编程语言、有一些编程经验的人们(如学过计算机基础课程的大学生)的Python编程著作。本书假定读者对于计算机的基础概念、程序和编程,都有一定的理解,但是没用过Python。书...