引子

虽然关于 IT 相关从业人员应该学习英语,已经是老生常谈了,还是想结合自己十多年从业经历分享一些个人的感受。

我曾经在培训中看到很多刚入行不久同学因为没有英文基础,一遇到问题就用翻译器翻译,或者去百度一下,比如这个 Linux 命令不会用,百度一下,这个错误日志看不懂,直接全部复制粘贴,百度一下,这个工具不会用,百度一下,其实相比起会一点英文同学来说,这样效率其实很低,命令不会用,可以马上 help 看一下,工具不会用,也可以看下工具的帮助文档,查看错误日志排查问题这个效率差距就更大了,本来日志一般把错误原因都写得很清楚了,结果你还要翻译一次,或者去搜索一下,然后搜索时候很可能还没复制对地方,你说尴尬不?

所以英文有时候就是一个阻碍你提高学习和工作效率的绊脚石,并且是拴在脚上那种,它不会直接让你摔到坑里阻碍你前进,可是如果不把它拿掉,你就是一个拖着石头向前冲锋的战士,常常感觉自己精疲力尽,可是实际上冲锋速度却很慢。

接下从几个不同角度来说明掌握英文对 IT 从业者的重要性。

能够获取更多的一手资料

众所周知,近代 IT 行业发展起源于以英语为主的西方世界,近几十年无论是计算机软硬件的发展,还是最近几十年互联网,大数据,区块链,AI 技术的兴起,都离不开西方学术界和工业界做出的巨大贡献。因此有大量的计算机相关一手资料都是英语,无论是计算机书籍,在线课程,技术论坛,开源项目,都充斥着大量的英文资料。如果能够直接阅读或者听懂这些英文资料,将会大大提高学习效率。加上很多比较新的信息还没有对应的中文翻译,即使有了中文翻译,翻译质量也参差不齐,还会反过来来影响你的阅读或者学习。

总之,对于掌握了英语的 IT 从业者来说像是多了一个新的资源池,你不会再被局限于那个小池子里面了。

更好地理解和学习编程语言

不知道大家有没有遇到这种场景:很多 IT 技术或者工具如果一段时间不用了,就很容易忘了,编程语言也是如此,当需要再次需要用又重新开始学习时候发现竟然忘得差不多了!反正我是这样的,后来我发现如果学习时候能够更深入地理解或者联想学习——在现有知识体系做拓展或者关联,而不是完全当成孤立知识来学。这样能够让知识遗忘速度变慢一些,日后重新学习也会快很多。

当你学习计算机语言时候如果有英文基础,有时候可以借助你现有英文知识去记忆和理解,自然会学的更牢固一些,忘得更慢一些。
因为计算机是西方世界发明的,很自然的编程语言也是基于英语的思维方式创造出来的,特别是到了近现代出现的更接近人类自然语言的高级编程语言,比如 Java,python 一类,里面那些基本关键字,内建方法其实都是英文缩写或者干脆就是英文单词,对于一个有一定英文基础的人学习这类编程语言会轻松很多,至少很多东西不用死记硬背,而且很多时候看别人写的程序(这里指的是比较规范代码)也很容易理解。举几个编程语言基础语法的例子,python 里面常用的 range,type,print 这些内建方法都是英文单词,又比如这几个方法__eq__,__doc__,__delattr__,分别对应单词或短语为 equal,document,delete attribution,直接看单词意思基本能猜到干什么的。你可能会说这些都很简单,我直接死记硬背也很快能学会啊,那我们再来看一个例子:

代码还是那个代码,但是会英语之后看到的代码和不会英语的同学看到代码的感受是不一样的,好像《失控玩家》里面那个带上眼镜后的 NPC,看到了不一样的世界。

更好地理解一些抽象概念

先不说 IT 行业里面本来就有很多没有翻译成中文的名词或者经常使用缩写的名词,比如 AI(arificial intelegence),Jar(罐子)包(java 程序打包后一种格式)—— 是不是很像把代码打包起来放进一个罐子里面。更麻烦的是有很多概念翻译成中文过后反而会阻碍你的理解,我们来看两个例子:

关于 python 可迭代对象(iterable object)和迭代器(iterator object)的例子

在稍微深入学习 python 后,你会碰到迭代器,可迭代对象,这样几个概念,这是我随便从网上搜到的一些解释:

例子一:

例子二:

不知道初学者看到这些解释是什么感觉,反正我第一次学习这些概念时候看到这些文章是越来越懵逼的。
我们再直接搜索英文资料看看,这是从 https://wiki.python.org/moin/Iterator查到解释

An iterable object is an object that implements iter, which is expected to return an iterator object.

An iterator object implements next, which is expected to return the next element of the iterable object that returned it, and to raise a StopIteration exception when no more elements are available.

In the simplest case, the iterable will implement next itself and return self in iter. However, this has its limitations and may produce unexpected results in concurrent environments (e.g. with the multiprocessing API).

You can use iterables in for loops, to construct lists with list comprehensions, or as input arguments for the list function.

我们先不去看具体技术相关的解释,单从英文角度分析下两个概念的关系。首先,这两个概念是指的同一个东西(object),一个是叫做 iterable 的 object,一个是 iterator 的 object,但是不知道是不是出于简洁的原因,通常把 iterable object 翻译成可迭代的对象,而 iterator object 翻译成迭代器,这其实会给初学者造成一些困扰,单从字面意思看以为是两个不同的概念。我们再看 object 前面的修饰词,一个是形容词 iterable,一个是名词形式 iterator,即使不知道这个单词意思,根据构词法也猜到了这两个单词相关性很强,类似于 beautiful/beauty。我们再根据英语词法猜一下,iterable 指的是可迭代的,后面跟名词 object 后理解成可迭代对象——泛指一类可以迭代的对象,iterator 是一个具体的名词,后面跟名词 object 后是一个合成名词,理解成迭代器对象,因此 iterator 的属性应该更多一些,而事实也确实如此——可迭代对象不一定是迭代器对象,但迭代器对象一定是可迭代的对象。你看这个翻译过来有点绕的关系,如果结合英文去理解这个关系是不是不用死记硬背了?

关于 metaclass 的理解

Meta 这个词经常作为前缀和一些单词组合,比如 Meta-learn,Metacognition,中文通常翻译为元学习,元认知,meta-class 一般译为元类。元类?我第一次看到这个名词完全不知所措,和看到 meta-class 没什么区别。还是直接查下 meta 什么意思,参考 wiki 之后我们发现 meta 作为前缀,可以抽象出一个模式为——an X about X(wiki 详细解释贴在文章末尾),比如元认知就是关于认知的认知,元类其实是关于类的类,或者说成创造类的类,虽然还是有点绕,至少比什么元类好理解。

英文和中文并不是一一对应的关系,有的概念中文里面有,英文里面没有,比如中医里面上火你没法直接找到一个英文单词;反之,有的概念英文有,中文却没有,比如我们刚说的 meta-class,meta 这个没法直接找到一个中文字或者词与之对应。刚查了下,虽然 “元” 这个字也有基本的,根本的意思,但我看到元认知,元类这种词是想不到那里去的,看到 “元” 我第一反应还是人命币。这时候借助英语去理解这一类抽象概念能够帮助我们更好地理解。

更多的工作机会

掌握英语之后除了学习资源池的扩大,选择机会也会随之增多,如果只会中文,就只能选择国内一些 IT 公司,有了英语技能加持之后呢就有了更多的选择,比如需要英文能力的外企,或者直接就是海外的工作岗位。总之几多不压身,多学一点没有坏处,是不是?

7.12 根据留言更新部分内容

学到什么程度?

既然是码农学英语,那么就直接以始为终的学习,简单说就是够用就行。比如你想学 python,去找找 python 英文书,课程,代码看看,能不能看懂,写代码时候能不能用英文写注释,用英文给方法命名。比如你想进外企,那么基本的和你的技术相关的听说读写能不能达到要求?如果你想试试外企 PM,scrum master,BA 这些对英文要求更高职位或者直接去海外工作,那么可能需要更系统的学习了。

学习资源

没有太多推荐的,其实借助 Google 或者 bing 多用英文搜索,用不了多久你就会慢慢发现你需要的东西。还有很多开源技术就多去看官方文档。这里想到两个网站给大家推荐下,一个是众所周知的 github,上面除了开源项目,其实也有很多技术文章,教程。一个是 coursera.org——一个视频学习网站。

怎么学?

如果是走野路子就是不懂就查,指哪打哪,只考虑阅读情况下给大家推荐两个工具,一个翻译工具,一个语法工具.

这样做的好处是见效快,不足是缺乏系统性学习,中后期很快遇到瓶颈,特别是对于基础比较薄弱同学。我也是最近一年报了网课开始系统学习,有兴趣的同学可以私聊,不在这提了,不然成了推销课程的了。

参考文献


↙↙↙阅读原文可查看相关链接,并与作者交流