【伯樂線上譯註】:本文文章是「Coding by the Book」系列中的一篇。它的姊妹文章是《從書本學習程式設計的 5 個建議》和《程式設計師如何選擇程式設計技術書?》。
正如程式設計的趨勢和各種語言,程式設計書也在不斷更新換代。不過以下的7本經典書籍經受了時間的考驗。有些書比其他的書面世的晚,但是這些書為新人還是有經驗的程式設計師都提供了深入的見解。
1.《人月神話:軟體工程論文集》(週年第二版) 作者:**Frederick Brooks, Jr.
這是一本比較古老的書(它的第一版誕生於1975年!),本書在我的書架上還儲存著一本,因為它所傳達的理念到現在仍然適用。複雜的專案管理仍然是一項很大的挑戰,本書不僅適用於軟體工程,在其他技術領域也同樣適用,比如微機處理器設計。事實上本書在很多程式設計暢銷書排行榜上穩居前列,同時很多大學也在用它作為教材使用。
2.《計算機程式設計藝術》 作者:Donald Knuth
理解為什麼現代計算機程式程式碼都是以這樣一種形式存在是每一個電腦科學家都應該學習的東西。這一整套書詳細的闡述了這方面的原因,它的資訊量太大,以至於無法在一卷中覆蓋所有資訊。因為Knuth在計算機程式設計方面具有至關重要的作用,所以在許多計算機課程中會涉及到他的理論。更重要的是,Kunth的理論影響了幾乎所有的現代技術領域,因為他幫助開發的許多演算法能用於其他領域的研究,包括資料科學領域。
3.《演算法導論》第三版 作者:Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein
許多以團隊所編寫的書會缺乏專注點而且會包含相互矛盾的觀點,但本書卻沒有這個問題。相反,本書詳細和全面的闡述了將演算法應用於電腦科學和其他以數學為基礎的技術中的觀點。它對於演算法的嚴謹效能夠讓你很好的理解為何一種演算法適用於某種特定的方式。
4.《編碼:隱匿在計算機軟硬體背後的語言》 作者:Charles Petzold
許多現代的程式設計師並不完全理解他們編寫的程式碼與底層硬體之間的聯絡。這是因為編譯器、類庫和其他工具將弱化了這層聯絡使它變得不可見。但是那些設計語言、編譯器、類庫和其他工具的人通常對於程式碼和底層硬體的關係有很好的理解,因為他們已經代勞了理解程式碼的工作。這本書的目的就是用於闡述這層聯絡。
5.《修改程式碼的藝術》作者:Michael Feathers
在現實世界中,許多開發者在更新其他人所寫程式碼花的時間遠遠超過編寫新程式碼所花的時間。不幸的是,大多數學校和書籍的切入點都是從開發者編寫新程式碼開始的。這本書可以幫助開發人員在舊程式碼中產生更好的應用程式。本書還更進一步的幫助開發者在修改程式碼時得到更深層的見解,通過這種方式能夠讓開發者再編寫新程式碼時寫出很酷的程式。
6.《人件集:人性化的軟體開發》(第三版) 作者:Tom DeMarco,Timothy
我儘量在我的書中解釋應用程式在於人,而不在於軟體或者是硬體。當一個開發團隊過於沉浸於技術時,這個應用程式基本宣告失敗了。這本書主要討論人——關於如何管理團隊並充分利用成員的技能來建立能取悅使用者的應用程式。
7.《程式設計師修煉之道》 作者:Andrew Hunt ,David Thomas
是什麼決定了一個程式設計師成為一名能使程式碼變成魔法的藝術家,還是平庸的碼農?本書闡述了其中的差別。更重要的是,本書提供了大量實用的程式設計技巧,來幫你從一個碼農轉變為軟體大師。新鮮和有趣的寫作手法,讓本書非常易於閱讀。