还记得雷军在印度发布会上的英语首秀吗?或被调侃发音不准,但总的来说,程序员可算是英语水平比较好的群体,因为在这个行业,英文资料是最全面、最及时,对英文资料的需求也最迫切的。因此,就我的观察,即便刚入门不久的程序员,面对陌生的问题,一般也能查阅英文文档,找到需要的信息。但是另一方面,我也发现,经常阅读英文文档的程序员,英语水平许多时候却不像“经常阅读英文”的样子。我在这里列几点自己的学习心得,供大家参考。

第一,读文档不能只读代码。

读文档只读代码,是很多程序员的习惯,也是导致程序员虽然读了很多英文资料,英文水平却没有相应提高的原因之一。以前曾在《程序员》上看到介绍阅读技术图书方法的文章,提出过“先代码后文字”的方法,也就是“先看代码,看不明白再看文字”。这种阅读法能极大提高阅读效率,但如果技术图书只看代码就足够,还要文字干什么呢?很多时候,代码只是冰山一角,代码背后的思维和逻辑才是真正的重头戏,只有写成文字才能解释,也只有阅读文字才能理解。

比如,代码都是 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 scalability for latency, 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?ɑ:。

第三,锻炼英文表达。

如果你背过单词,大概听到过“被动单词”和“主动单词”的说法,前者是指“看到了能认出来”的单词,后者指“表达时能主动应用”的单词。就我的观察,许多程序员掌握的大多数英语,都属于“被动英语”——看到了能认识,但要表达同样的意思,未必说得出来。

平时这样似乎没有问题,但如果要查阅资料,不会表达就造成了大的障碍。相比中文技术资料世界中“无责任/不负责转贴”泛滥的情况,英文技术资料的质量要高得多,Google搜索资料的准确性也远高于百度;但是,要能够顺利应用英文资料,需要“主动”输入信息,描述问题,这时候“被动英语”就成了大问题。

我遇到过很多次这样的情况:即便答案近在咫尺,输入正确的关键词,Google的第一条结果就是答案,但程序员就是一筹莫展——因为他不知道计算机的“嘟嘟”声是beep,不知道搜“多线程”资料应该用concurrency,也不知道“死机”是system halt,“黑屏”是blank screen,“(登录时)不停返回”是infinite loop……

要解决这个问题,最好的办法是在阅读资料时多用心,记住这些说法;另一方面,没事的时候多浏览stackoverflow之类的网站,不要因为问题与自己无关而忽略,多留心这些问题到底是什么,是如何表达的。这样,在自己遇到问题时,才能迅速找到可能的解决方案,节省时间。

有人说,以汉语为母语的程序员,学习英语已经是迫不得已,不但要会阅读,还要会读、会表达,真是难上加难。这种说法有一定道理,但是在目前并没有更好的解决方案,学会阅读、认准读音、锻炼表达,确实可以给自己带来好处。长远来看,要改变这种情况,需要中文技术圈的所有人员努力贡献高质量的资料(原创和翻译都可以),如果只是“无责任转贴”,既不亲自验证,也不整理格式,中文技术资料的整体质量只会持续恶化,反向逼迫更多的人把英语学好。

来自devstore

关于程序员学英语的经验相关推荐

  1. 为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要1...

    为什么80%的码农都做不了架构师?>>>    为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要10k的薪水?   由于目前国内嵌入 ...

  2. 程序员学英语 英语语法框架 10种词性 9种成分 8种句型

    程序员学英语 关于: 这是由星辰写的关于 程序员学英语 的笔记,内容如有错误,请联系邮箱修改:2589857361@qq.com 笔记PDF版本已上传到GitHub.Gitee.CSDN.千寻简博客中 ...

  3. 程序员1年经验包装成5年,转正时领导:试用期不想过了?

    在当今社会,越老实的人可能越吃亏.现在,很多人在简历上都会包装自己,当然一些人也是很无奈的,本来自己能力已经达到了,但是学历或者工作时间不够而得不到面试机会,所以才会这么去做. 最近在职场论坛上看到这 ...

  4. Java程序员跳槽的经验开怀之谈(现在很多大厂都在裁员,你懂的)

    一个合格的Java程序员必然是经历过不同的项目游走在行业技术的前线,有时候除了自己学习他人教导之外,更需要环境的推动,天时地利人和,Java程序员才能在职业道路上走得更远. 关于跳槽 跳槽,对IT人来 ...

  5. 程序员1个经验反复用了10年?工资不涨,那是最终被迫成长的结果

    几年前,有次在绩效面谈中,某小伙伴当着我的面吐槽现在的工作又多又累,说自己辛辛苦苦付出了五年,我却一点晋升机会都不给他.于是他一怒之间跳槽了,信心满满地来到新公司,但三个月试用期过后,却发现新公司对他 ...

  6. 程序员的价值观——经验是无价之宝

    当我第一次深入考虑我的职业生涯时,我一度认为我要做的就是集中精力做技术向导.我想知道成为公司的技术专家能让我走多远.我觉得团队领导和管理人员的角色并不适合我.我甚至都无法想像自己有一天不能编码是什么样 ...

  7. 程序员的价值观——经验是无价之宝(转)

    英文原文:Change your value proposition – your experience is valuable 当我第一次深入考虑我的职业生涯时,我一度认为我要做的就是集中精力做技术 ...

  8. 为什么公司愿意录取3年经验的程序员而不是经验5年的自己?

    这些东西是贯穿于整个软件开发过程,是核心.所谓万变不离其宗,这是内功.如果没有牢固的基础,上层建筑无法巩固. 通过这次面试,小辉表示「**5年的经验并没给我带来多少安全感」.**事实上他确实做了5年的 ...

  9. 你好哇,程序员 - me 跳槽经验说

    俗话功夫在诗外. 刚开始工作那会加班的最多,很大一个原因是能力是不足以满足工作的需要,经验不足以让自己站稳脚跟. 现在回想以前加班那股劲是很值自己去品味的.人生的路上需要汗水,需要鲜花,需要自己通过拼 ...

最新文章

  1. WPF Geometry 添加Path数据
  2. IDEA中Maven项目使用Junit4单元测试的写法
  3. 大剑无锋之SpringBoot和Spring的区别
  4. pandas学习笔记四之读取写入文件
  5. 框架层 java_简单就是美!浅谈java各层框架。
  6. 中国智能卡市场的新机会
  7. 常用31个Java机器学习、深度学习、自然语言处理学习库工具
  8. CCI指标详解及实战用法
  9. ubuntu里面控制器放大缩小屏幕
  10. Django的了解及应用途径
  11. Never give up!!
  12. hp170x打印服务器修改ip,HP_JetDirect_170X配置说明
  13. 十万个为什么哪个版本适合小学生阅读
  14. 批量给视频添加背景图片的操作方法
  15. 我用这个画3d图和电路图、上网,防止鼠标手
  16. STM32超级简便的按键代码 只需三行 可实现短按+长按
  17. VC++6.0 Error spawning cl.exe错误
  18. java事件适配器_java 事件适配器
  19. 外文截图怎么翻译?这篇文章告诉您
  20. 在线制作思维导图网站哪个最好

热门文章

  1. 你心中未来计算机图画,我眼中的未来世界——“创意未来我的梦”七年级科幻画分享展示活动...
  2. Swift 3 新变化
  3. 【文学文娱】《天龙八部》
  4. 数码相机锂离子电池行业调研报告 - 市场现状分析与发展前景预测
  5. neo4j springboot 日志_springBoot 与neo4j的简单整合
  6. 城市轨道交通建设流程
  7. android 落叶效果,css实现落叶动画效果
  8. 网络营销风生水起,传统营销又将走向何方?
  9. WSockExpert0.6 beta 1工具介绍和使用实例
  10. ExpandableListView的使用(一)