俗话说,没有金刚钻,就别揽瓷器活儿。套用到IT业,英语不行,就别做程序员。 上关于程序员学英语的文章不少,但我想谈谈我自己的看法。首先详细讨论一下为什么程序员离了英语不行,然后针对程序员应该怎么学英语说说我的体会。
英语是计算机的母语,是程序的母语,所以必然是程序员的母语。程序中的变量名、函数名起得好不好是决定代码质量和可维护性的最关键因素。高质量的代码应该是这样的:代码基本上是自解释的(self-explanatory),不需要太多注释,不管代码的规模有多大,具有相关知识背景的读过文档的人都可以立刻上手、立刻参与维护和开发。要想使代码能够自解释,给变量和函数起个好名字很关键,很显然,只能用英文起名字,一是用汉语拼音起名字可读性很差,二是英文单词通常比汉语更expressive(看吧,如果用汉语来说,就得说“表达能力更强”、“更有表现力”这么罗嗦),由于程序的复杂性,变量和函数往往表示一些很抽象的概念,起个既准确又简洁的名字并不容易,可是很多时候,用汉语需要很多字才能说清楚的一件事,用英文一个单词再加点词形变化就能说清楚了。例如APUE上讲sleep函数的实现,其中有个变量表示“本来应该睡到某个时刻,但是提前被信 唤醒了,唤醒时与本来应该睡到的时刻相差的时间”,如果为了简洁而不求准确,这个变量名至少也得叫“未睡到”,而书中只用了一个单词unslept,非常准确、简洁地表达了这个意思。为了写程序而学英语需要学到什么水平认为能起出这种变量名就够水平了。很多在IT外企工作的中国人,说话写文章经常夹杂着英文单词(比我严重多了因为我不在外企),非常可以理解,确实是为了表达得更准确简洁的需要,而不是纯为了playzhuangbility。总之,要写程序必须学好英语,否则连变量名都起不好,这虽然是一个非技术问题,但却是个根本问题,比任何技术问题都重要。当然,现在很多编程语言也支持用Unicode字符给变量和函数起名,但是你见过有人用汉字写程序吗本不实用。有人会辩驳说一页英文翻译成中文往往只占半页,中文不是更简洁吗是你算算打一页英文和打半页中文哪个敲键盘次数多。另外,要读别人的代码也必须学好英语,如果你不知道unslept是由sleep变形而来的,就体会不到其中的精妙,只有大量阅读高质量的代码,才能写出高质量的代码,创作都是从模仿开始的。
我们的学员出去面试经常被问到的一个问题就是:在开发工作中遇到问题,书和文档上都没有答案, 上搜一下也没有答案,怎么办我说,能看懂源代码的就去源代码中找答案,这称为hacking,不管是内核、libc还是各种framework,你调用的东西有问题都能从它的代码中找到原因。如果没有能力hacking,或者时间紧不想去hacking,最好的办法就是去官方邮件列表和IRC问。如果英文不行就没办法了,只能去一些中文论坛:“各位大虾帮忙,小弟有一个问题求救!跪求!!在线等!!!”在线等了好几天也无人问津,或者答非所问。岂不知逛这些论坛的没有大虾,都是菜鸟,大虾们都在IRC上聊得正欢呢。我在做Qt开发时曾经有一个问题,当时在教育 ,上国外 不方便,去各大中文论坛问了好几天也没人给出满意的回答,后来花钱连了国外 ,去trolltech官方新闻组提问,只等了几分钟就得到了满意的解决办法。这次经历给我留下了深刻印象,从此以后再也没有去中文论坛。
那么,如果现在英文水平很差,又想做程序员,应该怎么学英语呢下面说的方法有两个前提,一是你的英文至少达到高中毕业水平,也就是语法基本都学完了,即使用得不熟练也知道有那么回事儿,二是你希望尽快在工作中用上英语,写程序够用就行,而不是有考T考G这样的更高要求。
现在就拿起一本英文原版书开始看吧。和学游泳一样,阅读的能力只能通过阅读本身来练习。我的经验是,不必先系统学习了单词和语法再看书,可以在看书时用到什么就补什么。我建议初学者看电子版,因为现在的词典软件都可以鼠标取词,边看边查很方便,很多勤快人喜欢把查过的单词都抄下来,我觉得没有必要,反正查字典很方便,下次再看到了就再查,多查几次总会记住的,抄下来就打断了看书的思路,而且不见得抄下来就能记住。也许是因为我这人比较懒,我用的都是懒办法。很多人不喜欢看电子书,理由是盯着屏幕看书太累,那么盯着屏幕写程序累不累种人显然不适合做程序员。语法不熟练怎么办多数情况下单词的意思都明白了就不影响阅读。技术书有时候喜欢用长句,其中可能包含各种从句,如果实在读不懂就去查语法书,同样也不需要把这种从句彻底弄明白,只要这一句能看过去就行了,以后多查几遍书,自然就掌握了。另外,技术书是说明文,通常不应该有过去时,看到过去时就需要注意了,很可能是虚拟语气,如果不注意这一点,看到的意思可能和真实的意思正好相反。
应该从哪本书开始看起呢你当前最需要学的技术书看起。看书是相当花时间的,如果能一边学英语一边学技术,这时间利用得就很有效率。比如,如果你的C语言已经学得相当好了,不要专门为了学英语去重看一遍原版的K&R。市面上有一些专门的计算机英语教材,我的建议是不要看,浪费时间,nonsense。初学时最好选一本有中文译本的书,有看不懂的地方可以翻中文版来对照,但是不要相信中文的翻译,原因在前面讨论过了。如果你是初学编程,没有任何基础,我可以推荐一本英文很浅显技术也很浅显的书:How To Think Like aComputer Scientist,有Python、Java和C++版本,可自由下载。
以上本着“够用就好”的原则,多次提到用懒办法,但是学技术学英语这两件事不能懒,贵在坚持。要养成良好的阅读习惯也有很多东西需要坚持,其中最根本的是持续高度集中注意力,充分调动记忆能力、推理能力、猜测能力,就像考试做阅读题一样看每一段话。最根本也是最重要的,“有英文原版就不看中文版”这个原则一定要坚持。一开始看英文书可能会很慢,但只要一直坚持就会慢慢达到原来看中文书的速度,再坚持下去就会比中文书看得更有效率,因为避免了很多歧义和术语翻译的问题。有人会说,项目紧任务急,看英文资料太慢,这次就先用中文尽快解决工作中的问题吧,等以后有时间了再看英文书学习。可是什么时候才会有时间呢作总是一个接一个的,老板怎么会付了工资让你闲着呢果你有这样的困难,我的建议是干脆辞职,学好了英文再去工作。你只要想想,你的同行们在外企全英文的环境下工作,英文和技术每天都在突飞猛进,而你还在用效率极其低下的方式学习和工作,你和别人的差距不是越来越大了吗一方面,现在的在校学生从小学就开始抓英语,基础都很好,很多高校也逐渐重视引进原版教材,开设很多英文授课的专业课。你再不奋起直追,就不觉得以后的职业道路充满危机吗
最后说说写作。刚开始练习时不要怕写错,能表达清楚自己的意思即可。我看过很多源代码和文档中的英文,一看就是中国人写的,谓语动词不分单复数,名词复数不加s,处处可见中国式英语,但是丝毫不影响我对这些编程大牛的景仰,因为其中的思想我看懂了,并且我认为很强大。我有一个朋友,中学毕业就出来混的,由于工作的性质总要跟老外打交道,他从来不惧和老外交流,虽然连一个囫囵的句子都说不出来,但总是能用中学学的那点单词让老外明白他的意思,这一点我就非常佩服。总之就是说,不要因为不知道怎么写是对的就不敢动笔写,只要敢交流,并且别人能懂你的意思,就是很有效的交流。而且随着阅读量的增加,自然能写出一手好英文,前面讲过了,创作总是从模仿开始的。不怕出错才能有一个好的开始,才能逐步练习提高,而练习的最终目的当然还是希望写好,不仅字句通顺无语法错误,还能适当修辞。
文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树首页概览22084 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!