給2014年的自己開的書單
給2014年的自己開的書單,有的書已經閱讀過了,有的書正在閱讀,把這些書單列出了,用來激勵自己,好好看書。
1. 《代碼大全》 史蒂夫·邁克康奈爾
“優秀的編程實踐的百科全書,《代碼大全》注重個人技術,其中所有東西加起來,就是我們本能所說的“編寫整潔的代碼”。這本書有50頁在談論代碼布局。” —— Joel Spolsky對於新手來說,這本書中的觀念有點高階了。到你準備閱讀此書時,你應該已經知道並實踐過書中99%的觀念。– esac
2. 《程序員修煉之道》
對於那些已經學習過編程機製的程序員來說,這是一本卓越的書。或許他們還是在校生,但對要自己做什麼,還感覺不是很安全。就像草圖和架構之間的差別。雖然你在學校課堂上學到的是畫圖,你也可以畫的很漂亮,但如果你覺得你不太知道從哪兒下手,如果某人要你獨自畫一個P2P的音樂交換網絡圖,那這本書就適合你了。—— Joel3. 《計算機程序的構造和解釋》
《代碼大全》、《重構》和《設計模式》這些經典書會教給你高效的工作習慣和交易細節。其他像《人件集》、《計算機編程心理學》和《人月神話》這些書會深入軟件開發的心理層麵。其他書籍則處理算法。這些書都有自己所屬的位置。然而《計算機程序的構造和解釋》與這些不同。這是一本會啟發你的書,它會燃起你編寫出色程序的熱情;它還將教會你認識並欣賞美;它會讓你有種敬畏,讓你難以抑製地渴望學習更多的東西。其他書或許會讓你成為一位更出色的程序員,但此書將一定會讓你成為一名程序員。
同時,你將會學到其他東西,函數式編程(第三章)、惰性計算、元編程、虛擬機、解釋器和編譯器。
一些人認為此書不適合新手。個人認為,雖然我並不完全認同要有一些編程經驗才能讀此書,但我還是一定推薦給初學者。畢竟這本書是寫給著名的6.001,是麻省理工學院的入門編程課程。此書或許需要多做努力(尤其你在做練習的時候,你也應當如此),但這個價是對得起這本書的。
4. 《C程序設計語言》
這本書簡潔易讀,會教給你三件事:C 編程語言;如何像程序員一樣思考;底層計算模型。(這對理解“底層”非常重要)—— Nathan5. 《算法導論》
《代碼大全》教你如何正確編程;《人月神話》教你如何正確管理;《設計模式》教你如何正確設計……在我看來,代碼隻是一個工具,並非精髓。開發軟件的主要部分是創建新算法或重新實現現有算法。其他部分則像重新組裝樂高磚塊或創建“管理”層。我依然夢想這樣的工作,我的大部分時間(>50%)是在寫算法,其他“管理”細節則留給其他人…… —— Ran Biron
6. 《重構:改善既有代碼的設計》
我想我不得不推薦《重構》:改進現有代碼的設計。—— Martin我必須承認,我最喜歡的編程語錄是出自這本書:任何一個傻瓜都能寫出計算機能理解的程序,而優秀的程序員卻能寫出別人能讀得懂的程序。—— Martin Fowler
7. 《設計模式》
就我而言,我認為四人幫編著的《設計模式》是一本極為有用的書。雖然此書並不像其他建議一樣有關“元”編程,但它強調封裝諸如模式一類的優秀編程技術,因而鼓勵其他人提出新模式和反模式(antipatterns),並運用於編程對話中。—— Chris Jester-Young8. 《人月神話》
9. 《計算機程序設計藝術》
這是高德納傾注心血寫的一本書。—— Peter Coulton10. 《編譯原理》(龍書)
11. 《深入淺出設計模式》
四人幫的《設計模式》是一本標準書,但倒不如先看看這部大部頭,此書更為簡易。一旦你了解了解了基本原則,可以去看四人幫的那本聖經了。- Calanus12. 《哥德爾、艾舍爾、巴赫書:集異璧之大成》
如果下昂真正深入閱讀,我推薦道格拉斯·侯世達(Douglas Hofstadter)的《哥德爾、艾舍爾、巴赫書》。他極為深入研究了程序員每日都要麵對的問題:遞歸、驗證、證明和布爾代數。這是一本很出色的讀物,難度不大,偶爾有挑戰,一旦你要鏖戰到底,將是非常值得的。 – Jonik13. 《代碼整潔之道》
雖然《代碼整潔之道》和《代碼大全》有很多共同之處,但它有更為簡潔更為實際的清晰例子。 – Craig P. Motlin14. 《Effective C++》和《More Effective C++》
在我職業生涯早期,Scott Meyer的《Effective C++》和後續的《More Effective C++》都對我的編程能力有著直接影響。正如當時的一位朋友所說,這些書縮短你培養編程技能的過程,而其他人可能要花費數年。去年對我影響最大的一本書是《大教堂與市集》,該書教會我很有關開源開發過程如何運作,和如何處理我代碼中的Bug。 – John Channing
15. 《編程珠璣》
盡管我不得不羞愧地承認,書中一半的東西我都沒有理解,但我真的推薦《編程珠璣》,書中有些令人驚奇的東西。 – Matt Warren16. 《修改代碼的藝術》by Michael Feathers
我認為沒有任何一本書能向這本書一樣影響了我的編程觀點。它明確地告訴你如何處理其他人的代碼,含蓄地教會你避免哪些(以及為什麼要避免)。- Wolfbyte同意。很多開發人員討論用幹淨的石板來編寫軟件。但我想幾乎所有開發人員的某些時候是在吃其他開發人員的狗食。– Bernard Dy
17. 《編碼:隱匿在計算機軟硬件背後的語言》
我推薦Charles Petzold的《編碼》。在這個充滿工具和IDE的年代,很多複雜度已經從程序員那“抽取”走了,這本書一本開眼之作。 – hemil18. 《禪與摩托車維修藝術 / Zen and the Art of Motorcycle Maintenance》
對我影響最大的那本書是 Robert Pirsig 的《禪與摩托車維修藝術》。不管你做什麼事,總是要力求完美,徹底了解你手中的工具和任務,更為重要的是,要有樂趣(因為如果你做事有樂趣,一切將自發引向更好的結果)。 – akr19. 《Peopleware / 人件集:人性化的軟件開發》
Demarco 和 Lister 表明,軟件開發中的首要問題是人,並非技術。他們的答案並不簡單,隻是令人難以置信的成功。第二版新增加了八章內容。 – Eduardo Molteni20. 《Coders at Work / 編程人生》
一本非常有影響力的書,可以從中學到一些業界頂級人士的經驗,了解他們如何思考並工作。 – Jahanzeb Farooq21. 《Surely You’re Joking, Mr. Feynman! / 別鬧了,費曼先生!》
雖然這本書可能有點偏題,但不管你信不信,這本書曾在計算機科學專業課程的閱讀列表之上。一個優秀的角色模型,一本有關好奇心的優秀書籍。 – mike51122. 《Effective Java 中文版》
此書第二版教你如何編寫漂亮並高效的代碼,雖然這是一本Java書,但其中有很多跨語言的理念。 – Marcio Aguiar23. 《Patterns of Enterprise Application Architecture / 企業應用架構模式》
24. 《The Little Schemer》和《The Seasoned Schemer》 nmiranda
25. 《交互設計之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity》該書作者:Alan Cooper,人稱Visual Basic之父,交互設計之父。
本書是基於眾多商務案例,講述如何創建更好的、高客戶忠誠度的軟件產品和基於軟件的高科技產品的書。本書列舉了很多真實可信的實際例子,說明目前在軟件產品和基於軟件的高科技產品中,普遍存在著“難用”的問題。作者認為,“難用”問題是由這些產品中存在著的高度“認知摩擦”引起的,而產生這個問題的根源在於現今軟件開發過程中欠缺了一個為用戶利益著想的前期“交互設計”階段。“難用”的產品不僅損害了用戶的利益,最終也將導致企業的失敗。本書通過一些生動的實例,讓人信服地講述了由作者倡導的“目標導向”交互設計方法在解決“難用”問題方麵的有效性,證實了隻有改變現有觀念,才能有效地在開發過程中引入交互設計,將產品的設計引向成功。本書雖然是一本麵向商務人員而編寫的書,但也適合於所有參與軟件產品和基於軟件的高科技產品開發的專業人士,以及關心軟件行業和高科技行業現狀與發展的人士閱讀。
他還有另一本中文版著作:《About Face 3 交互設計精髓》
26. 《Why’s (Poignant) Guide to Ruby 》
如果你不是程序員,閱讀此書可能會很有趣,但如果你已經是個程序員,可能會有點乏味。27. 《Unix編程藝術》
It is useful regardless operating system you use. – J.F. Sebastian不管你使用什麼操作係統,這本書都很有用。 – J.F. Sebastian
28. 《Practices of an Agile Developer / 高效程序員的45個習慣:敏捷開發修煉之道》
45個習慣,分為7個方麵:工作態度、學習、軟件交付、反饋、編碼、調試和協作。每一個具體的習慣裏,一開始提出一個謬論,然後展開分析,之後有正隊性地提出正確的做法,並設身處地地講出了正確做法給你個人的“切身感受”,最後列出幾條注意事項,幫助你修正自己的做法(“平衡的藝術”)。
29. 《Test-Driven Development by Example. / 測試驅動開發》
前麵已經提到的很多書都啟發了我,並影響了我,但這本書每位程序員都應該讀。它向我展示了單元測試和TDD的重要性,並讓我很快上手。 – Curro我不關心你的代碼有多好或優雅。如果你沒有測試,你或許就如同沒有編寫代碼。這本書得到的推薦數應該更高些。人們討論編寫用戶喜歡的軟件,或既設計出色並健壯的高效代碼,但如果你的軟件有一堆bug,談論那些東西毫無意義。– Adam Gent
30. 《Don’t Make Me Think / 點石成金:訪客至上的網頁設計秘笈》
取決於你所追求的目標。我喜歡《代碼大全》是因純編程,《點石成金》是一本有關UI設計的卓越書籍。 – Justin Standard
31. 《C++編程規範:101條規則、準則與最佳實踐》
32. 《C++變成剖析:問題、方案和設計準則》
最後更新:2017-04-03 14:54:29