“如果能時光倒流梧兼,回到過去放吩,作為一個開發(fā)人員,你可以告訴自己在職業(yè)生涯初期應(yīng)該讀一本羽杰,你會選擇哪本書呢渡紫?我希望這個書單列表內(nèi)容豐富,可以涵蓋很多東西考赛√枧欤”
很多程序員響應(yīng),他們在推薦時也寫下自己的評語颜骤。以前就有國內(nèi)網(wǎng)友介紹這個程序員書單唧喉,不過都是推薦數(shù) Top 10的書。其實除了前10本之外复哆,推薦數(shù)前30左右的書籍都算經(jīng)典欣喧,伯樂在線整理編譯這個問答貼,同時摘譯部分推薦人的評語梯找。下面就按照各本書的推薦數(shù)排列唆阿。
- 《代碼大全》史蒂夫·邁克康奈爾
推薦數(shù):1684
code complete 代碼大全
“優(yōu)秀的編程實踐的百科全書,《代碼大全》注重個人技術(shù)锈锤,其中所有東西加起來驯鳖,就是我們本能所說的“編寫整潔的代碼”。這本書有50頁在談?wù)摯a布局久免∏痴蓿” —— Joel Spolsky
對于新手來說,這本書中的觀念有點高階了阎姥。到你準備閱讀此書時记舆,你應(yīng)該已經(jīng)知道并實踐過書中99%的觀念。– esac
- 《程序員修煉之道》
推薦數(shù):1504
Pragmatic Programmer 程序員修煉之道
對于那些已經(jīng)學(xué)習(xí)過編程機制的程序員來說呼巴,這是一本卓越的書。或許他們還是在校生弛随,但對要自己做什么光督,還感覺不是很安全。就像草圖和架構(gòu)之間的差別。雖然你在學(xué)校課堂上學(xué)到的是畫圖,你也可以畫的很漂亮,但如果你覺得你不太知道從哪兒下手碘箍,如果某人要你獨自畫一個P2P的音樂交換網(wǎng)絡(luò)圖,那這本書就適合你了鲸郊》崃瘢—— Joel
- 《計算機程序的構(gòu)造和解釋》
推薦數(shù):916
Structure and Interpretation of Computer Programs 計算機程序的構(gòu)造和解釋
就個人而言,這本書目前為止對我影響醉倒的一本編程書严望。
《代碼大全》多艇、《重構(gòu)》和《設(shè)計模式》這些經(jīng)典書會教給你高效的工作習(xí)慣和交易細節(jié)。其他像《人件集》像吻、《計算機編程心理學(xué)》和《人月神話》這些書會深入軟件開發(fā)的心理層面峻黍。其他書籍則處理算法。這些書都有自己所屬的位置拨匆。
然而《計算機程序的構(gòu)造和解釋》與這些不同姆涩。這是一本會啟發(fā)你的書,它會燃起你編寫出色程序的熱情惭每;它還將教會你認識并欣賞美骨饿;它會讓你有種敬畏,讓你難以抑制地渴望學(xué)習(xí)更多的東西台腥。其他書或許會讓你成為一位更出色的程序員宏赘,但此書將一定會讓你成為一名程序員。
同時黎侈,你將會學(xué)到其他東西察署,函數(shù)式編程(第三章)、惰性計算峻汉、元編程贴汪、虛擬機、解釋器和編譯器休吠。
一些人認為此書不適合新手扳埂。個人認為,雖然我并不完全認同要有一些編程經(jīng)驗才能讀此書瘤礁,但我還是一定推薦給初學(xué)者阳懂。畢竟這本書是寫給著名的6.001,是麻省理工學(xué)院的入門編程課程。此書或許需要多做努力(尤其你在做練習(xí)的時候希太,你也應(yīng)當如此)克饶,但這個價是對得起這本書的酝蜒。
你還不確信么誊辉?那就讀讀第一版的前言或序言。網(wǎng)上有免費的電子版亡脑。-Antti Syk?ri
- 《C程序設(shè)計語言》
推薦數(shù):774
The C Programming Language C程序設(shè)計語言
這本書簡潔易讀堕澄,會教給你三件事:C 編程語言;如何像程序員一樣思考霉咨;底層計算模型蛙紫。(這對理解“底層”非常重要)—— Nathan
- 《算法導(dǎo)論》
推薦數(shù):671
Introduction to algorithms 算法導(dǎo)論
《代碼大全》教你如何正確編程;《人月神話》教你如何正確管理途戒;《設(shè)計模式》教你如何正確設(shè)計……
在我看來坑傅,代碼只是一個工具,并非精髓喷斋。開發(fā)軟件的主要部分是創(chuàng)建新算法或重新實現(xiàn)現(xiàn)有算法唁毒。其他部分則像重新組裝樂高磚塊或創(chuàng)建“管理”層。我依然夢想這樣的工作星爪,我的大部分時間(>50%)是在寫算法浆西,其他“管理”細節(jié)則留給其他人…… —— Ran Biron
- 《重構(gòu):改善既有代碼的設(shè)計》
推薦數(shù):617
Refactor 重構(gòu):改善既有代碼的設(shè)計
我想我不得不推薦《重構(gòu)》:改進現(xiàn)有代碼的設(shè)計⊥缣冢—— Martin
我必須承認近零,我最喜歡的編程語錄是出自這本書:任何一個傻瓜都能寫出計算機能理解的程序,而優(yōu)秀的程序員卻能寫出別人能讀得懂的程序抄肖【眯牛—— Martin Fowler
- 《設(shè)計模式》
推薦數(shù):617
Design Patterns 設(shè)計模式
就我而言,我認為四人幫編著的《設(shè)計模式》是一本極為有用的書漓摩。雖然此書并不像其他建議一樣有關(guān)“元”編程裙士,但它強調(diào)封裝諸如模式一類的優(yōu)秀編程技術(shù),因而鼓勵其他人提出新模式和反模式(antipatterns)幌甘,并運用于編程對話中潮售。—— Chris Jester-Young
- 《人月神話》
推薦數(shù):588
The Mythical Man-Month 人月神話
- 《計算機程序設(shè)計藝術(shù)》
推薦數(shù):542
The Art of Computer Programming 計算機程序設(shè)計藝術(shù)
這是高德納傾注心血寫的一本書锅风∷址蹋—— Peter Coulton
- 《編譯原理》(龍書)
推薦數(shù):462
Compilers: Principles, Techniques, and Tools 編譯原理:原理、技術(shù)與工具
我很奇怪皱埠,居然沒人提到龍書肮帐。(或許已有推薦,我沒有看到)。我從沒忘過此書的第一版封面训枢。此書讓我知道了編譯器是多么地神奇絕妙托修。- DB
- 《深入淺出設(shè)計模式》
推薦數(shù):445
我知道四人幫的《設(shè)計模式》是一本標準書,但倒不如先看看這部大部頭恒界,此書更為簡易睦刃。一旦你了解了解了基本原則,可以去看四人幫的那本圣經(jīng)了十酣。- Calanus
- 《哥德爾涩拙、艾舍爾、巴赫書:集異璧之大成》
推薦數(shù):437
如果下昂真正深入閱讀耸采,我推薦道格拉斯·侯世達(Douglas Hofstadter)的《哥德爾兴泥、艾舍爾、巴赫書》虾宇。他極為深入研究了程序員每日都要面對的問題:遞歸搓彻、驗證、證明和布爾代數(shù)嘱朽。這是一本很出色的讀物旭贬,難度不大,偶爾有挑戰(zhàn)燥翅,一旦你要鏖戰(zhàn)到底骑篙,將是非常值得的。 – Jonik
- 《代碼整潔之道》
推薦數(shù):329
雖然《代碼整潔之道》和《代碼大全》有很多共同之處森书,但它有更為簡潔更為實際的清晰例子靶端。 – Craig P. Motlin
- 《Effective C++》和《More Effective C++》
推薦數(shù):297
在我職業(yè)生涯早期,Scott Meyer的《Effective C++》和后續(xù)的《More Effective C++》都對我的編程能力有著直接影響凛膏。正如當時的一位朋友所說杨名,這些書縮短你培養(yǎng)編程技能的過程,而其他人可能要花費數(shù)年猖毫。
去年對我影響最大的一本書是《大教堂與市集》台谍,該書教會我很有關(guān)開源開發(fā)過程如何運作,和如何處理我代碼中的Bug吁断。 – John Channing
- 《編程珠璣》
推薦數(shù):282
盡管我不得不羞愧地承認趁蕊,書中一半的東西我都沒有理解,但我真的推薦《編程珠璣》仔役,書中有些令人驚奇的東西掷伙。 – Matt Warren
- 《修改代碼的藝術(shù)》by Michael Feathers
我認為沒有任何一本書能向這本書一樣影響了我的編程觀點。它明確地告訴你如何處理其他人的代碼又兵,含蓄地教會你避免哪些(以及為什么要避免)任柜。- Wolfbyte
同意卒废。很多開發(fā)人員討論用干凈的石板來編寫軟件。但我想幾乎所有開發(fā)人員的某些時候是在吃其他開發(fā)人員的狗食宙地。– Bernard Dy
- 《編碼:隱匿在計算機軟硬件背后的語言》
我推薦Charles Petzold的《編碼》摔认。在這個充滿工具和IDE的年代,很多復(fù)雜度已經(jīng)從程序員那“抽取”走了宅粥,這本書一本開眼之作参袱。 – hemil
- 《禪與摩托車維修藝術(shù) / Zen and the Art of Motorcycle Maintenance》
對我影響最大的那本書是 Robert Pirsig 的《禪與摩托車維修藝術(shù)》。不管你做什么事粹胯,總是要力求完美蓖柔,徹底了解你手中的工具和任務(wù),更為重要的是风纠,要有樂趣(因為如果你做事有樂趣,一切將自發(fā)引向更好的結(jié)果)牢贸。 – akr
(編注:關(guān)于這本書竹观,也可以看看阮一峰的讀后感。)
- 《Peopleware / 人件集:人性化的軟件開發(fā)》
Demarco 和 Lister 表明潜索,軟件開發(fā)中的首要問題是人臭增,并非技術(shù)。他們的答案并不簡單竹习,只是令人難以置信的成功誊抛。第二版新增加了八章內(nèi)容。 – Eduardo Molteni
- 《Coders at Work / 編程人生》
一本非常有影響力的書整陌,可以從中學(xué)到一些業(yè)界頂級人士的經(jīng)驗拗窃,了解他們?nèi)绾嗡伎疾⒐ぷ鳌?– Jahanzeb Farooq
- 《Surely You’re Joking, Mr. Feynman! / 別鬧了,費曼先生泌辫!》
雖然這本書可能有點偏題随夸,但不管你信不信,這本書曾在計算機科學(xué)專業(yè)課程的閱讀列表之上震放。一個優(yōu)秀的角色模型宾毒,一本有關(guān)好奇心的優(yōu)秀書籍。 – mike511
- 《Effective Java 中文版》
此書第二版教你如何編寫漂亮并高效的代碼殿遂,雖然這是一本Java書诈铛,但其中有很多跨語言的理念。 – Marcio Aguiar
- 《Patterns of Enterprise Application Architecture / 企業(yè)應(yīng)用架構(gòu)模式》
很奇怪墨礁,還沒人推薦 Martin Fowler 的《企業(yè)應(yīng)用架構(gòu)模式》- levi rosol
- 《The Little Schemer》和《The Seasoned Schemer》 nmiranda
這兩本是LISP的英文書幢竹,尚無中文版。美國東北大學(xué)網(wǎng)站上也有電子版饵溅。
- 《交互設(shè)計之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity》該書作者:Alan Cooper妨退,人稱Visual Basic之父,交互設(shè)計之父。
本書是基于眾多商務(wù)案例咬荷,講述如何創(chuàng)建更好的冠句、高客戶忠誠度的軟件產(chǎn)品和基于軟件的高科技產(chǎn)品的書。本書列舉了很多真實可信的實際例子幸乒,說明目前在軟件產(chǎn)品和基于軟件的高科技產(chǎn)品中懦底,普遍存在著“難用”的問題。作者認為罕扎,“難用”問題是由這些產(chǎn)品中存在著的高度“認知摩擦”引起的聚唐,而產(chǎn)生這個問題的根源在于現(xiàn)今軟件開發(fā)過程中欠缺了一個為用戶利益著想的前期“交互設(shè)計”階段∏徽伲“難用”的產(chǎn)品不僅損害了用戶的利益杆查,最終也將導(dǎo)致企業(yè)的失敗。本書通過一些生動的實例臀蛛,讓人信服地講述了由作者倡導(dǎo)的“目標導(dǎo)向”交互設(shè)計方法在解決“難用”問題方面的有效性亲桦,證實了只有改變現(xiàn)有觀念,才能有效地在開發(fā)過程中引入交互設(shè)計浊仆,將產(chǎn)品的設(shè)計引向成功客峭。
本書雖然是一本面向商務(wù)人員而編寫的書,但也適合于所有參與軟件產(chǎn)品和基于軟件的高科技產(chǎn)品開發(fā)的專業(yè)人士抡柿,以及關(guān)心軟件行業(yè)和高科技行業(yè)現(xiàn)狀與發(fā)展的人士閱讀舔琅。
他還有另一本中文版著作:《About Face 3 交互設(shè)計精髓》
- 《Why’s (Poignant) Guide to Ruby 》
如果你不是程序員,閱讀此書可能會很有趣洲劣,但如果你已經(jīng)是個程序員备蚓,可能會有點乏味。
27.《Unix編程藝術(shù)》
It is useful regardless operating system you use. – J.F. Sebastian
不管你使用什么操作系統(tǒng)闪檬,這本書都很有用星著。 – J.F. Sebastian
- 《Practices of an Agile Developer / 高效程序員的45個習(xí)慣:敏捷開發(fā)修煉之道》
45個習(xí)慣,分為7個方面:工作態(tài)度粗悯、學(xué)習(xí)虚循、軟件交付、反饋样傍、編碼横缔、調(diào)試和協(xié)作。
每一個具體的習(xí)慣里衫哥,一開始提出一個謬論茎刚,然后展開分析,之后有正隊性地提出正確的做法撤逢,并設(shè)身處地地講出了正確做法給你個人的“切身感受”膛锭,最后列出幾條注意事項粮坞,幫助你修正自己的做法(“平衡的藝術(shù)”)。
- 《Test-Driven Development by Example. / 測試驅(qū)動開發(fā)》
前面已經(jīng)提到的很多書都啟發(fā)了我初狰,并影響了我莫杈,但這本書每位程序員都應(yīng)該讀。它向我展示了單元測試和TDD的重要性奢入,并讓我很快上手筝闹。 – Curro
我不關(guān)心你的代碼有多好或優(yōu)雅。如果你沒有測試腥光,你或許就如同沒有編寫代碼关顷。這本書得到的推薦數(shù)應(yīng)該更高些。人們討論編寫用戶喜歡的軟件武福,或既設(shè)計出色并健壯的高效代碼议双,但如果你的軟件有一堆bug,談?wù)撃切〇|西毫無意義艘儒。– Adam Gent
- 《Don’t Make Me Think / 點石成金:訪客至上的網(wǎng)頁設(shè)計秘笈》
取決于你所追求的目標聋伦。我喜歡《代碼大全》是因純編程,《點石成金》是一本有關(guān)UI設(shè)計的卓越書籍界睁。 – Justin Standard