网站链接数怎么做,wordpress 嵌入字体,做网站需要看啥书,wordpress电话修改注: 本文的作者是宋劲杉#xff0c;原文链接。 俗话说#xff0c;没有金刚钻#xff0c;就别揽瓷器活儿。套用到IT业#xff0c;英语不行#xff0c;就别做程序员。网上关于程序员学英语的文章不少#xff0c;但我想谈谈我自己的看法。首先详细讨论一下为什么程序员离了英…注: 本文的作者是宋劲杉原文链接。 俗话说没有金刚钻就别揽瓷器活儿。套用到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语言开始写程序了谁还会去查 KR附录中的库函数查man page才是最有效率的。然而手册比入门书更少有中文译版因为手册是随时变的会随着软件版本更新而且需要看这些开发手册的人通常不会有英文障碍有英文障碍的人即使看了翻译的手册也写不出好程序来所以当然没必要翻译了。不管什么技术官方的手册和技术标准才是最原始的第一手资料看别的书都是以讹传讹由于自然语言不可避免是有歧义的文档中表达得不准确的地方就会被文档的读者也就是技术书的作者误解技术书中再有表达不准确的地方又被译者误解。我们小时候都玩过传话的游戏几个人站一排通过悄悄话传一句话传到最后变成什么了所以学网络协议就得看RFC学ARM就得看ARM公司的 Architecture Reference Manual要学习C语言就得看C99有歧义不要紧自己去揣测原作者的意思总比道听途说的可靠。 我们的学员出去面试经常被问到的一个问题就是在开发工作中遇到问题书和文档上都没有答案网上搜一下也没有答案怎么办要我说能看懂源代码的就去源代码中找答案这称为hacking不管是内核、libc还是各种framework你调用的东西有问题都能从它的代码中找到原因。如果没有能力 hacking或者时间紧不想去hacking最好的办法就是去官方邮件列表和IRC问。如果英文不行就没办法了只能去一些中文论坛“各位大虾帮忙小弟有一个问题求救跪求在线等”在线等了好几天也无人问津或者答非所问。岂不知逛这些论坛的没有大虾都是菜鸟大虾们都在IRC上聊得正欢呢。我在做Qt开发时曾经有一个问题当时在教育网上国外网不方便去各大中文论坛问了好几天也没人给出满意的回答后来花钱连了国外网去 trolltech官方新闻组提问只等了几分钟就得到了满意的解决办法。这次经历给我留下了深刻印象从此以后再也没有去中文论坛。 那么如果现在英文水平很差又想做程序员应该怎么学英语呢我下面说的方法有两个前提一是你的英文至少达到高中毕业水平也就是语法基本都学完了即使用得不熟练也知道有那么回事儿二是你希望尽快在工作中用上英语写程序够用就行而不是有考T考G这样的更高要求。 学习英语有听说读写四个方面的要求做程序员至少需要读和写非常流畅如果在外企工作还需要听和说的能力。技术英语和考T考G是不一样的一是听和说不像读和写那么重要不必担心自己是“聋哑英语”没关系丝毫不影响你成为编程高手二是要求的词汇量要小得多。考T考G都要拿一本单词书背很少有人会觉得背单词很有意思至少我是觉得很痛苦幸运的是看技术书不需要多少词汇量。技术书的描述对象都是局限于一个很窄的领域的就那么几个单词翻来覆去地用而且技术书是为了让人看懂的不像诗是为了让人看不懂的比较复杂的词在书中都有定义或解释。有些作者喜欢卖弄词汇量用一些很生僻的单词也有些作者卖弄一些典故由于文化背景不同很难理解不过这些通常都可以无视不会影响阅读还是因为技术书是为了让人看懂的。对于学习者来说阅读能力是最重要的等你完成了学习成为一个合格的开发者时需要写代码注释需要写文档需要通过邮件交流写作的能力才开始重要了。所以应该首先从阅读开始练习英语。 现在就拿起一本英文原版书开始看吧。和学游泳一样阅读的能力只能通过阅读本身来练习。我的经验是不必先系统学习了单词和语法再看书可以在看书时用到什么就补什么。我建议初学者看电子版因为现在的词典软件都可以鼠标取词边看边查很方便很多勤快人喜欢把查过的单词都抄下来我觉得没有必要反正查字典很方便下次再看到了就再查多查几次总会记住的抄下来就打断了看书的思路而且不见得抄下来就能记住。也许是因为我这人比较懒我用的都是懒办法。很多人不喜欢看电子书理由是盯着屏幕看书太累那么盯着屏幕写程序累不累这种人显然不适合做程序员。语法不熟练怎么办大多数情况下单词的意思都明白了就不影响阅读。技术书有时候喜欢用长句其中可能包含各种从句如果实在读不懂就去查语法书同样也不需要把这种从句彻底弄明白只要这一句能看过去就行了以后多查几遍书自然就掌握了。另外技术书是说明文通常不应该有过去时看到过去时就需要注意了很可能是虚拟语气如果不注意这一点看到的意思可能和真实的意思正好相反。 应该从哪本书开始看起呢从你当前最需要学的技术书看起。看书是相当花时间的如果能一边学英语一边学技术这时间利用得就很有效率。比如如果你的C语言已经学得相当好了不要专门为了学英语去重看一遍原版的KR。市面上有一些专门的计算机英语教材我的建议是不要看浪费时间nonsense。初学时最好选一本有中文译本的书有看不懂的地方可以翻中文版来对照但是不要相信中文的翻译原因在前面讨论过了。如果你是初学编程没有任何基础我可以推荐一本英文很浅显技术也很浅显的书How To Think Like a Computer Scientist有Python、Java和C版本可自由下载。 要逐渐养成良好的阅读习惯。一是不要每个生单词都去查有些单词很生僻查了也记不住记住了也不会再见到它了但是前面讲过都是作者在卖弄词汇量无视它丝毫不影响阅读因此要学会猜测单词的意思能不查就不查继续贯彻“懒”的原则。二是看书不要动口不念出声也不行就是不要动口要努力在大脑中建立从词形到语义的直接映射如果只能从词形到读音再到语义就太慢了严重影响阅读速度。三是努力做到每句话都从头到尾只看一遍不许回头反复看这一点比较难必须注意力高度集中经常在记忆中暂存前面半句的内容和句式才能做到但是一旦神功练成就会成倍地提高阅读速度。最后一层境界学会skim就是略读很多优秀的作者在组织材料时会给读者一些建议比如这一段是扩展的高级话题和主线的相关度较低可以先skim到后面注意不是让你skip到后面这一段还是要读的但是不必逐字句地读而是抓主旨大概讲了个什么概念有一些下定义的句式有哪些要点有数字编号或bullet列表项适用于哪些场合有哪些注意事项有 caveat、gotcha、noteworthy这种字眼后面可能还会碰到这个概念虽然你没有仔细看这是个什么东西但大体上也知道了这样就能不影响后面的阅读这不仅需要高度集中的注意力、熟练的语言能力而且要有足够的背景知识去猜测性地理解。但是语言能力还是最重要的因素我和几个同学交流过他们也能熟练地看英文书但是需要skim查一个东西时就觉得还是不如中文书查得快。skim的技能在查阅手册时尤其重要没有人会像看入门书一样把上千页的手册从头到尾看一遍都是用到哪儿就查哪儿。总之锻炼各种阅读习惯就为了一个目的如何在最短的时间内在保证正确性的前提下获取尽可能多的知识。程序员的学习时间都是非常宝贵的。 以上本着“够用就好”的原则多次提到用懒办法但是学技术学英语这两件事不能懒贵在坚持。要养成良好的阅读习惯也有很多东西需要坚持其中最根本的是持续高度集中注意力充分调动记忆能力、推理能力、猜测能力就像考试做阅读题一样看每一段话。最根本也是最重要的“有英文原版就不看中文版”这个原则一定要坚持。一开始看英文书可能会很慢但只要一直坚持就会慢慢达到原来看中文书的速度再坚持下去就会比中文书看得更有效率因为避免了很多歧义和术语翻译的问题。有人会说项目紧任务急看英文资料太慢这次就先用中文尽快解决工作中的问题吧等以后有时间了再看英文书学习。可是什么时候才会有时间呢工作总是一个接一个的老板怎么会付了工资让你闲着呢如果你有这样的困难我的建议是干脆辞职学好了英文再去工作。你只要想想你的同行们在外企全英文的环境下工作英文和技术每天都在突飞猛进而你还在用效率极其低下的方式学习和工作你和别人的差距不是越来越大了吗另一方面现在的在校学生从小学就开始抓英语基础都很好很多高校也逐渐重视引进原版教材开设很多英文授课的专业课。你再不奋起直追就不觉得以后的职业道路充满危机吗 最后说说写作。刚开始练习时不要怕写错能表达清楚自己的意思即可。我看过很多源代码和文档中的英文一看就是中国人写的谓语动词不分单复数名词复数不加s处处可见中国式英语但是丝毫不影响我对这些编程大牛的景仰因为其中的思想我看懂了并且我认为很强大。我有一个朋友中学毕业就出来混的由于工作的性质总要跟老外打交道他从来不惧和老外交流虽然连一个囫囵的句子都说不出来但总是能用中学学的那点单词让老外明白他的意思这一点我就非常佩服。总之就是说不要因为不知道怎么写是对的就不敢动笔写只要敢交流并且别人能懂你的意思就是很有效的交流。而且随着阅读量的增加自然能写出一手好英文前面讲过了创作总是从模仿开始的。不怕出错才能有一个好的开始才能逐步练习提高而练习的最终目的当然还是希望写好不仅字句通顺无语法错误还能适当修辞。转载于:https://www.cnblogs.com/haries/p/coding-and-english-learning.html