我這一生,從不知道哪位智者是根本不讀書的——沒有,沒有一我的。html
-- 投資大師芒格程序員
前言
自從開始自學編程以來,就一直但願有人指點該如何逐步的打牢基礎,該讀哪些書籍來加深對計算機科學的理解。最近,我在網上看到有人整理了一些知名程序員推薦的書籍,他們或是接受採訪,或是在本身的博客上,向你們推薦了本身認爲最有價值的編程書籍。以爲應該都是不錯的選擇,因此翻譯過來與你們分享。正則表達式
爲何要讀書?
當今,咱們時刻被筆記本電腦和iPhone包圍,致使忽視了人類歷史上最重要的技術之一:默默無聞的書籍。我不肯定是否是個人圈子過小,可是個人程序員朋友中,日常讀書的人確實不多。恕我直言,真是有點暴殄天物,由於書中提供了讓你大幅提高技能的可貴機會。算法
若是有人問你,「你是否願意付5000美圓,請世界上一名最偉大的程序員當你三個月的導師?」你會怎麼回答?極可能是「那太好啦!」。可是若是給你一樣的選擇,只是此次變成支付50美圓,可是你必須讀書,你還會願意嗎?編程
閱讀一本偉大的書籍,就像被一位偉大的導師呵護教導同樣。許多擁有豐富經驗的偉大程序員,選擇將他們的智慧凝聚到書本這種儘管不太防水,可是可攜帶性強的載體中,就是爲了給你提供閱讀的樂趣。你爲何很差好享用這場匯彙集體知識的盛筵呢?設計模式
下面是這個領域中一些頂級程序員的建議。請注意,其中一些書籍被反覆說起。已添加購買連接。api
Joel Spolsky
Joel Spolsky畢業於耶魯大學計算機系,目前是Fog Creek軟件公司的CEO。他的網絡日誌"Joel談軟件"(Joel on Software)很是有名,讀者人數能夠排進全世界前100名。網絡
他向你們推薦5本書,分別是:學習
- Peopleware: Productive Projects and Teams (人件)
- Rapid Development: Taming Wild Software Schedules (好像尚未中文版)
- Code Complete: A Practical Handbook of Software Construction , 2nd Edition(代碼大全2)
- The Pragmatic Programmer: From Journeyman to Master (程序員修煉之道:從小工到專家)
- The Mythical Man-Month: Essays on Software Engineering (人月神話)
Steve Yegge
Steve Yegge是Amazon的前員工,目前在Google工做,是《程序員的吶喊》一書的做者。google
他推薦下面這些書:
- The Pragmatic Programmer: From Journeyman to Master (程序員修煉之道:從小工到專家)
- Refactoring: Improving the Design of Existing Code (重構:改善既有代碼的設計)
- Design Patterns: Elements of Reusable Object-Oriented Software (設計模式:可複用面向對象軟件的基礎)
- Concurrent Programming in Java: Design Principles and Patterns (好像沒有中文版)
- Mastering Regular Expressions (精通正則表達式(第3版))
- The Algorithm Design Manual (算法設計手冊(第2版))
- The C Programming Language (C程序設計語言)
- The Little Schemer (關於Lisp語言的書,沒有中文版)
- Compilers: Principles, Techniques, and Tools (編譯原理)
Scott Hanselman
知名黑客。每一年都會在本身的博客上,整理推薦Windows平臺的軟件,博文很受人們推崇。他還運營着一個本身的播客。
他推薦了這些書:
- Code Complete: A Practical Handbook of Software Construction , 2nd Edition(代碼大全2)
- The Pragmatic Programmer: From Journeyman to Master (程序員修煉之道:從小工到專家)
- Programming Pearls (編程珠璣)
- Refactoring: Improving the Design of Existing Code (重構:改善既有代碼的設計)
- The Design of the UNIX Operating System (UNIX操做系統設計)
- Design Patterns: Elements of Reusable Object-Oriented Software (設計模式:可複用面向對象軟件的基礎)
Stack Overflow問答社區上的推薦
- Code Complete: A Practical Handbook of Software Construction , 2nd Edition(代碼大全2)
- The Pragmatic Programmer: From Journeyman to Master (程序員修煉之道:從小工到專家)
- Structure and Interpretation of Computer Programs (計算機程序的構造和解釋)
- The C Programming Language (C程序設計語言)
- Introduction to Algorithms (算法導論)
- Design Patterns: Elements of Reusable Object-Oriented Software (設計模式:可複用面向對象軟件的基礎)
- Refactoring: Improving the Design of Existing Code (重構:改善既有代碼的設計)
- The Mythical Man-Month: Essays on Software Engineering (人月神話)
你會購買哪位導師的書呢?
顯然,光讀書不會讓你成爲大師級程序員。要提高技能,你須要的是練習,而且是大量的練習。可是,書籍還是學習「你不知道你不知道的內容」的最好方式之一。