当前位置: 首页 > 科技观察

程序员如何学习英语?

时间:2023-03-19 13:55:45 科技观察

一般来说,程序员可以算是一个英语水平比较好的群体,因为在这个行业中,英语资料是最全面及时的,对英语资料的需求也是最迫切的。据我观察,刚入门的程序员一般都能查阅英文文档,找到自己需要的资料。但另一方面,我也发现,经常阅读英文文档的程序员,其英语水平往往不如“经常阅读英文”。所以我将自己的一些学习经验列在这里,供大家参考。***,你需要阅读代码和文档。看文档只看代码是很多程序员的一个习惯,也是程序员看了很多英文资料却没有提高英语水平的原因之一。之前在《程序员》上看到一篇介绍阅读技术书籍方法的文章,提出了“先代码,后文字”的方法,即“先看代码,不懂再看文字”它”。这种阅读方式可以大大提高阅读效率,但如果技术书籍只够看代码,何必还要文字呢?很多时候,代码只是冰山一角,代码背后的思考和逻辑才是真正的亮点。写出来才能说明,读起来才能明白。比如两段代码是x=5;好像没有区别,但是一段的文字描述是“xshouldbenotmorethanfive”,另一段的文字描述是“xshouldbenomorethanfive”。不查字典,你能搞清楚这两种说法的区别吗——前者是“x必须小于等于5”,后者是“x应该只为5”,这恐怕很难实现只需查看代码即可。近年来,越来越多的技术人员投身于翻译和引进活动。这是好事,但如果他们只看代码,英语阅读能力不够好,就会造成更多的麻烦。经常有想翻译技术文档的程序员来找我讨论翻译问题,希望了解一些句子应该怎么表达。一开始我也以为是中文表达的问题,后来慢慢发现更多的问题是在英文阅读上,所以我的回答往往是:你觉得作者这里是什么意思?引导对方循序渐进地表达原文的意思。其实这时候,真正的翻译已经浮出水面了。最近的一个例子来自这句话:但是与任何基于网络的系统一样,基于原子的解决方案以延迟换取可伸缩性,使得原子通常不适合非常低延迟的通知。这句话难翻译的原因似乎是,除了句子的主干,前面有一个Butas...,后面有一个making...。然而,我终于发现,对这句话有疑问的程序员其实并不理解trade...for...的用法(译为“基于原子的解决方案需要平衡延迟和可扩展性”)。Aftersacrificingxxforxx",整句话很好理解,也很容易翻译:和所有基于web的系统一样,基于atom的解决方案为了追求可扩展性增加了延迟,所以atom往往不适合使用延迟极低的Hints需求。要避免这个问题,首先要做的是改变“只看代码不看文字”的习惯,或者至少“看完文字,可以理解其意思与代码一致”》;另外一个有效的方法就是通过阅读纯英文的资料来学习一些新知识(比如原理的详细解释)。这个方法我推荐给很多朋友,很有效。其次,注意发音。我用过听人说中国人学了很多年英语,其实是哑巴英语,我不知道现在的情况改变了多少,但据我所见,虽然很多程序员读了很多英语材料,加入英语讨论组,敢于发言,发音问题还是很多。这里所说的“发音”其实并不是正确的口音,而是一些名词的发音。计算机科学术语来源广泛。比如在设计模式中,有一种模式叫做Facade,很多人经常直接读成'f?kɑ:d,其实这个词来自法语,正确的读音其实是f?'sɑ:d;另一个例子是“伪”代码的伪造,正确的读法是'su:d??,但我很少遇到能正确发音的程序员,很多根本就不会发音。也许有人会说,这些问题都不重要,每个人都“犯错就犯错”,约定俗成,但事情并没有那么简单。以前参加技术聚会,有个嘉宾(技术专家)把框架名变色龙(chameleon)念成't??milj?n,正确读法是k?'milj?n,因为没有书面资料,很多人之前听了半天他们知道他说的是什么,一些不熟悉变色龙的听众直到最后才明白。华人聚会仍是如此。如果有机会参加中外技术交流,误读带来的问题会更大。有一个很好的方法可以解决这个问题,那就是学习美国大学的公开课。耶鲁、斯坦福等学校的计算机系都发布了很多优质的公开课,国内也有非常优秀的翻译人员。可以打下扎实的基础,顺便可以学到很多每天都会遇到,但是听不懂或者读错的名词。第三,练习英语表达。如果你背过单词,你可能听说过“被动词”和“主动词”这两个词。据我观察,很多程序员掌握的英语大多属于“被动英语”——看到就认得,但要表达同样的意思就不一定会说。乍一看,这似乎没什么问题,但在查找资料时,不会表达就成了一大障碍。与中文技术资料世界“不负责任/不负责任的转贴”泛滥相比,英文技术资料的质量要高得多,谷歌搜索数据的准确率也比百度高得多;但是,要想顺利使用英文资料,“主动”输入信息、描述问题还是很有必要的。这时候“被动英语”就成了大问题。我自己也遇到过很多次这种情况:即使答案近在咫尺(输入正确的关键字,谷歌的第一个结果就是答案),但程序员就是无能为力——因为他不知道thecomputer's"beep""声音是哔。不知道应该用concurrency来搜索"concurrent"信息,也不知道"crash"是系统死机,"blackscreen"是黑屏,而“(whenlogging)keepsjumping”表示无限循环……待解决对于这个问题,最好的办法是看资料的时候多注意,记住这些语句;是什么,注意人家怎么说表达出来,只有经过这样的练习,才能在遇到问题的时候,快速找到可能的解决方案,节省时间。还要能够阅读和表达,这真的很难LT。这种说法有一定的道理,但目前还没有更好的解决办法。学习阅读、认读发音、锻炼表达,确实能给自己带来好处。从长远来看,要改变这种状况,还需要所有中国技术圈的人努力贡献出优质的素材(原创和翻译均可)。如果只是“不负责任地转贴”,既不亲自验证也不整理格式,中文技术资料的整体质量只会不断恶化,迫使更多人学好英语。