計算機書單閱讀推薦
1. 程式語言基礎
1.1. C程式設計語言
《C程式設計語言》(The C programming language) 是 Brian W.Kernighan(布萊恩·克尼漢)和 Dennis M.Ritchie(丹尼斯·裡奇)編寫得傳世之作,作者是為了重寫UNIX作業系統而發明得C語言,這本書十分簡練,卻頗讓人啟發。可以拿來當作C語言的說明書了。
1.2. C和指標
《C和指標》(Pointers on C) 是 Kenneth·Reek (里科)編寫的一本關於指標的書籍,是C語言進階之路的必讀之作。本書詳細介紹了指標在C語言的具體應用以及各種奇技淫巧。
1.3. C專家程式設計
《C專家程式設計》
1.4. C++程式設計語言
《C++程式設計語言》 (The C++ programming language)是Bjarne Stroustrup(本賈尼斯 · 特勞斯特魯普)大佬編寫的C++開山之作。本書深入系統地討論了C++的設計思想,以及最新的C++程式設計技巧,對讀者可能有一定的要求,初學者可能更喜歡更具體的 《C++ Primer》
1.5. Effective C++:改善程式與設計的55個具體做法
《Effective C++:改善程式與設計的55個具體做法》 (Effective C++: 55 Specific Ways to Improve Your Programs and Designs)是Scott Meyers(斯科特 · 梅耶)總結的C++程式設計技巧,非常具有實用性和代表性。據說是C++學習的必讀之作。
1.6. More Effective C++:35個改善程式設計與設計的有效方法
《More Effective C++:35個改善程式設計與設計的有效方法》 (More Effective C++: 35 New Ways to Improve Your Programs and Designs)是Scott Meyers(斯科特 · 梅耶)編寫的C++程式設計技巧,比之前一本 《Effective C++》 更深入一些,但是確實大家程式設計中遇到的一些問題總結。
2. 資料結構與演算法
2.1. 演算法導論
《演算法導論》(Introduction to Algorithms)是MIT的四位大師(omas H.Cormen / Charles E.Leiserson / Ronald L.Rivest / Clifford Stein )為本科生編寫的演算法的導論教材。本書雖然叫導論,但是確非常深厚。全書選材經典、內容豐富、結構合理、邏輯清晰,對本科生的資料結構課程和研究生的演算法課程都是非常實用的教材,在IT專業人員的職業生涯中,本書也是一本案頭必備的參考書或工程實踐手冊。
這本書值得大家花上一年的時間仔細琢磨。
2.2. 具體數學
《具體數學》 (Concrete Mathematics)是Stanford老教授Donald E. Knuth 編寫的一本關於計算機方面的數學書籍。本書的內容也是比較深厚,但確實另外一套書籍 TAOCP 的background。不過確實非常值得一看的。
2.3. 計算機程式設計藝術(Volume1-4A)
《計算機程式設計藝術》 (The Art of Computer Programming)又稱 TAOCP,是Stanford老教授Donald E. Knuth編寫的一系列計算機程式設計的經典書籍。全書共有7卷,目前已經完成四卷。這套書是計算機歷史上的巔峰之作,也被評為20世紀人類歷史的十大傑作(書籍),說這套書為藝術是不為過的,作者為寫好這套書,發明了Latex編譯系統。本套書涵蓋了演算法的各個方面,是計算機方面的集大成者。非常值得拜讀。
相對而言,演算法導論就真的成為導論了。
3. 計算機體系結構
3.1. 深入理解計算機系統
《深入理解計算機系統》(Computer Systems: A Programmer’s Perspective)是CMU老系主任(Randal E.Bryant)為本科生編寫的計算機體系結構教材。本書不是關於作業系統的書籍,而是計算機組成原理的經典書籍。本書會告訴你硬體是怎麼工作的,以及如何系統地優化你的程式。強烈建議花個半年時間閱讀,肯定會收穫很多。
3.2. 計算機體系結構:量化研究方法
《計算機體系結構:量化研究方法》(omputer Architecture:A Quantitative Approach)是計算機體系結構兩位專家John L. Hennessy(Stanford前校長)和 David A. Patterson (Berkeley計算機系主任)編寫的計算機體系結構經典書籍。本書以MIPS為基礎,從硬體的角度介紹計算機體系結構的設計,非常值得拜讀。
3.3. 計算機組成與設計:硬體/軟體介面
《計算機組成與設計:硬體/軟體介面》(Computer Organization and Design: The Hardware/Software Interface)是計算機體系結構兩位專家John L. Hennessy(Stanford前校長)和 David A. Patterson (Berkeley計算機系主任)編寫的另外一本計算機體系結構經典書籍。本書以MIPS為基礎,從軟體的角度介紹計算機體系結構的設計。
4. 軟體體系結構設計思想
4.1. 設計模式:可複用面向物件軟體的基礎
《設計模式:可複用面向物件軟體的基礎》(Design Patterns: Elements of Reusable Object-Oriented Software)是 Erich Gamma / Richard Helm / Ralph Johnson / John Vlissides 等人編寫的軟體體系結構設計的開山之作。經典毋庸置疑,對於大型軟體開發設計的人員來說,非常值得學習。
5. Linux程式設計與開發
5.1. Linux程式設計
《Linux程式設計》(Beginning Linux Programming)是Neil Matthew / Richard Stones編寫的Linux程式設計的入門讀物,以前剛開始學程式設計的時候,看不太懂,不過現在看一邊卻覺得非常的基礎了。
本書對於學習Linux程式設計的人來說,確實非常經典的讀物。
5.2. UNIX環境高階程式設計
《UNIX環境高階程式設計》(Advanced Programming in the UNIX Environment)是由W.Richard Stevens編寫的一本關於Linux環境下的程式設計書籍。本書是被譽為UNIX程式設計 聖經。
可惜作者英年早逝,不然會給我留下更多的經典。
6. 計算機網路
6.1. TCP/IP詳解 (volume 1-3)
《TCP/IP詳解》(TCP/IP ILLustrated :Volume 1:The Protocols,Volume 2:The Implementation,Volumes 3:TCP for Transactions, Additional TCP Applications, The Unix Domain Protocols)是由已故電腦科學家W·Richard Stevens編寫的TCP/IP協議指南。本書是以UNIX環境編寫的書籍,全書介紹了一個簡單的TCP/IP協議棧的實現,是學習計算機網路的必讀之作。
6.2. UNIX網路程式設計 (volume 1-2)
《UNIX網路程式設計》(Unix Network Programming)是由已故UNIX網路專家W. Richard Stevens編寫的UNIX網路程式設計經典讀物,本書不同於 TCP/IP詳解,是從使用者程式的角度出發,設計和實現高效的網路程式設計技巧。
作業系統
現代作業系統
《現代作業系統》(Modern Operating Systems)是 Andrew S·Tanenbaum 編寫的作業系統經典讀物,本書側重於原理方面介紹作業系統的設計與考量。
作業系統設計與實現
《作業系統設計與實現》(Operating Systems:Design and Implementation)是 Andrew S·Tanenbaum 編寫的另一套作業系統經典讀物,本書介紹MNIX的設計與實現細節。MNIX最開始是為了給本科生教學設計的作業系統,也是啟發Linus設計Linux的原型系統。
Orange S:一個作業系統的實現
《Orange S:一個作業系統的實現》 是於淵編寫的一本國產作業系統實踐讀物,作者從只有二十行的引導扇區程式碼出發,一步一步地向讀者呈現一個作業系統框架的完成過程。書中不僅關注程式碼本身,同時關注完成這些程式碼的思路和過程。本書不同於其他的理論型書籍,而是提供給讀者一個動手實踐的路線圖。讀者可以根據路線圖逐步完成各部分的功能,從而避免了一開始就面對整個作業系統數萬行程式碼時的迷茫和挫敗感。書中講解了大量在開發作業系統中需注意的細節問題,這些細節不僅能使讀者更深刻地認識作業系統的核心原理,而且使整個開發過程少走彎路。
本書是為數不多的計算機領域國人編寫的書籍,值得拜讀。
編譯與連結
編譯原理,技術和工具
《編譯原理,技術和工具》 (Compilers:Principle,Techniques and Tools)是Alfred V.Aho,Monica S.Lam,Ravi Sethi 等 人編寫的編譯原理方面的經典書籍,別稱為龍書。
現代編譯原理:C語言描述
《現代編譯原理:C語言描述》(Modern Compiler Implementation in C)是Andrew W.Appel 和 Jens Palsberg 編寫的一本編譯原理方面的書籍,重視實踐,本書以C語言的一個子集為研究物件,實現了一個簡單的編譯工具。別稱為虎書
高階編譯器設計與實現
《高階編譯器設計與實現》(Advanced Compiler Design and Implementation)是Steven S.Muchnick等人編寫一本編譯方面的高階教材。別稱為鯨書
程式設計師的自我修養:連結、裝載與庫
《程式設計師的自我修養:連結、裝載與庫》 是潘愛民,俞甲子,石凡編寫的一本Linux平臺的編譯與連結方面的書籍,這也是為數不多的國人寫的經典書籍。
連結器和載入器
《連結器和載入器》(Linker and Loader)是關於連結與載入方面的經典書籍。不過現在好像沒有再出版了。