少有程序員讀的書

原文Books Programmers Don’t Really Read
做者:billthelizard 翻譯賴信濤 責編:仲培藝html

馬克吐溫說過,經典的小說就是大多數人都想讀,可是不多有人花時間去讀的小說。對於編程類的書來講,差很少也是這樣。java

StackOverflow以及其它一些編程論壇上,常常會有人問有哪些適合程序員的書。一樣的問題常常會屢次被人用不一樣的方式提出來。相同的書老是居於榜首,不如花些時間來看看你們通常都推薦什麼書。程序員

大多數程序員都會去讀的書

  1. Code Complete(代碼大全)
  2. The Pragmatic Programmer
  3. C Programming Language (2nd Edition)(C編程語言)
  4. Refactoring: Improving the Design of Existing Code(重構,改善既有代碼的設計)
  5. The Mythical Man-Month(人月神話)
  6. Code: The Hidden Language of Computer Hardware and Software
  7. Head First Design Patterns(深刻淺出設計模式)
  8. Programming Pearls(編程珠璣)
  9. Effective Java (2nd Edition) or Effective C++
  10. Test Driven Development: By Example

我本身已經讀過了上面全部的書,因此我很是相信,不少中級程序員也都讀過了。若是你對編程有興趣,而且在讀這篇博客,那麼我相信這些書你也都已經讀過了。我不會仔細地去解釋上面的每一本,可是我想說,這些書都聚焦於某一個方面,而且是這個領域的佼佼者。出版者很清楚他們面向的讀者——那些想要提升自身技能的程序員。面試

除了上面的這些以外,還有一些編程類的書是被反覆推薦的,可是卻不多有人花時間去讀。我稱這些書爲「程序員們的讀書計劃」。我並非說,推薦這些書的人都沒有讀過,我只是想說,表達出想讀的意願的人絕對要比真正讀過的人多。算法

程序員們的讀書計劃

Introduction to Algorithms (CLRS,算法導論)編程

這本書的標題多是有史以來最具備誤導性的。此書被普遍地用於大學做爲教材,以及本科生等級的算法課程。因此,幾乎全部上過算法課的程序員都會有一本CLRS。然而,除非你是一個計算機科學專業的研究生(還得是算法領域的),我很懷疑你是否是讀過了其中三個章節。設計模式

我說標題具備誤導性是由於,「導論」一詞讓不少人相信,這本書是爲初學者準備的。然而,並非。這本書是對算法很是深刻的書,請不要再推薦給初學者了。框架

Compilers: Principles, Techniques, and Tools (the Dragon Book,編譯原理)編程語言

龍書涵蓋了編譯器的各個方面,包括詞法分析、語法分析、類型檢查、代碼優化以及不少高級話題。請不要給只要處理一個包含了簡單數學公式的字符串的初學者推薦這本書了。除非你真的須要實現一個編譯器(或解釋器),否則你可能並不須要神龍的力量。給想要作文本處理的人推薦這本書只能證實你根本沒讀過。工具

The Art of Computer Programming(TAOCP,計算機程序設計藝術)

我常常聽人推薦說這本書是「程序員必讀書目」。我認爲這並不合適。在把我拉上絞刑架以前,請容我辯解。計算機程序設計藝術不是一本適合從頭讀到尾的書,而適合做爲參考查閱。將它擺在本身的書架上,看起來會賞心悅目,但實際上你閱讀它的頻率會很低,一般會花不少年纔讀完。

可是,手頭有一本TAOCP做爲參考查閱的工具書仍是不錯的,我就有一本。當我沒有頭緒的時候,就會求救於TAOCP,它老是能帶給我靈感。可是,通常我都將它做爲最後的救命稻草,由於它晦澀難懂,很是學術,並且例子都是用匯編語言寫的。從積極的方面講,若是你想找一個問題的解決方案,可是在TAOCP中找不到(僅限於已經發布的章節),那麼所謂的「解決方案」多半是不存在了。此書在所談論的領域涉及的內容很是全面。

Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four,設計模式:可複用面向對象軟件的基礎)

《設計模式》這本書是這個列表裏惟一我從頭讀到尾的書,因此把這本書放在哪一個列表裏,我糾結了好久。最後出如今這裏,並非說這本書不多有人讀,我相信不少程序員讀過,只是我相信,內心一直打算讀的人確定比真正讀過的人要多得多。

這本書的主要問題是,它所談論的問題基本上都很常見。初學者從維基百科上能輕鬆讀到這本書的不少部分,而後就能夠在面試中說他們讀過這本書了。這就是爲何單例設計模式幾乎成了全局變量。若是你們都去讀Gang of Four原版,那麼就不會有人再把全部17種設計模式塞到一個框架裏。Gang of Four最好的部分是每一章節的最後,都會有一個擴充小結,總結使用此設計模式最恰當的地方。惋惜的是,不少別的地方看到的有關設計模式的資源都將這部分遺漏了。

The C++ Programming Language

這本書是一本編程語言的參考手冊,而不是新手的入門書。雖然有大量的證據能夠代表,的確很多人讀完了這本書——否則的話,今天咱們就不會有這麼多C++的編譯器可供選擇。

初學者(或者精通其餘編程語言的專家)若是想要學習C++,不要直接讀The C++ Programming Language,推薦他們讀C++ Primer

相關文章
相關標籤/搜索