【闲聊】论程序员英语水平的重要性

0x01

最近在第三次重新自学图形学,第一次学习是在大四,用的是07年的译版龙书DirectX 9.0 3D游戏开发编程基础,第二次是用的冯乐乐大佬的Unity Shader入门精要,不过这两次都是以实践为主,依葫芦画瓢写了一些看起来还不错的效果。后来机缘巧合找到了一门还不错的基础课 GAMES101-现代计算机图形学入门-闫令琪,上班连续看了10节,看得毛孔展开浑身舒畅,然后用的配套的课本是原版虎书第四版 Fundamentals of Computer Graphics, Fourth Edition。这也是我第一次用原版书籍来进行学习,顺便一提这本书亚马逊上电子版1k多软妹币,实体版根本买不到。于是我直接到隔壁彩印了原版的PDF,700多页的PDF一张双页彩印1块5,算下来也花了560,所以说原版书籍其实也真的不贵……

原版书难读吗?难读,如果干啃的话,但是如果换成中文其实也一样的,你会发现难度性并没有降低多少。读这种巨头书的方法其实和看其他巨头也是一样的:挑着看,虎书目录翻译。如果是跟着课程的话就更简单了,章节都是按课程目录分好的。但是实际上哪怕是硬看,难度也没有想象的那么大。因为程序员本来就和这些英文单词打交道,基本上一句话你看懂几个单词就能推断它想表达什么意思,

xana的英语水平如何?我是纯自学的英语,大一四六级连续擦线过了以后就没有继续任何的学习。初中的时候英语属于完全不懂的情况,但是那个时候喜欢后街男孩的歌,就属于纯听歌里如何训读,但是完全不懂英文符号,就是背板念经(笑),就在这种情况下学会了bsb的所有的歌。然后高中对林肯公园也是一样的情况,不过那个时候开始会记单词(单纯的觉得歌词写得好),手里有超级厚的一本打印歌词集。高中考试别人考试是背课本,我背的4级词典,就是从abandon开始那种- -。因为我就是不喜欢应试教育,但是又没有人引导我怎么做,所以就属于无头苍蝇式学习,宁可在空白的区域里乱涂乱画,也不喜欢在学吐了的内容里查漏补缺。虽然这么说有点对不起以前的英语老师,但是我真的都没怎么学进,还不如我自学的内容多。

所以你能看出我的英语水平其实并不好,但是在有指导或者目的的情况下去读原著,也是绰绰有余的。

0x02

假如一大串业务代码放在你面前,你认为英语母语者的非从业人员和非英语母语者的从业人员,哪一个人能更快理解它想干什么呢?我用易语言写一个业务逻辑给我妈看,哪怕她不清楚具体的细节,但是一眼也知道某一块东西是想干什么的。更加别提Chinglish的问题,它对其他的中文程序员的杀伤力比native-speaker的更大,缺了几个词或者看不懂几个词,native-speaker还能靠自己的自然语言的处理系统推断出来,比如同事写的tableBiaoCheMoveCamullPointsLocal你一眼看去都不知道这是干啥的,然后同事说Camull是caltmull-rom(样线条),然后发现单词还tmd拼错了。母语者最多看不懂,但知道BiaoChe的意思以后也能理解,中文程序员直接大脑宕机……

我认为所谓的985211程序员和其他程序员,差别最大的应该就是英语水平。有的时候限制一个人的编程水平的,他自己估计也想不到就是英语水平。母语者学习编程就是有天然优势,因为在他们看来编程语言和自然语言基本上没有区别,基本上没有门槛,也不会被收智商税(你看国内学python赚不赚钱不知道,教python应该挺赚钱的)。

而且英语好的人代码规范是一个大概率的事情,母语者在写单词的时候大小写基本上属于本能反应,单词拼错的概率也低了很多。这就明显降低了很多隐性bug,我现在也还是不能接受拼音单词的变量,至少也应该百度翻译一下单词,因为这样写驼峰保证是一个大写字母+若干小写字母的情况,而拼音就不一定了- -。

英文不好的人读英文源码和文档的能力相对较低,而且读英文源码和文档的意愿也很低,他们更愿意去找翻译的文本,虽然有的内容译者水平可能还不如自己。这么来看,英文水平就影响到了学习能力,时间长了一定是会有质变的。一个报错的文本,放到Stack Overflow上一定能搜出个几条来,而且但从文本上母语者理解bug的能力也更高,所以这甚至也影响到了debug能力……

从本质上来说,写代码就是写英文,英文水平有时候比逻辑能力更为重要,特别是对于交接工作的时候,好坏代码的定义很有可能就是说的单词使用的能力。

0x03

下面谈一谈翻译问题。常年和英语打交道的人会有一个感觉,就是有一些词不太好翻译,用原来的词反而更好理解,翻译了就「没那味」了。因为有一些词本来就是多义词,而翻译过来就没有多义了。比如socket就不好翻译,孔,穴,插座,本来的意思就是很简单的物件,用来表示消息通信基本操作单元,而且缩写sock有袜子的意思,母语者能够联想记忆,比如消息管道之类;而翻译套接字乍一看我还以为是什么新的概念,和原意风马牛不相及,连基本的信达雅都没有,以至于过了几年我才意识到这是同一个东西,可悲的是有的巨著的中文翻译(比如apux)还是用的这个翻译。又比如robustness-鲁棒性这种弱智音译,健壮性算是勉强意思对了,但是原意应该更贴近于reliable(可靠性)。shader翻译成着色器其实也挺奇怪的,shade-shader-shadow本来就是相关词,翻译成阴影器也挺奇怪的,保留原来的单词应该是更好的选择(但是实际上从光照模型来说shader确实不渲染阴影,中文的语境里着色器和阴影就是两个东西,所以反而不会有英语母语者的理解问题)。还有一些就是英文表述下更简单的词,比如view,比如说「我有两个view」翻译成「我有两个视图」就很奇怪,英文下是动名词结合而中文不是的单词,就不应该直译。

所以有很多人看书喜欢自备一本原著,看不懂或者疑惑的的时候就会去对照下原文。以前认为翻译人员(包括作者本人)都是大佬,现在看来不是的,很多烤肉人都是像你我一样的爱好者,所以很多情况下他翻译的内容不如你我都是很正常的,没必要神话翻译后的中文书籍,抓着翻译书籍里的八股文和别人理论更是大可不必,因为这毕竟是别人的观点,还是二手的,谁知道有没有塞私货。

所以读技术文章的时候会有一个很怪的现象,就是全英文的不想读,全中文的读的累,半中文半英文的反而读的很顺。因为你知道作者想表达什么,本来的语境就是在英文中。在要点无关的地方用中文翻译,可以加快阅读理解速度,要点上保持一定的原文,能够保证内容的准确性,那就是一篇好的译文。

(完)

你可能感兴趣的:(【闲聊】论程序员英语水平的重要性)