|
英文原文:Books Programmers Claim to Have Read
馬克·吐溫曾經(jīng)說過,所謂經(jīng)典小說,就是指很多人希望讀過,但很少人真正花時間去讀的小說。這種說法同樣適用于“經(jīng)典”的計算機書籍。
在 Stack Overflow (以及其它很多軟件論壇)上,諸如”程序員最應(yīng)該讀的計算機書籍有哪些?“這樣的問題會周期性的出現(xiàn)。這樣的問題不斷的被提出、被回答,只是形式不同罷了。相同的幾本書總是會出現(xiàn)在清單的前幾名內(nèi),所以,如果想知道人們談?wù)摰亩际切┦裁?,你有必要去讀一讀這些書的。
大多數(shù)程序員真正讀過的計算機書籍
- 代碼大全(Code Complete)——兩屆 Software Jolt Award 震撼大獎得主!
- 程序員修煉之道(The Pragmatic Programmer)
- C程序設(shè)計語言( C Programming Language)(第 2 版)
- 重構(gòu):改善既有代碼的設(shè)計(Refactoring: Improving the Design of Existing Code)
- 人月神話(The Mythical Man-Month)
- 編碼——隱匿在計算機軟硬件背后的語言(Code: The Hidden Language of Computer Hardware and Software)
- Head First 設(shè)計模式(Head First Design Patterns)
- 編程珠璣(Programming Pearls)
- Effective Java 中文版(Effective Java (2nd Edition))or Effective C++(第三版)中文版
- Test Driven Development: By Example
上面的這些書我自己都讀過,所以我不難相信很多不是很優(yōu)秀的程序員也都讀過它們。如果你對編程有足夠的興趣,能夠來到這里讀這篇博客,你很可能讀過其中的大部分,甚至還有很多不在這個清單中的,所以我就不浪費時間每本書都評論一番了。我想說的是,這個清單上的每本書都是它各自領(lǐng)域里的奇書。所以,很多有愿望不斷提高自己的編程技術(shù)的程序員都讀過這些書,這就不足為怪了。
在人們備受推崇的計算機書籍中,還有一類書受到了獨特的待遇。我稱下面這個清單為“最常被程序員們謊稱讀過的計算機書籍”。這并不是說推薦這些書的人都沒有真正讀過它們。我只是有相當(dāng)?shù)男判膽岩筛嗟娜酥皇窃诳陬^上宣稱讀過下列書籍,而實際上很少人真正讀過它們。下面就是這個清單。
最常被程序員們謊稱讀過的計算機書籍
- 算法導(dǎo)論(Introduction to Algorithms)(CLRS)這本書的名稱是所有出版過的計算機書籍中最讓人誤解一個。它被廣泛的使用在很多大學(xué)里,通常被當(dāng)作畢業(yè)生必需的算法課程。于是,只要在大學(xué)里上過計算機課程的學(xué)生幾乎都有一本這樣的書。然而,除非你擁有計算機碩士學(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器(或解釋器),你根本不需要掌握這本“恐龍”書的全部強大威力。把它推薦給一個遇到簡單文本分析問題的人,這證明你根本沒有讀過它。
- 計算機程序設(shè)計藝術(shù)(The Art of Computer Programming)(TAOCP)我經(jīng)常聽到人們把這本書描述為“每個程序員必讀”的系列計算機書籍。我認(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)自己的民眾。 如果你自己沒有讀過這些計算機書籍,請不要推薦給別人。這樣做會耽誤別人的時間,誤人子弟,因為一些閱歷更豐富的人可能會有更好的書(更針對某一領(lǐng)域,更容易理解,跟某種編程語言或某種編程水平更契合的書)來推薦。除此之外,你也能避免被那些真正讀過計算機程序設(shè)計藝術(shù)(The Art of Computer Programming)的人用 MMIX 知識給拷問住造成的尷尬(如果你不知道我在說什么,那我指的就是你)。
相關(guān)鏈接:http://news.cnblogs.com/n/138021/
it知識庫:最常被程序員們謊稱讀過的計算機書籍,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。