榜首,既要看代码,也要读文档。
读文档只读代码,是很多程序员的习气,也是致使程序员尽管读了很多英文材料,英文水平却没有相应进步的因素之一。曾经曾在《程序员》上看到介绍阅览技能图书方法的文章,提出过“先代码后文字”的方法,也即是“先看代码,看不了解再看文字”。这种阅览法能极大进步阅览功率,但假如技能图书只看代码就满足,还要文字干什么呢?很多时分,代码仅仅冰山一角,代码背面的思维和逻辑才是真实的重头戏,只要写成文字才干解说,也只要阅览文字才干了解。
举个比方吧,两段代码都是 x = 5; 看起来没不同,但一段的文字说明是“x should be not more than five”,另一段的文字说明是“x should be no more than five”。不查词典,你能弄清楚两种说法的差异吗——前者是“x有必要小于等于5”,后者是“x应当只要5”,光看代码估量很难意识到这些。
这些年,有不断增加的技能人员投身译介活动,这本来是一件功德,但假如平常只看代码,英文阅览才能不过关,反而会形成更多的困惑。常常有期望翻译技能文档的程序员来找我评论翻译疑问,期望了解一些语句应当怎么表达。一开始我也以为这是中文表达的疑问,但后来逐渐发现,本来更多的疑问出在英文阅览上,所以我的答复常常是:你觉得作者这儿说的是什么意思?引导对方把原文的意思逐渐表达出来,本来这时分,真实的译文现已浮出水面了。
近来的比方来自这句话:
But as with any web-based system, atom-based solutions trade latency for scalability, making atom often inappropriate for very low-latency notifications.
这句话之所以难翻译,疑问好像在于,除掉语句的骨干,之前有一个 But as…, 以后又有一个 making…。可是我最终发现,对这个语句有疑问的程序员本来底子没搞懂 trade…for…的用法(翻译为“根据 atom 的处理方案需求权衡推迟性和扩展性”),假如了解它是“献身 xx 交换 xx”以后,全部语句就相当好了解,也十分简略翻译了:与一切根据 web 的体系相同,根据 atom 的处理方案为寻求可扩展性,增大了推迟,所以 atom 通常并不合适用对推迟请求极低的提示。
要防止呈现这个疑问,首先要做的是改动“只看代码不看文字”的习气,或许最少要做到“阅览文字以后,能了解它的意思与代码是共同的”;另一个有用的方法是通过阅览纯文字的英文材料来学习某些新的常识(比方对于原理的详尽解说),这个方法我推荐给很多兄弟,十分有用。
第二,留意读音。
曾经总听人说,中国人学了很多年英语,本来是哑巴英语。不知道如今的状况有多少改观,但就我所见,不少程序员尽管阅览了很多英文材料,也会参与英文的评论组,也敢开口说,可是还会在读音上呈现很多疑问。这儿说的“读音”本来不是字正腔圆的口音,而是一些术语的读音。
计算机科学的术语来历十分广泛。比方规划形式里,有一种形式叫 Facade,很多人通常直接读作’fəkɑ:d,本来这个词来自法文,准确的读音本来是fə’sɑ:d;再比方“伪”代码的 pseudo,准确的读音是’su:dəʊ,可是我很少遇到能把它读对的程序员,很多人爽性不会发这个音。
或许有人说,这些疑问不重要,我们“一差二错”,约定俗成就好了,但工作没有这么简略。曾经我参与技能集会,有位嘉宾(技能高手)把结构名 chameleon(变色龙)读成了’tʃəmiljən,而准确的读音是kə’miljən,由于没有文字材料,很多人听了半天才知道他说的是什么,一些不熟悉 chameleon 的听众更是到完毕也没了解。中国人集会姑且如此,假如有时机参与中外技能交流,读错形成的疑问就更大了。
处理这个疑问有一个十分好的方法,即是学习美国大学的公开课,耶鲁、斯坦福等校园的计算机系都放出了很多高质量的公开课,国内也有十分好的翻译,学习其间的精品课程,不但能夯实根底,还能顺带学会很多天天都要遇到,但不会或许读错的术语。
第三,训练英文表达。
假如你背过单词,大约听到过“被迫单词”和“自动单词”的说法,前者是指“看到了能认出来”的单词,后者指“表达时能自动使用”的单词。就我的调查,很多程序员把握的大多数英语,都归于“被迫英语”——看到了能知道,但要表达相同的意思,未必说得出来。
初看起来这么好像没有疑问,可是查阅材料时,不会表达就成了大的妨碍。比较中文技能材料国际中“无职责/不担任转贴”众多的状况,英文技能材料的质量要高得多,Google 查找材料的准确性也远高于baidu;可是,要能够顺畅使用英文材料,需求“自动”输入信息,描绘疑问,这时分“被迫英语”就成了大疑问。
我自个屡次遇到过这么的状况:即使答案近在咫尺(输入准确的关键字,Google 的榜首条成果即是答案),但程序员即是束手无策——由于他不知道计算机的“嘟嘟”声是 beep,不知道搜“并发”材料应当用 concurrency,也不知道“死机”是 system halt,“黑屏”是 blank screen,“(登录时)不断跳转”是 infinite loop……
要处理这个疑问,最佳的方法是在阅览材料时多用心,记住这些说法;另一方面,没事的时分多阅览 stackoverflow 之类的网站,不要由于疑问与自个无关而疏忽,多留神这些疑问究竟是什么,留意人家是怎么表达的。只要通过这么的训练,才干在自个遇到疑问时敏捷找到也许的处理方案,节省时间。
有人说,以汉语为母语的程序员,学习英语现已是无可奈何,不但要会阅览,还要会读、会表达,真是难上加难。这种说法有必定道理,可是在现在并没有非常好的处理方案,学会阅览、认准读音、训练表达,的确能够给自个带来优点。久远来看,要改动这种状况,需求中文技能圈的一切人员尽力奉献高质量的材料(自创和翻译都能够),假如仅仅“无职责转贴”,既不亲身验证,也不收拾格局,中文技能材料的全体质量只会继续恶化,反向强逼更多的人把英语学好。