為什么要學習英語?
這個問題很多人問過,也有很多人回答過,此外如果你在閱讀這篇文章那么你應該已經意識到了學習英語的重要性。所以我不打算花太多篇幅在它上面,這里簡略的總結下學習英語的好處:
更多的高質量學習資源:首先,絕大多數高質量的計算機學習資源(書籍、論文、博文和視頻等)都是英文;其次,高質量的中文計算機學習資源幾乎為零;
無需忍受翻譯帶來的問題:
信息損耗:任何知識從一種語言翻譯到另一種語言一定會有信息損耗,更何況是英文和中文這兩種差別巨大的語言;
時效損耗:翻譯需要時間,如果你讀的是翻譯版那么你已經至少落后了半年;
翻譯損耗:國內的計算機書籍翻譯水平參差不齊,你需要拼人品;
編寫更好的代碼:良好的英語水平是編寫可讀(Readable)代碼的前提;
FQ:相對于其它專業,計算機專業出國工作要容易很多,但前提是你的英語要說的過去。
如何從零開始閱讀專業英文書籍?
注意這里的零基礎指的是專業英文書籍閱讀零基礎——而不是英語零基礎,英語零基礎就沒啥好說的了 -_-#
剛開始閱讀專業英文書籍時要記住一點:你的目標是提升計算機專業詞匯量,而不是學習計算機專業知識。所以你要閱讀的是計算機“通俗”讀物或“科普”讀物,我的計算機英文入門書籍是計算機文化(New Perspectives on Computer Concepts),這本書每年一版,現在已經出到第15版:
這本書的好處在于它極其淺顯易懂,并且包含大量計算機專業領域名詞,所以讀者可以專注于提升計算機專業詞匯量,而不是一邊查單詞一邊學新技術——同時搞兩件事是很困難的。
順便提一下那篇老碼農教你學英語和那個老碼農推薦的書目,姑且不論他把Mythical Man-month拼寫成Man Month Myth,我非常驚訝他居然稱人月神話原版為白話書并且推薦初學者閱讀,直到看到這里:
這句“另外兩本也很不錯,我很久以前看的翻譯版,一直也想找原版的來看看,可惜總是沒空,這次你們就算替我看了吧”著實讓我很無語,沒看過的書也可以隨便推薦么 -_-# 難怪那么多人推薦計算機程序設計藝術呢。
我在讀研時從頭至尾閱讀了Frederick Brooks的人月神話以及他的幾篇論文(No Silver Bullets和the Computer Scientist as Toolsmith),所以對Brooks的文風有一定了解——Brooks絕對是一位多才多藝的計算機科學大師——他的文字不僅涉及到計算機,還涉及到管理、人文、藝術、建筑和神學等學科。讀他的書和文章,我查單詞直接查到手抽,推薦初學者讀這種書,你是要玩死初學者么 -_-#
如何提升專業英語閱讀能力?
閱讀New Perspectives on Computer Concepts之后,你應該掌握了大量的計算機專業英文詞匯,這時你可以嘗試閱讀一些語言淺顯但主題相對深入的計算機科學基礎書籍,個人力薦Brian Kernighan和Andrew S Tanenbaum的作品,他們的著作不但本本經典,而且語言樸實:
C程序設計語言(英文版)(第2版):不但是C語言的神作,而且為編程語言書籍的編寫樹立了新的標桿;
UNIX編程環境(英文版):覆蓋了Unix的設計思想,簡潔易懂的Unix入門手冊;
The Practice of Programming:兩位Unix大師(Rob Pike和Brian Kernighan)近三十年的編程經驗盡在此書之中;
算法(英文版)(第4版):數據結構與算法入門;
現代操作系統(英文版第3版):全面的操作系統概論;
計算機網絡(英文版 第5版):全面的計算機網絡概論。
這些書讀完之后,你應該可以做到脫離字典閱讀絕大多數的計算機書籍——是的,可能還會有一些生詞,但不會影響閱讀。
除了讀書,閱讀專業博客也是非常好的提升專業英語水平的途徑。個人推薦下面幾個網站:
Hacker News:大量的技術資訊和博文;
Reddit:非常的聚合站點,我一般去下面幾個頻道(subreddit)
/programming:聚合了大量的優秀程序設計博文(其實不少國內技術站點就是搬運它的內容);
/java:大量的Java技術博文,質量不如/programming,但也還說的過去;
/shittyprogramming:悠閑時的去處,不少段子來自這里;
Medium:大量的高質量文章;
如何提升英語寫作能力?
程序員學習英語不是為了寫小說——而主要是如下場景:
編寫設計文檔(Design Document);
收發郵件,進行交流;
開發程序中的命名、注釋等描述性內容。
1和2需要Nonfiction Writing——言簡意賅,層次分明。這方面的寫作書籍我推薦:
the Elements Of Style(這本書我應該推薦了無數次 -_-#
On Writing Well
此外少不了中式英語之鑒,中式英語說說還成,寫到紙面上就丟大發了。
關于3的書籍很多,我個人推薦Code Complete中關于命名(Naming)的一章,章名好像是Power of Variable Names;以及Effective Java的Item44——如何編寫代碼注釋及文檔。
如何提升聽力?
閱讀量達到一定程度聽力也不會差,個人推薦Channel 9、Google Tech Talk和Coursera,多看多聽,此外務必不要中文字幕。
雜項
這里包含一些簡短的問題,如果你有疑問也可以留言,我會把答案添加到這里。
是否一定需要閱讀原版?
除非你閱讀原版書籍和中文書籍一樣順暢,或者翻譯書籍信息損失量太大,否則不需要刻意閱讀原版。
開發者需要多少單詞量?
沒有標準答案。作為開發者,大詞匯量不是必需,但一定要把詞用對——尤其是動詞。
以方法/函數名中經常出現的get為例:我們需要知道何時應該使用get,以及何時使用fetch、build、retrieve、compute、calculate和receive這些get的同類詞匯。
有沒有好用的詞典?
目前我還沒有發現一個好用的詞典應用,所以依然在使用6年前的CASIO V2800H電子辭典。(略土 -_-#
以上。
-
程序員
+關注
關注
4文章
953瀏覽量
29856
發布評論請先 登錄
相關推薦
評論