程序员为什么要学好英语

在我上大学的时候,除去普通的英语课程,专业课程里还有一门《计算机英语》。当时大家的普遍认为,普通的“英语”是过四六级用的,《计算机英语》才是专业真正需要的。

等到工作了,我发现很多人都持这样的观点:程序员应该学好英语。这样才能方便地查找资料,迅速地学习最新的知识。换句话说,“学好英语”在很多人看来,就是是“学好专业英语”——这项要求已经很高了,我曾经在《程序员要怎样学英语》里提到,不但要能看懂文档,还要知道“黑屏”是blank screen,“死机”是system halt,否则查找就会很费力。

但是今天我想强调的是,对程序员来说,学好“英语”而不是“专业英语”是非常重要的。只学好专业英语,看得了技术文档,但那一大堆专业术语和概念可能会像陨石一样,没来由地坠落下来,只能生吞活剥地硬背。如果学好英语,你才会有融会贯通的感觉,知道那些术语和概念原来是从地里长出来的,底下连着根茎。

程序员经常被认为是呆头呆脑的古怪家伙,讲一口外人听不懂的语言,其实技术世界里的很多术语都是从生活经验中借鉴而来,是非常形象而有趣的。可惜,这些意味和趣味无法通过翻译传递,也很难在硬邦邦地研读时体会到。所以如果你只看中文资料,或者以学习“专业英语”的态度来对待,即便能记住,也只能硬背下来。天长日久,“古怪”的感觉也就油然而生了。

比如说cache和buffer,这两个英文单词是完全不一样的,但中文分别翻译为“缓存”和“缓冲”,看起来非常像,很多人确实会搞混(不要吃惊,我的面试经历已经证明了)。分得清的人都知道,“缓存”是cache,“缓冲”是buffer,不过其中还有些麻烦,因为“缓存”很多时候是用于读取的,“缓冲”很多时候是用于写入的。为避免混淆,很多人干脆放弃中文直接说英文,这确实是一种有效的办法,但是cache和buffer到底是什么意思呢,它们是天上掉下来的,还是地里长出来的?答案是后者。

cache在“缓存”的含义诞生之前就存在了,意思是a secret place of storage,也就是“用于存放物品的隐蔽区域”,比如动物贮存食物的地方,或者人类埋藏金币的秘穴。所以用cache来命名计算机中的“缓存”是非常恰当的:cache把数据存储起来加快读取,而且它必须是隐蔽的。我已经见过无数程序员写的不透明缓存了,这种“缓存”必须改动主线业务,使用和维护都异常麻烦,如果程序员多懂一点英文,知道cache原本的意思,问题会少很多吧。

buffer也是这样,它原本的意思是devices or pieces of material for reducing shock or damage due to contact,也就是“用来减少接触时产生的震荡或损坏的装置或材料”,比如为了用于逃生的气垫,或者汽车上用的减震器。用buffer来命名计算机中的“缓冲”也是非常巧妙的:buffer用来解决两种设备在数据交互时的数据丢失(或者阻塞等待)的问题。我读大学的时候,老师特意强调“缓冲是用来解决速度不匹配的问题”,让大家印象深刻。但是如果大家多懂一点英文,知道buffer原本的意思,估计不用老师强调自己也能理解了。

再比如serialize和flatten,这两个单词Java程序员都熟悉,其它程序员也不会陌生。前者是“序列化”或者“串行化”嘛;后者,嗯,有些人翻译为“扁平化”,还有些人干脆不翻译,就叫flatten好了。总之,这两个词都比较难记忆,给其他人解释的时候也很麻烦。

文档里是这么描述serialize的:the object can be flattened into bytes and subsequently inflated in the future。不妨看看flat和serial原本的意思。flatten的意思是“打扁、推倒”,serial的意思是“无间隔的规律摆放”。这样看来,整个描述是非常形象了:“序列化”指的是把对象拆散成一堆紧密码放好的字节(也就是字节数组啦),之后还能组装起来。有很多人纠结serialize到底是“序列化”还是“串行化”,如果你懂得seralize和flatten的真正意思就会知道,“序列化”还是“串行化”都不合适,但是,也无所谓。

没错,程序员面对的是机器和科技,但这并不意味着他们的工作就没有任何乐趣,就需要硬生生造出很多“天外飞仙”一般的术语。恰恰相反,许多技术术语都像庄稼一样,把生活经验当成诞生的土壤,所以显得非常生动形象。如果程序员的母语是英语,他看到cache, buffer, serialize, flatten之类的单词,虽然也要学习其专业含义,但有背景知识和生活经验可以借鉴,所以“背靠大树好乘凉”。但如果程序员的母语是中文,英文又不够好,就没有这种优势,那些专业术语就像陨石雨一样难以理解和应付,只能生吞活剥,麻烦不说,久而久之也容易变得无趣。

有人说,好的翻译可以解决这种问题。一定程度上来说确实如此,比如董乐山先生当年翻译的“导弹”,朗朗上口又生动形象,大家一听都明白。可惜如今这样用心的翻译家已经太少了,加上新单词出现太快,翻译的速度根本跟不上。所以对程序员来说,真正的出路还在于自己,不要自我束缚在“专业英语”的世界里,而是要认真完整地学英语,了解英文单词本来的意思,真正懂得用英语思考和理解世界,才能收获融会贯通的效果。

当然,这个道理反过来也是成立的,还记得前不久被关掉的“曲径”吗?它的命名和cache, buffer, serialize等等一样,其中的逻辑“不足为外人道也”,老外程序员如果只懂中文技术资料,看到这个名字多半也要挠头瞪眼了。

时间: 2024-10-12 13:31:44

程序员为什么要学好英语的相关文章

也谈一个苦逼程序员是如何学好英语的这件小事

近来翻译了不少国外的创业产品类文章到简书和虎嗅以及36氪等.承蒙大家错爱,很多网友都觉得鄙人翻译的水平挺高的,然后速度也挺快的-基本上每天靠着晚上那点点时间都能有一篇文章出来.不少人开始问我英语应该怎么学? 这里可能大家都只是在文章中了解到本人的英语还算有点水平,其实我个人的口语水平应该比书面英语更好,所以我今天就打算综合起来说说我是怎么学习英语的.当然,每个人都有自己的学习方法,但是,正如我的微信公众号所宣称的,他山之石可以攻玉!也许我的方法也有大家可以借鉴的地方,我们不妨互相借鉴下. 简要的

程序员需要有好的英语水平吗?

程序员这个行业是很特殊的.之所以说特殊,就是因为它所有的技术大多来自欧美,所以最主流,最新鲜,最正确的技术文章都是英文,遗憾的是,大部分还没有译本. 有些译文还比较差.与其等待别人的翻译,不如直接阅读原文原著. 学好英语你可以直接观看来自世界最著名学校的网上课程或编程高手的教学视频. 学好英语你可以和世界各地的程序员在Stack overflow,Reddit和Github进行交流,以码会友.作为工作多年的老鸟,大家自然知道内推的好使程度,要是拿到了公司的录取,那么什么签证都是浮云. 学好英语,

程序员怎样高效学习英语?

在我写作<全局光照技术:从离线到实时渲染>的过程中,我阅读了大量的英语论文和书籍,我深切感受到英语对于程序员这种新技术层出不穷职业的重要性,为了帮助广大程序员更好地学习英语,我发起了一个开源项目:Project English,它以程序员的思维和方法来学习英语,希望能够在技术分享之外给您带来更大更广泛地帮助. Project English信息如下: 本项目主页:http://projectenglish.orgGithub地址:ElvisQin/ProjectEnglish Project

程序员必须掌握的英语单词

英语 汉语 application 应用程式 应用.应用程序 application framework 应用程式框架.应用框架 应用程序框架 architecture 架构.系统架构 体系结构 argument 引数(传给函式的值).叁见 parameter 叁数.实质叁数.实叁.自变量 array 阵列 数组 arrow operator arrow (箭头)运算子 箭头操作符 assembly 装配件 assembly language 组合语言 汇编语言 assert(ion) 断言 a

一个程序员的悲哀 我英语不好惹谁了

现在外企对英语口语要求很高,我知道如果不能摆脱自己的哑吧英语就进不了外企,进不了外企就赚不到大钱.跟谁过不去也别跟钱过不去呀?咨询了一些知名培训机构的外教英语口语班,那些顾问给我的口语水平定了级,并给我推荐了几个阶段学习培训的课程,报价差不多在万元以上.我的妈呀!钱不是问题,问题是我没钱,忍痛放弃了那些天价培训. 偶然在谷歌google上搜索到一个“上外英语热线”,登录其网站知道了大概的情况:通过电话的形式学习口语,星期一至星期五下午四至十点,无时间和次数的限制,口语教练随机一对一陪练.看了介绍

为什么程序员英文要好?(From:V2EX)

说明:在V2EX上看到扇贝技术员工发的帖子, 讨论:为什么程序员英文要好? 原帖地址:点击打开链接 个人认为写得很好,也写一点自己的看法. 原帖总结的几个要点: 为什么程序员一定要学好英语: 1.写汉语注释 说实话,我也是刚刚体会到写汉语注释的坏处.一方面,在开发国际项目的时候绝对不能写汉语注释,尤其是国内国外协同开发的时候,会大大降低开发效率.另一方面,项目转换字符集的时候汉字注释的乱码会让你苦不堪言.别问我怎么知道的... 2.变量,方法,表名 这个不用多谈了,好的命名习惯带给你的不止是效率

浅谈程序员的英语学习

作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪.但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语和数字表达式构成的.英语对于程序员十分重要.我的大学本科全部采用英文教学,工作时也经常会遇到外国人,和他们谈笑风生,自认为自己的英语水平比园子的平均水平高一点.下面我就根据自己的经验来说说英语的学习方法. 为什么要学习英语 学好英语你可以直接阅读各种经典书籍的原文版.程序员这个行业之所以特殊,就是因为它所有的技术全部来自欧美,所以最主流,最新鲜,最正确的技术文

程序员如何学习英语

作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪.但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语和数字表达式构成的.英语对于程序员十分重要.我的大学本科全部采用英文教学,工作时也经常会遇到外国人,和他们谈笑风生,自认为自己的英语水平比园子的平均水平高一点.下面我就根据自己的经验来说说英语的学习方法. 为什么要学习英语 学好英语你可以直接阅读各种经典书籍的原文版.程序员这个行业之所以特殊,就是因为它所有的技术全部来自欧美,所以最主流,最新鲜,最正确的技术文

转:浅谈程序员的英语学习

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