程序員英語學習指引


作者:Lucida

原文鏈接:http://zh.lucida.me/blog/english-for-programmers/

本文謝絕轉載,如需轉載需征得作者本人同意,謝謝。

概要

這篇文章面向程序員,簡要的介紹了一些學習計算機專業英語的步驟和經驗。

關於

之前不少人曾站內我如何學習英語,我也曾試圖寫一篇如何學習英語的博文,但我現在的實力着實無法寫出令人信服的文章:

  1. 盡管閱讀、寫作和聽力還可以,但口語很差——我指的是日常用語,即便出國一年,現在我和同事交流時仍然磕磕巴巴,不知道用什么詞的情況經常出現;
  2. 盡管讀過大量外文資料,但它們絕大多是計算機專業書籍和論文,並不適用於通用的英語學習,也不適用於其它專業。

所以這篇文章並不是一篇通用的(General)英語學習教程——而是一篇面向國內開發者的計算機專業(為了簡便,接下來的“專業”均指“計算機專業”)英語學習指引,本文集中於如下問題:

此外,我把簡短的問答放在雜項之中,以便閱讀 😃

為什么要學習英語?

這個問題很多人問過,也有很多人回答過,此外如果你在閱讀這篇文章那么你應該已經意識到了學習英語的重要性。所以我不打算花太多篇幅在它上面,這里簡略的總結下學習英語的好處:

  1. 更多的高質量學習資源:首先,絕大多數高質量的計算機學習資源(書籍、論文、博文和視頻等)都是英文;其次,高質量的中文計算機學習資源幾乎為零;
  2. 無需忍受翻譯帶來的問題:
    1. 信息損耗:任何知識從一種語言翻譯到另一種語言一定會有信息損耗,更何況是英文和中文這兩種差別巨大的語言;
    2. 時效損耗:翻譯需要時間,如果你讀的是翻譯版那么你已經至少落后了半年;
    3. 翻譯損耗:國內的計算機書籍翻譯水平參差不齊,你需要拼人品;
  3. 編寫更好的代碼:良好的英語水平是編寫可讀(Readable)代碼的前提;
  4. 翻牆:相對於其它專業,計算機專業出國工作要容易很多,但前提是你的英語要說的過去。

如何從零開始閱讀專業英文書籍?

注意這里的零基礎指的是專業英文書籍閱讀零基礎——而不是英語零基礎,英語零基礎就沒啥好說的了 -_-#

剛開始閱讀專業英文書籍時要記住一點:你的目標是提升計算機專業詞匯量,而不是學習計算機專業知識。所以你要閱讀的是計算機“通俗”讀物或“科普”讀物,我的計算機英文入門書籍是計算機文化New Perspectives on Computer Concepts),這本書每年一版,現在已經出到第15版

New Perspectives on Computer Concepts

這本書的好處在於它極其淺顯易懂,並且包含大量計算機專業領域名詞,所以讀者可以專注於提升計算機專業詞匯量,而不是一邊查單詞一邊學新技術——同時搞兩件事是很困難的。

順便提一下那篇老碼農教你學英語和那個老碼農推薦的書目,姑且不論他把Mythical Man-month拼寫成Man Month Myth,我非常驚訝他居然稱人月神話原版為白話書並且推薦初學者閱讀,直到看到這里:

WTF

這句“另外兩本也很不錯,我很久以前看的翻譯版,一直也想找原版的來看看,可惜總是沒空,這次你們就算替我看了吧”着實讓我很無語,沒看過的書也可以隨便推薦么 -_-# 難怪那么多人推薦計算機程序設計藝術呢。

我在讀研時從頭至尾閱讀了Frederick Brooks人月神話以及他的幾篇論文(No Silver Bullets和the Computer Scientist as Toolsmith),所以對Brooks的文風有一定了解——Brooks絕對是一位多才多藝的計算機科學大師——他的文字不僅涉及到計算機,還涉及到管理、人文、藝術、建築和神學等學科。讀他的書和文章,我查單詞直接查到手抽,推薦初學者讀這種書,你是要玩死初學者么 -_-#

如何提升專業英語閱讀能力?

閱讀New Perspectives on Computer Concepts之后,你應該掌握了大量的計算機專業英文詞匯,這時你可以嘗試閱讀一些語言淺顯但主題相對深入的計算機科學基礎書籍,個人力薦Brian KernighanAndrew S Tanenbaum的作品,他們的著作不但本本經典,而且語言朴實:

這些書讀完之后,你應該可以做到脫離字典閱讀絕大多數的計算機書籍——是的,可能還會有一些生詞,但不會影響閱讀。

除了讀書,閱讀專業博客也是非常好的提升專業英語水平的途徑。個人推薦下面幾個網站:

  • Hacker News:大量的技術資訊和博文;
  • Reddit:非常的聚合站點,我一般去下面幾個頻道(subreddit)
    • /programming:聚合了大量的優秀程序設計博文(其實不少國內技術站點就是搬運它的內容);
    • /java:大量的Java技術博文,質量不如/programming,但也還說的過去;
    • /shittyprogramming:悠閑時的去處,不少段子來自這里;
  • Medium:大量的高質量文章;
  • Quora:大量的高質量問答,有不少中國人在上面練習英語;

如何提升英語寫作能力?

程序員學習英語不是為了寫小說——而主要是如下場景:

  1. 編寫設計文檔(Design Document);
  2. 收發郵件,進行交流;
  3. 開發程序中的命名、注釋等描述性內容。

1和2需要Nonfiction Writing——言簡意賅,層次分明。這方面的寫作書籍我推薦:

the Elements Of Style

the Elements Of Style(這本書我應該推薦了無數次 -_-#

On Writing Well

On Writing Well

中式英語之鑒

此外少不了中式英語之鑒,中式英語說說還成,寫到紙面上就丟大發了。

關於3的書籍很多,我個人推薦Code Complete中關於命名(Naming)的一章,章名好像是Power of Variable Names;以及Effective Java的Item44——如何編寫代碼注釋及文檔。

如何提升聽力?

閱讀量達到一定程度聽力也不會差,個人推薦Channel 9Google Tech TalkCoursera,多看多聽,此外務必不要中文字幕。

雜項

這里包含一些簡短的問題,如果你有疑問也可以留言,我會把答案添加到這里。

是否一定需要閱讀原版?

除非你閱讀原版書籍和中文書籍一樣順暢,或者翻譯書籍信息損失量太大,否則不需要刻意閱讀原版。

開發者需要多少單詞量?

沒有標准答案。作為開發者,大詞匯量不是必需,但一定要把詞用對——尤其是動詞。

以方法/函數名中經常出現的get為例:我們需要知道何時應該使用get,以及何時使用fetchbuildretrievecomputecalculatereceive這些get的同類詞匯。

有沒有好用的詞典?

目前我還沒有發現一個好用的詞典應用,所以依然在使用6年前的CASIO V2800H電子辭典。(略土 -_-#

以上。


作者:Lucida

原文鏈接:http://zh.lucida.me/blog/english-for-programmers/

本文謝絕轉載,如需轉載需征得作者本人同意,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM