那些影響了幾代程序員的編程書籍
想要成為一名更加優秀的程序員,我需要讀書么?需要讀什么書?
其實,在我成為軟件工程師之前,我也問了許多導師這個問題,也收到了很多建議,我也從這些建議當中學習到很多東西,漸漸地,我也總結出來想要成為一名頂級開發人員,哪些書籍是必讀的。
這些書并不會立馬使你成為一名出色的程序員,但它們確實是影響了無數程序員的書籍,閱讀這些書籍可以幫助開發人員避免在職業生涯早期中犯下一些重大錯誤。以下就是書單詳情:
1. 《修改代碼的藝術》
我非常喜歡這本書,因為每個軟件開發人員,在他們職業生涯的某個階段都需要面對遺留代碼,Michael Feathers提供了詳細的策略,可以更加有效地處理大量未經測試的遺留代碼庫,本書借鑒了Michael為其著名的Object Mentor專題研討會創作的材料,深入剖析修改遺留代碼的各種方法和策略,從理解遺留代碼、為其編碼測試、重構及增加特性等方面給出大量實用建議,是所有程序開發人員必讀之作。
2. 《人月神話》
這本書很經典,即便出版這么久仍然與軟件產品開發相關,如果你從事軟件開發工作,這本書是必讀之書,書中最有價值的部分,我覺得是【未雨綢繆】,雖然目標都是為了創建一個更好、更大、更強的軟件,但是不得不承認,許多構建的部分必須被丟棄重新構建,而且這是很常見的,因此為變更計劃組織架構是非常常見的事。
本書內容來自Brooks博士在IBM公司SYSTEM/360家族和OS/360中的項目管理經驗,該項目堪稱軟件開發項目管理的典范。
3. 《設計模式》
如果你打算成為一個系統的架構師,那這本書你可能需要仔細閱讀一下,這本書被譽為最偉大的軟件開發書籍之一,書中介紹了多年來開發中許多不同的設計模式,以此幫助軟件工程師避免和處理一些常見問題,遵循本書的原則,可以幫助你創建更高質量、更靈活、更可維護的軟件。
4. 《編程珠璣》
這本書與名單上的其他書稍有不同。可以說這本書幫助一個人“像程序員一樣思考”。《編程珠璣》是15個欄目的概要,以前發表在世界計算機界名刊《ACM通訊》,這些專欄涵蓋了與編程相關的廣泛主題:從需求收集到性能調優。重點主要放在編碼技術和算法上。
每一欄都被重新組織成一章。章節通常以提出一個實際問題開始。然后提出各種不同的解決方案,寫作風格清晰有趣。
《編程珠璣》并不是一本教授新編程概念的普通書籍。雖然它包含了一些很好的,有時甚至是很新穎的想法,但這本書的目的不是教一些新的東西,而是幫助你成為一個更好的問題解決者。
5. 《編碼》
這本書清理了創建和開發復雜系統的大量障礙。現在有太多的抽象,以至于開發人員有時不知道底層的細節。你一定意識不到,其實你的工作中無時不刻都在運用本書的內容,不過我覺得能夠理解自己是在什么基礎上構建整個項目是很有必要的,當你想要了解這些知識并深入研究軟件或硬件來修復Bug的時候,這本書可能派的上用場,Charles Petzold的這本書介紹了計算機工作原理的方方面面,從從十進制、八進制、二進制到高級語言,解釋了基于包的通信協議和TCP,許多章節都和硬件有關。
6. 《計算機程序設計藝術》
這是另一個經典。這是由著名的計算機科學家Donald Knuth教授編寫的,并得到了業界許多頂級程序員的高度贊揚。甚至比爾·蓋茨也說:
如果你認為自己真的是一個很好的程序員……讀讀[Knuth的]《計算機編程的藝術》……如果你能讀完全部內容,你絕對要給我發一份簡歷。
這本書從基本的編程概念和技術開始,然后更側重于信息結構——計算機內部信息的表示、數據元素之間的結構關系以及如何有效地處理它們。基本應用于模擬,數值方法,符號計算,軟件和系統設計。
7. 《重構》
Martin Fowler的《重構》是關于改進現有代碼的設計。它是這樣一種改變軟件系統的過程:它不改變代碼的外部行為,但改進其內部結構。有了重構,你甚至可以把一個糟糕的設計改造成一個良好的設計。本書對重構的原則進行了全面的討論,包括在哪里發現重構的機會,以及如何設置所需的測試。還有一個包含40多種已被證實的重構的目錄,其中詳細說明了何時以及為什么要使用這種重構,如何一步步地實現它,并舉例說明了它是如何工作的。這本書是用Java作為其主要語言編寫的,但其思想適用于任何OO語言。
8. 《代碼整潔之道》
Bob叔叔撰寫的《代碼整潔之道》共分為三個部分。第一部分描述了編寫干凈代碼的原則、模式和實踐。第二部分包括幾個越來越復雜的案例研究。每個案例研究都是一個清理代碼的練習——將有一些問題的代碼庫轉換為可靠且有效的代碼庫。第三個部分是味道與啟發,這是一個單一的章節,包含一系列啟發和案例研究,最后是一個知識庫,它描述了我們在編寫、讀取和清理代碼時的思維方式。
9. 《算法導論》
這必須是理解和使用算法的最好的一本書。有些關于算法的書雖然嚴謹但不完整,還有一些雖然涉及面廣,但卻不夠嚴謹。《算法導論》兼具了嚴謹性和全面性。這本書涵蓋了廣泛又深入的算法,使得書中的設計和分析適合所有層次的讀者。每個章節都相對獨立,都可以作為一個學習單元。算法用英語和偽代碼描述。講解的方式簡單基礎,但有不失內容的深度和材料的嚴謹性。第一版不僅廣泛成為了世界各地高校的教材,還成為了專業人士的標準參考書。第二版新增了算法,概率分析,隨機算法,線性規劃的章節。
10. 《計算機程序的構造和解釋》
本書以工程學為導向,通過分析嚴謹的方法來解決問題和編程技術,強調通過不同方式來發揮核心作用,以處理計算模型中的時間。它獨特的方法使它適合介紹計算機科學課程,以及編程語言和程序設計。這本書進一步解釋了四種最著名的編程語言范例——命令式、面向對象、基于邏輯和應用程序編程。
11. 《程序員修煉之道》
這是我讀的最早的編程書籍之一。雖然這本書是在1999年寫的,但到如今已然有用,程序員是訓練有素的工匠,他們使用一組工具(編輯器、對象管理器、版本跟蹤器)來創建某種產品(程序),這些產品(程序)將在某些環境中運行(硬件程序集上的操作系統),與其他任何一門手藝一樣,計算機編程產生了大量的智慧,而這些智慧大多不是在大學或認證課程中教授的。在《程序員修煉之道》中
12. 《代碼大全》
如果你想成為一名偉大的軟件工程師,那么這本書是值得一讀的,這本書被廣泛認為是編程的最佳實踐指南之一,Steve McConnell的《代碼大全》幫助開發人員編寫更好的軟件已經超過十年了。現在這本經典的書已經完全更新和修訂了,并加入了最前沿的實踐——以及數百個新的代碼樣本——來說明軟件構建的藝術和科學。
McConnell將最有效的技術和必須知道的原則整理成清晰、實用的指導。無論你的經驗水平、開發環境或項目大小如何,本書都將為你提供有用的信息并激發你的思考——并幫助你構建最高質量的代碼。