馬克·吐溫曾經說過,所謂經典小說,就是指很多人希望讀過,但很少人真正花時間去讀的小說。這種說法同樣適用于“經典”的計算機書籍。 在Stack Overflow(以及其它很多軟件論壇)上,諸如”程序員最應該讀的計算機書籍有哪些?“這樣的問題會周期性的出現。這樣的問題不斷的被提出、被回答,只是形式不同罷了。相同的幾本書總是會出現在清單的前幾名內,所以,如果想知道人們談論的都是些什么,你有必要去讀一讀這些書的。 大多數程序員真正讀過的計算機書籍 1、代碼大全2(Code Complete)——兩屆Software Jolt Award震撼大獎得主! 2、 程序員修煉之道(The Pragmatic Programmer) 3、 C程序設計語言( C Programming Language)(第2版) 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 設計模式(中文版) (Head First Design Patterns) 8、 編程珠璣(Programming Pearls) 9、Effective Java 中文版(Effective Java (2nd Edition))or Effective C 中文版第三版 10、Test-Driven Development By Example(英)or 測試驅動開發(中文版) 上面的這些書我自己都讀過,所以我不難相信很多不是很優秀的程序員也都讀過它們。如果你對編程有足夠的興趣,能夠來到這里讀這篇博客,你很可能讀過其中的大部分,甚至還有很多不在這個清單中的,所以我就不浪費時間每本書都評論一番了。我想說的是,這個清單上的每本書都是它各自領域里的奇書。所以,很多有愿望不斷提高自己的編程技術的程序員都讀過這些書,這就不足為怪了。 在人們備受推崇的計算機書籍中,還有一類書受到了獨特的待遇。我稱下面這個清單為“最常被程序員們謊稱讀過的計算機書籍”。這并不是說推薦這些書的人都沒有真正讀過它們。我只是有相當的信心懷疑更多的人只是在口頭上宣稱讀過下列書籍,而實際上很少人真正讀過它們。下面就是這個清單。 最常被程序員們謊稱讀過的計算機書籍 1、算法導論(Introduction to Algorithms)(CLRS)這本書的名稱是所有出版過的計算機書籍中最讓人誤解一個。它被廣泛的使用在很多大學里,通常被當作畢業生必需的算法課程。于是,只要在大學里上過計算機課程的學生幾乎都有一本這樣的書。然而,除非你擁有計算機碩士學位(而且是算法研究領域的),我懷疑你頂多只讀過算法導論(Introduction to Algorithms)里節選的幾章內容。這個書名讓人誤解,是因為”Introduction”這個詞讓人以為它很適合初級程序員。實際上不是。這本書對算法做盡可能詳盡綜合的介紹,就像其它一些隨處可見的類似的書一樣。請不要再把這本書推薦給初學者。 2、編譯原理 (Compilers: Principles, Techniques, and Tools)(the Dragon Book)。這本恐龍封面的書涵蓋了開發一個編譯器你所需要的全部的知識。它的內容包括詞匯分析,語法分析,類型檢查,代碼優化,以及其它很多高深的題目。請不要把這本書推薦給初級程序員,他們需要的只是分析簡單的包含數學公式或HTML的字符串。除非你真的需要實現一個能夠實用的編譯器(或解釋器),你根本不需要掌握這本“恐龍”書的全部強大威力。把它推薦給一個遇到簡單文本分析問題的人,這證明你根本沒有讀過它。 3、計算機程序設計藝術(第一卷) 、計算機程序設計藝術(第二卷) 、計算機程序設計藝術(第三卷) (The Art of Computer Programming)(TAOCP)我經常聽到人們把這本書描述為“每個程序員必讀”的系列計算機書籍。我認為這明顯不是實情。在我說出這樣大不敬的話、被你們用板磚拍死之前,請讓我做解釋一下。這不是一本讓你一頁一頁翻著讀的書。這是一本參考大全書。把它放在你的書架上看起來會很不錯(實際上也它確實很好),但如果想把它通讀一遍,你需要幾年時間,而且最后什么都沒記住。這并不是說手邊放這樣一本書沒有什么價值。它是一本參考書,當我遇到難題,走投無路時,很多次我都在這本書里找到辦法。但這本書終究是被我當作參考書。它復雜難懂,很理論,里面的例子都是匯編語言的。好的一面是,如果你想在這本書里尋找針對某一問題的解決方案,如果你找不到,那就說明這個問題無解。它是一本對它所涉及到的領域做了最最詳盡介紹的一本書。 4、設計模式-可復用面向對象軟件的基礎【Design Patterns: Elements of Reusable Object-Oriented Software(Gang of Four)】這本書是唯一一本在這個清單里我從頭到尾讀過的書,讀的結果是,我不知道該把這本書歸到哪個類別。它出現在這個清單里,并不是因為我認為只有很少人真正讀過它。很多人都讀過。只是因為有更多推薦過這本書的人自己卻沒有讀過。Design Patterns這邊書的問題在于,很多書里給出的信息,你在其它很多地方都能看到。這樣就使得一個初學者在維基百科上讀了幾篇關于設計模式的內容后,就敢在面試中宣稱自己看過這本書。這就是為什么Singleton成了一種新的全局變量的原因。如果有更多的人花時間讀過這本也叫做Gang of Four的書的原著,那世界上就不會有這么多人會把17種設計模式硬塞到一個日志(logging)框架里了。這本書最精彩的部分是每章里描述如何正確的使用一種模式的段落。遺憾的是,這些精華卻在很多其它設計模式資料里被漏掉了。 5、[C++ 程序設計語言(中文版)] (The C++ Programming Language)這本書不像一本編程教材,更像一本編程語言參考。有很多的跡象表明有人確實讀過這本書,否則我們不可能有這么多的C++ 編譯器可選擇。編程初學者(或者甚至其它語言的專家),如果想學C++,不應該直接去啃C++程序設計語言(The C++ Programming Language)這本書。告訴他們去讀《C++ Primer第四版》。 正如我之前說的,我知道你們當中會有一些人真正的讀過這些書。那這篇文章不是針對你的,針對的是那些企圖通過假裝讀過這些書來表現自己的民眾。 如果你自己沒有讀過這些計算機書籍,請不要推薦給別人。這樣做會耽誤別人的時間,誤人子弟,因為一些閱歷更豐富的人可能會有更好的書(更針對某一領域,更容易理解,跟某種編程語言或某種編程水平更契合的書)來推薦。除此之外,你也能避免被那些真正讀過計算機程序設計藝術(The Art of Computer Programming)的人用MMIX知識給拷問住造成的尷尬(如果你不知道我在說什么,那我指的就是你)。 來源: oschina、電子工程網 |
很多也只是匆匆瀏覽過,慚愧! |
很多都是匆匆瀏覽 |
很多都沒看多。。。 |
很多都是匆匆瀏覽 |
沒看過,遺憾 |
謝謝分享~ |
非常感謝樓主的分享! |
O(∩_∩)O謝謝 |