经常有人说 程序员是理科生 所以不需要会英语?
常常能够在各种论坛贴吧看见有人说程序员是搞逻辑工作的,英语根本不重要。
事实真的如此吗?
很显然,虽然前半句话“程序员是搞逻辑工作的”基本正确,但是它与后半句话“英语根本不重要”之间其实是没有因果关系的。
逻辑很重要,算法很重要,数据结构很重要,这些都不妨碍一个事实——英语也很重要。
在往下说之前先给广大程序员和想要成为程序员,而英语又不是很好的小伙伴吃一颗定心丸。在这里我们说英语很重要,并不是说程序员一定需要很高的英语水平,大学英语四级的水准就足够兜底了,这也是很多用人单位的硬性要求。这个要求说实话不是很高,认真学一学是很容易就可以达到的,如果这个程度都达不到的话,可能要先正视一下自己的学习能力了,毕竟要做好一个程序员,需要学习的东西那可是非常多的。
回归正题,为什么说对于程序员,英语是很重要的呢。基本可以总结为以下几点:
编程语言基本都是英语写代码时最好用英语来命名很多开发工具只有英文版一手技术资料基本都是英文
编程语言
由于计算机是美国人发明的,大多编程语言也是美国人发明的,理所当然这些语言都是基于英语的了。
所有编程语言中都有一类单词叫做关键字,还有一部分单词叫做保留字,它们都是编译程序要求每一个程序员都必须按规则每一个字母都完全正确地进行拼写的。
不过非常幸运的是,这些关键字和保留字数量都很少,通常一门语言中这类单词数量都不会超过一百个。而且它们基本也都非常简单,最长的单个单词的关键字恐怕也就只有Java中的synchronized了。
虽然也有像易语言这种基于中文的编程语言,但是恐怕很少用人单位会认可它吧。
规范命名
在编码规范中有一类非常重要的规范就是专门针对命名的,不管是驼峰命名法、Pascal命名法还是匈牙利命名法,他们都是针对英语而言的。也就是说,没有哪一种规范会告诉程序员使用中文应该怎么命名,因为所有的公司都不会建议或者严禁使用中文命名。
假想一下英文关键字夹杂着中文命名的代码吧,比如:
for (int 序号 = 0; 序号 < 数组.长度; ++序号)
这茅台兑雪碧般的诡异口感就不说了,光是打这段代码过程中切换输入法的时间都够喝一壶了。
同时,也千万不要使用拼音来命名。可以尝试解读一下"wenzi"这个变量名,它到底是指“文字”还是“蚊子”?然而有些菜鸟连全拼都懒得写,同事们经常要对着一堆"nyx"、"ys"苦苦思索。如果是写在程序代码里头兴许还可以结合上下文猜一猜,但是如果是放到数据库表名列名上的"brmz"、"ysdm"可就死命了猜去吧。还有l n不分前后鼻音不分等等情况我都懒得吐槽了。
开发工具
当然主流的大型开发环境基本都有汉化版本而且汉化得很好,但是许许多多小型工具或者插件从名字到界面到使用说明都是清一色英文的,即使花费半天功夫勉强找到了一个安装以后不报错的汉化包,通常也没法支持最新版本。
想象一下当你在github搜索某个功能的工具,输入中文关键字,出来的结果寥寥无几还都牛头不对马嘴。这时你想要输入英文关键字,结果发现自己不知道对应的英文是啥。。。
使用了翻译软件得到了一个生硬的非专业用词,然后再搜索了一次,这一次出来的全是英文结果,你根本就没有办法分辨到底哪个才是你想要的内容。。。
假设你又祭出了谷歌网页翻译,然后半信半疑地下载了其中一个工具,运行以后所有的按钮和标签全都是英文,别说使用了,你都不知道自己下没下对东西。。。
技术资料
虽然国内也有许多站点提供了丰富的技术文档,但是如果你想要获取最准确的、最新的或者最生僻的信息,通常还是得从MSDN或StackOverflow下手。
而实体出版物的时效性先不说,即使是国内顶尖学府编写的书籍,与国内一流翻译人的译文书籍,也会存在部分专业术语不一致的情况。如果不能对原文中的英语单词有足够的认知,那么对于译文或转述的知识内容恐怕也很容易产生理解的偏差。
再往更高水平来说,要阅读一流国际期刊的英文原文,就需要更深层次的英语造诣了。
最后,我也希望有朝一日可以完全不会英语也能够当好一个优秀程序员,但是在那之前必须借助英语以“师夷长技”,“制夷”之时才有可期。