天天看點

國外程式員推薦:每個程式員都應讀的書

近日(2012年8月17日)重看 StackOverflow 的原讨論帖,發現于今年年初被關閉了。不過有人做了彙總,把其他回複中提到的書籍,放在投票數最高的回複中。新更新添加 59 本書,詳情可見文章後半部分。

“如果能時光倒流,回到過去,作為一個開發人員,你可以告訴自己在職業生涯初期應該讀一本,你會選擇哪本書呢?我希望這個書單清單内容豐富,可以涵蓋很多東西。”

推薦數:1684

對于新手來說,這本書中的觀念有點高階了。到你準備閱讀此書時,你應該已經知道并實踐過書中99%的觀念。– esac

推薦數:1504

對于那些已經學習過程式設計機制的程式員來說,這是一本卓越的書。或許他們還是在校生,但對要自己做什麼,還感覺不是很安全。就像草圖和架構之間的差别。雖然你在學校課堂上學到的是畫圖,你也可以畫的很漂亮,但如果你覺得你不太知道從哪兒下手,如果某人要你獨自畫一個P2P的音樂交換網絡圖,那這本書就适合你了。—— Joel

推薦數:916

<a href="http://blog.jobbole.com/wp-content/uploads/2011/12/3-Structure-and-Interpretation-of-Computer-Programs.jpg"></a>

就個人而言,這本書目前為止對我影響醉倒的一本程式設計書。

同時,你将會學到其他東西,函數式程式設計(第三章)、惰性計算、元程式設計、虛拟機、解釋器和編譯器。

一些人認為此書不适合新手。個人認為,雖然我并不完全認同要有一些程式設計經驗才能讀此書,但我還是一定推薦給初學者。畢竟這本書是寫給著名的6.001,是麻省理工學院的入門程式設計課程。此書或許需要多做努力(尤其你在做練習的時候,你也應當如此),但這個價是對得起這本書的。

推薦數:774

<a href="http://blog.jobbole.com/wp-content/uploads/2011/12/4-The-C-Programming-Language.jpg"></a>

推薦數:671

<a href="http://blog.jobbole.com/wp-content/uploads/2011/12/5-Introduction-to-algorithms.jpg"></a>

在我看來,代碼隻是一個工具,并非精髓。開發軟體的主要部分是建立新算法或重新實作現有算法。其他部分則像重新組裝樂高磚塊或建立“管理”層。我依然夢想這樣的工作,我的大部分時間(&gt;50%)是在寫算法,其他“管理”細節則留給其他人…… —— Ran Biron

推薦數:617

<a href="http://blog.jobbole.com/wp-content/uploads/2011/12/6-Refactor.jpg"></a>

<a href="http://blog.jobbole.com/wp-content/uploads/2011/12/7-Design-Patterns.jpg"></a>

推薦數:588

<a href="http://blog.jobbole.com/wp-content/uploads/2011/12/8-The-Mythical-Man-Month.jpg"></a>

推薦數:542

<a href="http://blog.jobbole.com/wp-content/uploads/2011/12/9-The-Art-of-Computer-Programming.jpg"></a>

這是高德納傾注心血寫的一本書。—— Peter Coulton

推薦數:462

<a href="http://blog.jobbole.com/wp-content/uploads/2011/12/10-Dragon-Book.jpg"></a>

我很奇怪,居然沒人提到龍書。(或許已有推薦,我沒有看到)。我從沒忘過此書的第一版封面。此書讓我知道了編譯器是多麼地神奇絕妙。- DB

推薦數:445

推薦數:437

如果下昂真正深入閱讀,我推薦道格拉斯·侯世達(Douglas Hofstadter)的《哥德爾、艾舍爾、巴赫書》。他極為深入研究了程式員每日都要面對的問題:遞歸、驗證、證明和布爾代數。這是一本很出色的讀物,難度不大,偶爾有挑戰,一旦你要鏖戰到底,将是非常值得的。 – Jonik

推薦數:329

推薦數:297

推薦數:282

我認為沒有任何一本書能向這本書一樣影響了我的程式設計觀點。它明确地告訴你如何處理其他人的代碼,含蓄地教會你避免哪些(以及為什麼要避免)。- Wolfbyte

同意。很多開發人員讨論用幹淨的石闆來編寫軟體。但我想幾乎所有開發人員的某些時候是在吃其他開發人員的狗食。– Bernard Dy

我推薦Charles Petzold的《編碼》。在這個充滿工具和IDE的年代,很多複雜度已經從程式員那“抽取”走了,這本書一本開眼之作。 – hemil

對我影響最大的那本書是 Robert Pirsig 的《禅與機車維修藝術》。不管你做什麼事,總是要力求完美,徹底了解你手中的工具和任務,更為重要的是,要有樂趣(因為如果你做事有樂趣,一切将自發引向更好的結果)。 – akr

Demarco 和 Lister 表明,軟體開發中的首要問題是人,并非技術。他們的答案并不簡單,隻是令人難以置信的成功。第二版新增加了八章内容。 – Eduardo Molteni

雖然這本書可能有點偏題,但不管你信不信,這本書曾在計算機科學專業課程的閱讀清單之上。一個優秀的角色模型,一本有關好奇心的優秀書籍。 – mike511

此書第二版教你如何編寫漂亮并高效的代碼,雖然這是一本Java書,但其中有很多跨語言的理念。 – Marcio Aguiar

這兩本是LISP的英文書,尚無中文版。美國東北大學網站上也有電子版。

本書是基于衆多商務案例,講述如何建立更好的、高客戶忠誠度的軟體産品和基于軟體的高科技産品的書。本書列舉了很多真實可信的實際例子,說明目前在軟體産品和基于軟體的高科技産品中,普遍存在着“難用”的問題。作者認為,“難用”問題是由這些産品中存在着的高度“認知摩擦”引起的,而産生這個問題的根源在于現今軟體開發過程中欠缺了一個為使用者利益着想的前期“互動設計”階段。“難用”的産品不僅損害了使用者的利益,最終也将導緻企業的失敗。本書通過一些生動的執行個體,讓人信服地講述了由作者倡導的“目标導向”互動設計方法在解決“難用”問題方面的有效性,證明了隻有改變現有觀念,才能有效地在開發過程中引入互動設計,将産品的設計引向成功。

本書雖然是一本面向商務人員而編寫的書,但也适合于所有參與軟體産品和基于軟體的高科技産品開發的專業人士,以及關心軟體行業和高科技行業現狀與發展的人士閱讀。

如果你不是程式員,閱讀此書可能會很有趣,但如果你已經是個程式員,可能會有點乏味。

It is useful regardless operating system you use. – J.F. Sebastian

不管你使用什麼作業系統,這本書都很有用。 – J.F. Sebastian

45個習慣,分為7個方面:工作态度、學習、軟體傳遞、回報、編碼、調試和協作。

每一個具體的習慣裡,一開始提出一個謬論,然後展開分析,之後有正隊性地提出正确的做法,并設身處地地講出了正确做法給你個人的“切身感受”,最後列出幾條注意事項,幫助你修正自己的做法(“平衡的藝術”)。

前面已經提到的很多書都啟發了我,并影響了我,但這本書每位程式員都應該讀。它向我展示了單元測試和TDD的重要性,并讓我很快上手。 – Curro

我不關心你的代碼有多好或優雅。如果你沒有測試,你或許就如同沒有編寫代碼。這本書得到的推薦數應該更高些。人們讨論編寫使用者喜歡的軟體,或既設計出色并健壯的高效代碼,但如果你的軟體有一堆bug,談論那些東西毫無意義。– Adam Gent

取決于你所追求的目标。我喜歡《代碼大全》是因純程式設計,《點石成金》是一本有關UI設計的卓越書籍。 – Justin Standard

【更新】:2012年8月17日19:08:39

最近有其他網站轉載此文,但标題被改為《一個合格的程式員應該讀的30本書》。這标題改的不好,偏離原文意思了。況且上文中不止提到了30本書。

今日重看 SO 那個原帖,發現于今年年初被關閉了。不過有人做了彙總,把其他回複中提到的書籍,放在投票數最高的回複中。

後語