程序员的学习必修

作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪。但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语和数字表达式构成的。英语对于程序员十分重要。我的大学本科全部采用英文教学,工作时也经常会遇到外国人,和他们谈笑风生,自认为自己的英语水平比园子的平均水平高一点。下面我就根据自己的经验来说说英语的学习方法。

为什么要学习英语
学好英语你可以直接阅读各种经典书籍的原文版。程序员这个行业之所以特殊,就是因为它所有的技术全部来自欧美,所以最主流,最新鲜,最正确的技术文章都是英文,大部分还没有译本,有些译文还比较差。与其等待别人的翻译,不如直接阅读原文。

学好英语你可以直接观看来自世界最著名学校的网上课程或编程高手的教学视频。较之汉语教学视频,不知道高到哪里去了,而这些视频通常都没有任何翻译可寻。

学好英语你可以和世界各地的程序员在Stack overflow,Reddit和Github进行交流,以码会友。如果你不小心搭上了几个哥们,你可能就误打误撞被他们推荐出国工作了。作为工作多年的老鸟,大家自然知道内推的好使程度,要是拿到了公司的录取,那么什么签证都是浮云。

学好英语,你的代码中变量的命名不会太差,让人摸不着头脑(甚至有人变量使用汉语拼音进行命名)。假设别人写一个方法演示反射的使用,你看到那方法名不是ReflectionDemo,甚至不是ShowReflection,而是FanSheYanShi时,你什么心情?

学好英语也可以为你的前途打开一扇门,你可以考虑到大陆以外工作生活,领略不同于神州大地的风土人情,感受西方文化,甚至中西合璧,建立一个与众不同的家庭。即使你留在大陆,英语好至少也会让你胜任一些外事工作,能人所不能,这对外企员工来说十分重要,你的上级会高看你一眼,你谈工资时筹码比别人多。

什么水平算是英语比较好了,可以不用刻意继续学了
如果你觉得你满足以下这些条件,那我觉得你在英语为母语的国家也可以活得挺滋润的,找到一个码农的工作应该是没什么问题。当然,你可能会栽在医院,街头篮球场,酒吧这种需要高难度英语对话的地方。不过如果仅仅应付工作,你不需要刻意的提高自己的英语水平了,只需要保持即可。

裸考(故意不准备)托福100+,雅思7+,口语的成绩不是其中最低的
词汇量达到8000以上
能够应付30分钟左右的全英文面试,且你在面试过程中说话的比例占至少三分之一,而不是人家说20句你说一句
阅读一般的技术文章(例如MSDN文档)和技术书籍没有太大障碍,具体来说,生词频率在1/100之下(即任选文章中的100个连续单词,平均只有一个不认识)
可以使用英文email和公司的外国人交流
可以和老外聊些简单家常或你比较熟悉的话题,支撑至少15分钟
关于单词与阅读
学英语不背单词是不行的,背单词是第一步,只有认识了单词,你才能看懂它,听懂它,最后在口语中运用。如果仅仅为了应付工作,则很多词并不需要背,例如,下面这个图中的所有单词你都不需要知道(可能第15个需要吧,但你多半应该认识),这丝毫不会影响你阅读技术书籍的速度。基本来说,你只需要知道MSDN,牛人博客里面出现的比较高频的单词,以及你工作中需要用到的概念对应的英文翻译。

对于初学者而言,不需要阅读其他乱七八糟的小说散文,也不用把新概念看一遍,最重要的就是把你的主力语言中各种术语的维基百科都看一遍,新概念不会告诉你控制反转的英文是IOC,pumas are large cat-like animals which are found in America(新概念第三册的第一句话)只能让老美觉得你脑子有问题。(这课是讲从句的,所以几乎所有的句子都是从句)背新概念还不如背技术文档,对于C#,直接看MSDN就行了,例如委托的:https://msdn.microsoft.com/en-us/library/ms173171.aspx

这网页中的单词大抵都是技术上最常用的词了,例如type,method,event,instance(实例)等等。如果你有任意一个单词不认识,说明你的词汇量不过关。不过,各种MSDN文档中的单词重复频率很高,读多了就会越读越快的。你可以把不会的单词记在本子上,而不是买本托福词汇开始背。过了不久你就会发现,技术文档里面转来转去就那几百个词,可能都没有2000个,而一本托福词汇背完了,你还是不知道进程和线程怎么说。如果你对MSDN文档已经可以做到基本不查字典,你可以尝试改用谷歌搜索了。例如,如果你拿不准链表应该在什么时候使用,性能如何,你可以搜索stackoverflow linked list performance / linked list performance comparison,然后点开结果链接 - 这样你的工作中的中文出现频率就大大减少了。如果你已经大规模的使用谷歌,stack overflow,并且对搜出来的链接都读得十分顺畅的话,你不需要再背单词了。

词根词缀法
很多技术单词有个特点,就是他们都是造出来的词。我们知道100年前,世界上根本没有计算机语言,所以很多概念不存在,后来,技术发展到今天,出现了很多以前无法想象的概念,例如异步,多线程这种100年前毫无意义的单词。它们都是生造出来的,以前的英语不包括这些单词。而英语造词法通常有两种:一种是追本溯源,例如算法的英文algorithm来自1000年前的某本阿拉伯数学书籍,另一种就是叠加,比如多线程的英文multithreading就是多(multi)和线程(thread)两个字加起来的。异步这个词解释起来稍微复杂些,首先我们要理解同步这个词synchronous:它是由syn (同时) + chron (时间) + ous (形容词后缀)合成的,同时的时间,即为同步。而异步就是不同步的意思,故在同步的英文之前加上一个前缀a-,其代表否定,就得到了异步的英文单词:asynchronous。

词根是快速扩展英语单词的利器,例如刚才我们看到的几个词根,都是比较常见的,我再举几个例子,这次不再限于技术单词。Chron(时间)演化出来的词还有: chronicle(编年史),chronosphere (时间结界,这个词是dota中虚空假面大招的英文,应该是icefrog在dota中造出来的词。Sphere代表一个半球,和时间拼起来,就是时空半球。我们可以直观的想象出一个半球罩住一片地方,里面的时间停止了)。

Covariance和countervariance这两个货,很多人一看单词很长就产生惧怕感,但实际上,越长的单词,造出来的可能性就越大。先告诉你vari是变的意思,你肯定知道一个它的衍生词variable,变量(能够变的东西,瞧,你顺便又学会了一个后缀 –able,能够的意思),variance可以看成是其名词的形式,在数学上,我们用这个词表示方差。那么如果你知道co是协同(和con一样),counter是反着的,那么covariance和countervariance这两个词的意思你大概也就猜出来了:协变和逆变。另外说一句,counter加上单词strike(打击)就成了很多人都很熟悉的一个单词,缩写为CS(反恐精英)。当然counterstrike这个单词本身只是反击的意思,和恐怖分子,精英都没有半点关系,不过反恐精英这个翻译确实不错。

Interoperablity,别看它很长,你应该也能猜出来,如果你认识operate的话,你就可以看出来它是怎么来的了吧。它的意思是“互操作性”,我们知道C#有一些库例如Microsoft.Office.Interop.Word,Microsoft.Office.Interop.Excel,Interop就是Interoperablity的简单说法,这些库也是专门用来和COM打交道的,可谓名如其库。inter代表相互的,交互的,很自然的我们都知道它的两个派生词:internet,交互的网,即互联网(相对的,intranet就是内联网),interview,互相看,即面试(所以面试不仅仅是公司挑你,你也在挑公司:)),还有intersteller,如果我告诉你stell是星辰的意思,你猜猜这个词(交互的星辰的人)啥意思 – 中文翻译 – 星际迷航。那么好了,你知道stell是星辰了,又知道con是一堆的意思,那么constellation是啥?一堆星星 – 星座!

一些其他的例子:

Re-factor: 重构
Trans-action: 事务
Pre-process-or: 在前面+处理+的人 –〉预处理器
对于有一定英语基础,比如考过四级的人来说,词根词缀可以迅速扩大词汇量,通常可以扩大一倍。掌握了一些基本词根词缀之后,你会发现,很多词你根本没见过,但你就是能猜出它的意思。你的词汇量远远多于你意识中自己的词汇量个数。词根词缀为什么如此强大?有时候,我会把词根词缀造词法类别汉字中的偏旁部首。我们的汉字有很多字的偏旁都相同,而有些偏旁自己是有意义的,例如雨字头本身代表下雨,属于雨字头的很多字和天气也有关,例如霏,霁等。英语本身来自于拉丁文,很多词根自己就是拉丁文单词,例如aqua,在拉丁文中代表水,它作部首的单词aquarium(水族馆),米拓诈骗aquamarine(水蓝色)就可以类比为三点水旁的汉字。关于词根词缀记忆法,如果有兴趣,可以参照。不过,不要钻牛角尖,也不用把所有的词根词缀都背下来,那样你的词汇量太大了,保守估计也有2万,你不需要那么多单词,你也没那么多时间。你只需要对技术文章中出现过的单词的词根词缀研究一番就行了,碰上一个词研究一个,没碰上过的(比如你是不怎么可能会在技术文章中遇到aqua这个词根的)就不用管它。

当然,不是所有英文单词都是这么造出来的,比如最简单的get,set,have之类的动词。在几百年前,英语的单词数量远远小于现在,那时候就没什么单词是用词根词缀造出来的。根据词根词缀猜出来的单词意思也不见得都对(就如同秀才识字读半边,不一定全对一样),不过,一般来说猜出来的意思都八九不离十,而且很多技术单词是造出来的,这使得我们看技术文章时,可以少背点单词,多猜测下它是怎么来的。

掌握一个单词不仅仅要做到看到单词知道意思,还要将其读准,否则,老外依然不知道你在说什么。你可以使用谷歌查找单词,获得单词的音标,通常后面都有播放键。如果你是走美音路线的,要做到一些卷舌。要知道长单词中重音的位置(有些在前面,有些在中间),尽量减低中文发音的痕迹(有些速成书中把英文音译成中文以达到速成效果,例如how are you发音好啊油,一定要杜绝这种方式,离这种书越远越好)。你也可以在视频中捉到一些你读的不准确的单词,听听人家怎么读的。

关于听力
当认识了足够多单词之后,下一个比较自然的目标就是听懂它们。这比阅读难一些,但远远比在口语中用到它们容易。练习听力除了和老外对话,就是看视频了,看视频也是我们练英语的一个主要目的。以下的几个视频网站是我经常看的,有些需要付费:

Pluralsight:全部都是技术类教学视频。有些视频出自大牛,例如Jon Skeet。部分视频带有英文字幕。视频内容翔实丰富,且十分与时俱进,在ASP.NET Core出来仅仅一个星期,就有了关于它的教学视频。最近网站改版,对于某些话题还添加了学习之路功能,例如以下的视频是关于C#的学习之路,分为简单,中等和高级。转自:Chobits的文集 如有冒犯联系删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值