- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2009年02月26日 星期四 18:52
俗话说,没有金刚钻,就别揽瓷器活儿。套用到IT业,英语不行,就别做程序员。网上关于程序员学英语的文章不少,但我想谈谈我自己的看法。首先详细讨论一下为什么程序员离了英语不行,然后针对程序员应该怎么学英语说说我的体会。 英语是计算机的母语,是程序的母语,所以必然是程序员的母语。程序中的变量名、函数名起得好不好是决定代码质量和可维护性的最关键因素。高质量的代码应该是这样的:代码基本上是自解释的(self-explanatory),不需要太多注释,不管代码的规模有多大,具有相关知识背景的读过文档的人都可以立刻上手、立刻参与维护和开发。要想使代码能够自解释,给变量和函数起个好名字很关键,很显然,只能用英文起名字,一是用汉语拼音起名字可读性很差,二是英文单词通常比汉语更expressive(看吧,如果用汉语来说,就得说“表达能力更强”、“更有表现力”这么罗嗦),由于程序的复杂性,变量和函数往往表示一些很抽象的概念,起个既准确又简洁的名字并不容易,可是很多时候,用汉语需要很多字才能说清楚的一件事,用英文一个单词再加点词形变化就能说清楚了。例如APUE上讲sleep函数的实现,其中有个变量表示“本来应该睡到某个时刻,但是提前被信号唤醒了,唤醒时与本来应该睡到的时刻相差的时间”,如果为了简洁而不求准确,这个变量名至少也得叫“未睡到”,而书中只用了一个单词unslept,非常准确、简洁地表达了这个意思。为了写程序而学英语需要学到什么水平?我认为能起出这种变量名就够水平了。很多在IT外企工作的中国人,说话写文章经常夹杂着英文单词(比我严重多了因为我不在外企),非常可以理解,确实是为了表达得更准确简洁的需要,而不是纯为了play zhuangbility。总之,要写程序必须学好英语,否则连变量名都起不好,这虽然是一个非技术问题,但却是个根本问题,比任何技术问题都重要。当然,现在很多编程语言也支持用Unicode字符给变量和函数起名,但是你见过有人用汉字写程序吗?根本不实用。有人会辩驳说一页英文翻译成中文往往只占半页,中文不是更简洁吗?但是你算算打一页英文和打半页中文哪个敲键盘次数多。另外,要读别人的代码也必须学好英语,如果你不知道unslept是由 sleep变形而来的,就体会不到其中的精妙,只有大量阅读高质量的代码,才能写出高质量的代码,创作都是从模仿开始的。 说说英语对于看书学习的重要性。中文技术书和英文技术书的水平根本不在一个量级上,这是有很多原因的,不能全归结于中文书的作者水平差。最重要的是,出中文书的低回报率决定了作者不可能花太多心血在上面,你去amazon看看一本书卖多少美刀,再去chinapub看看一本书卖几块钱。老外写一本书,可以做到全书没有一个拼写错误(当然英文的拼写检查工具更完善也是部分原因),中文能找出一本没有错别字的书吗?Knuth可以悬赏让全世界读者来找磋,中文书作者有哪个敢这么做?不是因为老外态度有多认真治学有多严谨,而是因为他们赚到了,就应该拿出高质量的作品来,不然会被读者骂的。 英文技术书的翻译质量通常很差。也不能归结于译者的水平差,我也翻译过书,也努力想译好,但真的很难译好。IT业的新名词层出不穷,像“内核”、“网络”这种常见术语还好,稍微专一点的术语都没有统一的译名。我们在教学中发现,很多学员看书时搞不清这本书的名词A和那本书的名词B是什么区别,来问老师,才发现原来A和B就是一回事儿。这是一个单词对应多个译名的情况,还有一个译名对应多个单词的情况,比如field、domain、realm都译成“域”,block、 bulk都译成“块”,argument、parameter都译成“参数”,attribute、property都译成“属性”,虽然这些词的意思本来就差不多,但是在一篇文章里,作者可以换着用,不同的单词表示不同的概念,翻译完了一看,都成一个概念了。英文书背后都有index,看到一半忘了某个名词是怎么定义的就可以翻index,而译文通常没有index,名词都已经乱七八糟了,没法做index。还有更发指的是,老外喜欢造词,现有的单词上加一点变化和组合(例如有人喜欢说automagically),看着心领神会,想译出来就很费劲。老外即使在技术书中也经常用一些生动的表达方式和俏皮话,而中文的书面语言非常死板,生动的表达方式只存在于口语中,如果写在书上就很不像话,这也是很难翻译的一个重要原因。看中文译本,不仅质量差,而且跟不上时代,通常一本英文书出来,至少要等一到两年才能看到中文译本。两年啊!等你看到这本书的中文译本时,这个版本都快淘汰了。 然后说说英语在开发工作中的重要性。看书学习通常只起一个引导入门的作用,在工作中更有用的是手册、文档。学完了C语言开始写
文档评论(0)