最常被程序員們謊稱讀過的計算機(jī)書籍
馬克·吐溫曾經(jīng)說過,所謂經(jīng)典小說,就是指很多人希望讀過,但很少人真正花時間去讀的小說。這種說法同樣適用于“經(jīng)典”的計算機(jī)書籍。
在Stack Overflow(以及其它很多軟件論壇)上,諸如”程序員最應(yīng)該讀的計算機(jī)書籍有哪些?“這樣的問題會周期性的出現(xiàn)。這樣的問題不斷的被提出、被回答,只是形式不同罷了。相同的幾本書總是會出現(xiàn)在清單的前幾名內(nèi),所以,如果想知道人們談?wù)摰亩际切┦裁?,你有必要去讀一讀這些書的。
大多數(shù)程序員真正讀過的計算機(jī)書籍
-
重構(gòu):改善既有代碼的設(shè)計(Refactoring: Improving the Design of Existing Code)
-
編碼——隱匿在計算機(jī)軟硬件背后的語言(Code: The Hidden Language of Computer Hardware and Software)
-
Effective Java中文版(Effective Java (2nd Edition))or Effective C++(第三版)中文版
上面的這些書我自己都讀過,所以我不難相信很多不是很優(yōu)秀的程序員也都讀過它們。如果你對編程有足夠的興趣,能夠來到這里讀這篇博客,你很可能讀過其中的大部分,甚至還有很多不在這個清單中的,所以我就不浪費(fèi)時間每本書都評論一番了。我想說的是,這個清單上的每本書都是它各自領(lǐng)域里的奇書。所以,很多有愿望不斷提高自己的編程技術(shù)的程序員都讀過這些書,這就不足為怪了。
在人們備受推崇的計算機(jī)書籍中,還有一類書受到了獨(dú)特的待遇。我稱下面這個清單為“最常被程序員們謊稱讀過的計算機(jī)書籍”。這并不是說推薦這些書的人都沒有真正讀過它們。我只是有相當(dāng)?shù)男判膽岩筛嗟娜酥皇窃诳陬^上宣稱讀過下列書籍,而實際上很少人真正讀過它們。下面就是這個清單。
最常被程序員們謊稱讀過的計算機(jī)書籍
-
算法導(dǎo)論(Introduction to Algorithms)(CLRS) 這本書的名稱是所有出版過的計算機(jī)書籍中最讓人誤解一個。它被廣泛的使用在很多大學(xué)里,通常被當(dāng)作畢業(yè)生必需的算法課程。于是,只要在大學(xué)里上過計算機(jī)課程的學(xué)生幾乎都有一本這樣的書。然而,除非你擁有計算機(jī)碩士學(xué)位(而且是算法研究領(lǐng)域的),我懷疑你頂多只讀過算法導(dǎo)論(Introduction to Algorithms)里節(jié)選的幾章內(nèi)容。這個書名讓人誤解,是因為”Introduction”這個詞讓人以為它很適合初級程序員。實際上不是。這本書對算法做盡可能詳盡綜合的介紹,就像其它一些隨處可見的類似的書一樣。請不要再把這本書推薦給初學(xué)者。
-
編譯原理(Compilers: Principles, Techniques, and Tools)(the Dragon Book).這本恐龍封面的書涵蓋了開發(fā)一個編譯器你所需要的全部的知識。它的內(nèi)容包括詞匯分析,語法分析,類型檢查,代碼優(yōu)化,以及其它很多高深的題目。請不要把這本書推薦給初級程序員,他們需要的只是分析簡單的包含數(shù)學(xué)公式或HTML的字符串。除非你真的需要實現(xiàn)一個能夠?qū)嵱玫木幾g器(或解釋器),你根本不需要掌握這本“恐龍”書的全部強(qiáng)大威力。把它推薦給一個遇到簡單文本分析問題的人,這證明你根本沒有讀過它。
-
計算機(jī)程序設(shè)計藝術(shù)(The Art of Computer Programming)(TAOCP) 我經(jīng)常聽到人們把這本書描述為“每個程序員必讀”的系列計算機(jī)書籍。我認(rèn)為這明顯不是實情。在我說出這樣大不敬的話、被你們用板磚拍死之前,請讓我做解釋一下。這不是一本讓你一頁一頁翻著讀的書。這是一本參考大全書。把它放在你的書架上看起來會很不錯(實際上也它確實很好),但如果想把它通讀一遍,你需要幾年時間,而且最后什么都沒記住。這并不是說手邊放這樣一本書沒有什么價值。它是一本參考書,當(dāng)我遇到難題,走投無路時,很多次我都在這本書里找到辦法。但這本書終究是被我當(dāng)作參考書。它復(fù)雜難懂,很理論,里面的例子都是匯編語言的。好的一面是,如果你想在這本書里尋找針對某一問題的解決方案,如果你找不到,那就說明這個問題無解。它是一本對它所涉及到的領(lǐng)域做了最最詳盡介紹的一本書。
-
Design Patterns: Elements of Reusable Object-Oriented Software(Gang of Four)這本書是唯一一本在這個清單里我從頭到尾讀過的書,讀的結(jié)果是,我不知道該把這本書歸到哪個類別。它出現(xiàn)在這個清單里,并不是因為我認(rèn)為只有很少人真正讀過它。很多人都讀過。只是因為有更多推薦過這本書的人自己卻沒有讀過。Design Patterns這邊書的問題在于,很多書里給出的信息,你在其它很多地方都能看到。這樣就使得一個初學(xué)者在維基百科上讀了幾篇關(guān)于設(shè)計模式的內(nèi)容后,就敢在面試中宣稱自己看過這本書。這就是為什么Singleton成了一種新的全局變量的原因。如果有更多的人花時間讀過這本也叫做Gang of Four的書的原著,那世界上就不會有這么多人會把17種設(shè)計模式硬塞到一個日志(logging)框架里了。這本書最精彩的部分是每章里描述如何正確的使用一種模式的段落。遺憾的是,這些精華卻在很多其它設(shè)計模式資料里被漏掉了。
-
C++程序設(shè)計語言(The C++ Programming Language)這本書不像一本編程教材,更像一本編程語言參考。有很多的跡象表明有人確實讀過這本書,否則我們不可能有這么多的C++ 編譯器可選擇。編程初學(xué)者(或者甚至其它語言的專家),如果想學(xué)C++,不應(yīng)該直接去啃C++程序設(shè)計語言(The C++ Programming Language)這本書。告訴他們?nèi)プx《C++ Primer中文版》。
正如我之前說的,我知道你們當(dāng)中會有一些人真正的讀過這些書。那這篇文章不是針對你的,針對的是那些企圖通過假裝讀過這些書來表現(xiàn)自己的民眾。 如果你自己沒有讀過這些計算機(jī)書籍,請不要推薦給別人。這樣做會耽誤別人的時間,誤人子弟,因為一些閱歷更豐富的人可能會有更好的書(更針對某一領(lǐng)域,更容易理解,跟某種編程語言或某種編程水平更契合的書)來推薦。除此之外,你也能避免被那些真正讀過計算機(jī)程序設(shè)計藝術(shù)(The Art of Computer Programming)的人用MMIX知識給拷問住造成的尷尬(如果你不知道我在說什么,那我指的就是你)。
英文:Books Programmers Claim to Have Read
原文鏈接:http://www.aqee.net/books-programmers-dont-really-read/
【編輯推薦】
- 致Play Framework開發(fā)者們的一封信
- 為什么我不再做.NET開發(fā)
- 程序員需要謹(jǐn)記的九大安全編碼規(guī)則
- C#開發(fā)高性能Log Help類設(shè)計開發(fā)
- 數(shù)字女巫Gwen的女程序員之路