如果是計算機科班出身的程序員,以下的六門課將是大學四年中會學的最最重要的六門課,可以說這六門課構成整個計算機科學的基礎。
為了深刻理解這幾門基礎,我踩過無數的坑,終於總結出了一篇精選的書單。這么說吧,這篇書單的含金量高到我都想傳給我兒子。如果能把以下列出的這幾門課對應的這幾本教材都讀懂、吃透、融會貫通,那么至少,在未來的學習和工作生涯中,你將會感覺幸福的多。
1. 計算機組成原理(Computer Organization Concepts):
- 《Computer Organization and Design: The Hardware/Software Interface》
- 《Computer Architecture: A Quantitative Approach》
- 《Computer Systems: A programmer's Perspective》
三本書的難度依次遞增,建議從上往下看。這三本啃透,計算機的上上下下里里外外就都門兒清了。
推薦和王爽的《匯編語言》一起看,有奇效。
2. 數據結構與算法(Data Structure and Algorithm):
- 《Data Structure and Algorithm in C》-- 標簽:數據結構,C
- 《Algorithm》-- 標簽:傳說中的大紅書,java
- 《Introduction to Algorithms》-- 標簽:傳說中的算法導論
推薦閱讀順序,從上往下,《Data Structure and Algorithm in C》和《Computer Organization and Design: The Hardware/Software Interface》一起看能事半功倍。
3. 操作系統(Operation System):
- 《Modern Operating System》-- 標簽:作者大神(Andrew S. Tanenbaum & Herbert Bos),一本足矣
如果時間充足,大膽地寫一個mini操作系統吧,只有這樣才能把它的所有吃透。
4. 編譯原理 (Compiler Concepts):
- 《Enhineering a Compiler》-- 標簽:傳說中的寫編譯器
親自碼!親自碼!親自碼!重要的話說三遍。
如果時間充足,大膽地寫一個mini編譯器吧,只有這樣才能把它的所有吃透。
5.計算機網絡(Computer Network):
- 《Computer Network》-- 標簽:又見Andrwes S. Tanenbaum
6.數據庫相關(Database):
- 《Database System Concepts》-- 標簽:經典,基石
如果時間充足···好吧我知道你沒那么多時間,不過寫一個mini的數據庫系統(好吧,從文件管理系統開始)確實也是一件特別有意思的事情。
除了王爽的《匯編語言》(同樣是神作,強烈推薦),其他所有的教材都推薦英文原版閱讀。語言關是避無可避的一道門檻,它關系着技術和事業的發展瓶頸。不要偷懶,浴火重生吧。
如果按照上面的規划踏實地完成下來,在所有的書讀完后,你還會有三個重量級的項目經歷在手中,寫過編譯器,寫過數據庫,寫過操作系統。哇塞,感覺簡直吊炸天了有木有!
雖然這三個底層的項目都是mini的,肯定不會有啥商業價值,但那將升華你的技術水平。自此以后,你看到的將完全是另一個世界,那是萌新的你當時原來可望而不可即的世界,那是大神們的世界。嗯,一起向着那個夢想中的世界努力吧。
以后再推薦和計算機所需的數學基礎教材。也會更新一些我的讀書筆記和隨筆。慢慢來,不着急。