程序員要怎樣學英語

jopen 9年前發布 | 11K 次閱讀 程序員

一般來說,程序員可算是英語水平比較好的群體,因為在這個行業,英文資料是最全面、最及時,對英文資料的需求也最迫切的。就我觀察,剛入門不久的程序員一般都能查閱英文文檔,找到需要的信息。但是另一方面,我也發現,經常閱讀英文文檔的程序員,英語水平許多時候卻不像“經常閱讀英文”的樣子。所以我在這里列幾點自己的學習心得,供大家參考。

第一,既要看代碼,也要讀文檔。

讀文檔只讀代碼,是很多程序員的習慣,也是導致程序員雖然讀了很多英文資料,英文水平卻沒有相應提高的原因之一。以前曾在《程序員》上看到介紹閱讀技術圖書方法的文章,提出過“先代碼后文字”的方法,也就是“先看代碼,看不明白再看文字”。這種閱讀法能極大提高閱讀效率,但如果技術圖書只看代碼就足夠,還要文字干什么呢?很多時候,代碼只是冰山一角,代碼背后的思維和邏輯才是真正的重頭戲,只有寫成文字才能解釋,也只有閱讀文字才能理解。

舉個例子吧,兩段代碼都是 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.

</blockquote>

這句話之所以難翻譯,問題似乎在于,除去句子的主干,之前有一個 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 搜索資料的準確性也遠高于百度;但是,要能夠順利應用英文資料,需要“主動”輸入信息,描述問題,這時候“被動英語”就成了大問題。

我自己多次遇到過這樣的情況:即便答案近在咫尺(輸入正確的關鍵詞,Google 的第一條結果就是答案),但程序員就是一籌莫展——因為他不知道計算機的“嘟嘟”聲是 beep,不知道搜“并發”資料應該用 concurrency,也不知道“死機”是 system halt,“黑屏”是 blank screen,“(登錄時)不停跳轉”是 infinite loop……

要解決這個問題,最好的辦法是在閱讀資料時多用心,記住這些說法;另一方面,沒事的時候多瀏覽 stackoverflow 之類的網站,不要因為問題與自己無關而忽略,多留心這些問題到底是什么,注意人家是如何表達的。只有經過這樣的鍛煉,才能在自己遇到問題時迅速找到可能的解決方案,節省時間。

有人說,以漢語為母語的程序員,學習英語已經是迫不得已,不但要會閱讀,還要會讀、會表達,真是難上加難。這種說法有一定道理,但是在目前并沒有更好的解決方案,學會閱讀、認準讀音、鍛煉表達,確實可以給自己帶來好處。長遠來看,要改變這種情況,需要中文技術圈的所有人員努力貢獻高質量的資料(原創和翻譯都可以),如果只是“無責任轉貼”,既不親自驗證,也不整理格式,中文技術資料的整體質量只會持續惡化,反向逼迫更多的人把英語學好。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!