学习编程:中国程序员入门的怪现象之一――中文的困惑
这篇文章讨论了中国程序员入门时的一个怪现象。
(CSDN April 02, 2008)
写在前面
首先表明一下我对于自己母语的喜爱,免得被人指为数典忘祖。
游走论坛
游走Delphi论坛间,所见最多的就是两个可笑之事。一是问哪里有简体中文版的Delphi,另一个就是问哪里有中文版的帮助文件。估计这也是其他版上的通病了。那么为什么会常有这种问题呢?我个人的理解是,大家把programming当成了coding,认为什么人都可以到这里得一杯羹。非也。虽然中国程序员的待遇对比国外是差多了,但是想混口饭吃也不是只会码代码就可以搞定的。最起码,要把英文学好了。
以我现在从事的入门级职位为例,因为开发中经常需要寻找合适的开源库,或者查看别人的研究成果,那么拜读人家的blog或者阅读代码包里的说明文档简直就是家常便饭。虽然这些基本上也就是大学英语六级刚过的要求,如果你仅仅只会中文或者英语四级刚过,我认为都是比较困难的。(猜测那些老是发帖子问别人这类低级的同志们是不是该准备考考六级了,虽然我很喜欢接你们的分,但是好浪费时间哟。)
这个时候你感到中国软件业太差,怎么好东西都是人家说英文的做出来的,其实也不太合理。我就用过德国、法国、意大利程序员的开源代码,但是都是英文文档。毕竟在软件这个领域里,英文是唯一通用的语言――Ruby也没用日文做关键字呢。因此不仅仅是中国程序员在刻苦学习英文,所有其他非英语国家程序员也是靠学习来提升自己。许多看似奇怪的问题,只需要在Google里面用英文关键字搜一下(特别是遇到编译器报错之类的情况),就可能得到正确的答案。而使用中文关键字,或者去问百度知道,估计成功率够呛。
那么是什么原因使得这些程序员不习惯使用英文,甚至想要一个全中文的编程环境呢?我感觉这和教育领域的现状十分有关。
大学教材
国内大学所选用的软件科目教材,那应该更算得上是参差不齐,问题多多。这一点从校内图书馆的书籍配置和教辅材料的销售来看应该可见一般。鄙人当年的母校,虽然图书馆里书籍众多,但随意一扫,几乎是各类出版社的书籍一本不少(那些VB6的书居然还没被扫地出门)。但是每每想要借阅经典作品时,却发现就那寥寥几本,早已不知落在了哪个先知手上,于是对着架上那些虽然崭新,但是毫无用处可言的烂书兴叹。(试想将采购这些烂书的经费用来多多添置基本经典,那银子岂不是发挥了更大的作用。)
且不说其他,我个人最不认同的一点便是很多学校为C语言课程所选择的课本。本来这几乎是很多大学生一辈子唯一一次接触学习编程的机会,应该尽可能使用一个优秀的课本以激发那些有天赋学生的兴趣。但是看来看去,包括国内许多一流学府的计算机系,都在使用着一本国内老老教授编辑的”C语言练习册”,简直把编程课变成了毫无趣味可言的奥数课,失去了教学的本义。虽然这一招着实提高了这门课的通过率,但是直接的结果就是误导了千千万万的大学生,让他们从入门起就输给了别人。
鄙人的幸运之处在于本科期间所有课程都是英文教学。严格的教师选拔体系使得最后有机会给我们授课的老师都是初出茅庐但是思维活跃、英文不错的年轻人,因此断然不会守着那种害人的练习册授课。正是由于接触到了K&R的The C Programming Language等经典书籍,我个人感觉学习编程更多的是在品味设计的思想,而不是做着算术题。或许正是这样的理解,才使得我从不把编程叫做coding,那种码代码的方式距离programming还是差别挺大的吧:-)据我的了解,现在能够采用这类引进版教材进行教学的高校还只限于国内顶尖的学府,而且仅限于部分班级,能够如我一般幸运采用英文课本配合英文教学过程的学生更是少得可怜。因此不得不说中国的教育水平在达到温饱之后,还有很长的一段路要走。要成为软件强国,照着coder那条路培养学生是走不通的。于是乎从开始编程的那一天起,我就十分习惯一个全英文的环境,而且读起那些英文的帮助或者网路上的文章都是轻松自如,仿佛一个宽大的厅堂对我敞开了大门。这无疑使我拥有了一个不错的开始。
只是师傅领进门,修行靠个人。要拓宽自己的知识面,或者加深对某个领域的了解,买一本好书是十分必要的。
买书故事
学完C语言,虽然自己的分数在班里还是蛮高的,但是却一直没有机会实际做做。只是因为大三上学期我便要开始做程序设计课程,所以在大二放暑假的当天和同学一同去图书馆借书未果后,我们二人便转到学校附近的一家小书店买了几本Delphi的书,回家各自研究。这里我就不多提那些书的名字了,只抱怨自己那时未曾看过任何导购的信息,因此上了奸商的当,白花了不少银子――当然,我指的奸商并非是那些不懂技术的可怜的书店老板。后来从网路上才知道除了Delphi Developer’s Guide和Mastering Delphi两个系列之外,Delphi领域中其他的书籍多数评价都不怎么好。大三利用学习C++课程的闲暇拜读Mastering Delphi 7之后,我的编程思想也的确是转变良多。特别是读完了其中关于OOP的章节之后,我居然在C++课程的考试里面顺利答出了不少难题(在没怎么深入研究C++的情况下―― 对不住了,老师)。
这样的一个开始,也使我基本上划定了一条购书的界限――优先购买影印版(便宜),其次是名家翻译的中文版,最后才是原创的中文版。(现在工作了,手头也宽裕了不少,因此偶尔呢也会购买折扣特别合理的引进原版收藏。)可想而知按着这个规律,我手里的英文书越来越多,以至于中文书变得少极了。
对于影印版,我有种特别的偏爱,首先是因为技术英语十分容易懂,而且好的技术书一般逻辑严密,结构合理,是自己平时写技术短文或者开发文档的好范例,因此阅读起来不仅能够锻炼阅读能力,也可以提高写作水平。其次由于国内计算机领域的研究同国外还是有着明显差距,泛滥在出版界中就是一大堆所谓多少例子学什么技术的口水书,因此只有从影印版图书中能够找到技术的核心内容。况且很多新的软件概念都是由外国人提出,因此要吃透其中的奥妙,不看影印版是比较困难的。
对于翻译版的书,感觉国内现有的基本上只是几个水平。一般来说,大概的内容还是翻译得不错,但是一到核心知识所在,就会出现一些你看不太懂的地方。一方面是英文描述本身就十分难以理解,一方面就是译者所赐的译错之处,导致你时常感觉如坠云雾之中,根本无心继续研读下去。我自己的经历便是如此,甚至有些翻译版我看到译错之处居然能反向推出原文大概是什么,正确的翻译是什么。这就只猜测可能是国内的出版行业太不景气,留不住或者培养不出一流的翻译团队,抑或是出版周期太短,复审的流程太过简单,故而影响了翻译的质量。(当然即使是像Harry Potter那样流行的书籍,有着良好的翻译团队,因为赶时间的缘故,书中错误也是少不了。)我手头的翻译书,现在只有一本带在身边,便是Contributing to Eclipse。虽然熊节先生是国内的翻译高手,但是Java、Eclipse平台那些怪怪的专业术语仍使得译出的文字难以流畅。可惜这样的书籍未曾以影印版的形式发行,使鄙人常感遗憾。
至于国内的原创书,这两年我未曾买过。只不过上次BEA在上海的User Group抽奖,我有幸得到了一本Spring 2.0核心技术与最佳实践。廖雪峰先生将一个庞杂的Spring框架娓娓道来,即使是围绕在周围的IoC、ORM、AOP以及MVC的复杂技术也是化繁为简,只抓精要,是我这个原本对于Java、Spring知之甚少的人也对其产生了浓厚的兴趣。因此我也开始偶尔看看China-pub上的一些免费章节,寻找不错的原创书。可惜虽然国内各个社每年会推出的原创书数不胜数,但绝大多数的定位本身就有问题(基本上是针对利润丰厚的高校教学或者各类培训、考级、练习册之类的低端市场),根本没有多少精品,因此总体状况依然不乐观。更有滥竽充数者,依然走着翻译某些开发工具的帮助文件来骗取钱财的老路,真是”令人发指”。
总结
如果你真的希望提高自己的专业水平,能进入程序员领域或者在程序员这个职位上做出点成绩,那么研究技术和学习英文就是一个问题的两个方面。忽视任何一面都会令你的前进速度放缓。