來(lái)源:北大青鳥(niǎo)總部 2019年04月25日 10:20
最近好多剛剛學(xué)習(xí)編程的小伙伴讓我?guī)兔φ硪幌?a href="http://www.listofvitaminsandminerals.com/" target="_self">編程入門的書(shū)籍。今天呢,我就把業(yè)界的十本經(jīng)典書(shū)籍,分享給大家!
《The Pragmatic Programmer》
Andrew Hunt,David Thomas 著
《The Pragmatic Programmer》,即程序員修煉之道。這本書(shū)直擊編程陳地,適用于所有編程語(yǔ)言,創(chuàng)建用戶樂(lè)于接受的、可工作和易維護(hù)的代碼。它不僅會(huì)改變你的編程習(xí)慣,還會(huì)改變你的性格。Andrew Hunt在多個(gè)行業(yè)工作過(guò),電信、銀行、金融服務(wù)和公用事業(yè),還有一些外來(lái)領(lǐng)域,如醫(yī)學(xué)成像、圖形藝術(shù)、網(wǎng)絡(luò)服務(wù)。他擅長(zhǎng)于將已驗(yàn)證的技術(shù)實(shí)踐和前沿技術(shù)相結(jié)合,創(chuàng)造新奇而實(shí)用的方法。所以,這本書(shū)的見(jiàn)解涉及了許多有趣的領(lǐng)域,從個(gè)人責(zé)任到職業(yè)發(fā)展,直至保持代碼靈活和易于改編重用的架構(gòu)技術(shù),開(kāi)發(fā)者能夠從中學(xué)到防止軟件變質(zhì)、消除復(fù)制知識(shí)的陷阱、編寫(xiě)靈活、動(dòng)態(tài)和易適應(yīng)的代碼、避免出現(xiàn)相同的設(shè)計(jì)、用契約、斷言和異常對(duì)代碼進(jìn)行防護(hù)等內(nèi)容。
“程序員入門書(shū)、終極書(shū)、DRY、KISS···從做人到做程序員,這本書(shū)教給了你一切,你所需的只是遵循書(shū)上的指導(dǎo)。”——知乎,蕭井陌“程序員技藝具備的古老特點(diǎn),此書(shū)表達(dá)的很清楚。此書(shū)涉及了軟件工程角度,個(gè)人技藝如何配合的方方面面?!薄拱曜x書(shū),皂角菌
《The Mythical Man-month》
Frederick Brooks 著
《The Mythical Man-month: Essays on Software Engineering》,即《人月神話:軟件項(xiàng)目管理之道》。這本出版于1970年的書(shū)被奉為軟件行業(yè)的《圣經(jīng)》,即使在現(xiàn)在看來(lái)也是字字珠璣。Frederick Brooks是1999年的圖靈獎(jiǎng)得主,致辭中曾提到,“今天我們所看到的計(jì)算機(jī)體系結(jié)構(gòu)、軟件工程,以及三維計(jì)算機(jī)圖形,均受惠于布魯克斯的開(kāi)創(chuàng)性工作,是他改變了這些領(lǐng)域的面貌。”他在軟件工程領(lǐng)域的最廣為人知的經(jīng)典著作《人月神話》,讓軟件工程學(xué)真正進(jìn)入人們的視野。
《人月神話》對(duì)軟件開(kāi)發(fā)過(guò)程的幾個(gè)重要關(guān)鍵點(diǎn),提出了獨(dú)到的見(jiàn)解:提倡外科手術(shù)式的團(tuán)隊(duì)組織;軟件項(xiàng)目的核心概念要由很少的人來(lái)完成,以保證概念的完整性;軟件開(kāi)發(fā)中最大的風(fēng)險(xiǎn)往往不是技術(shù)的缺陷,而是缺少溝通;在開(kāi)發(fā)中,要保持適度的文檔;在軟件開(kāi)發(fā)的過(guò)程中,只有適度改進(jìn),沒(méi)有包治百病的銀彈。
“書(shū)中記述的前輩們?cè)诮鉀Q這些窘迫所體現(xiàn)的才智和熱情,是永遠(yuǎn)值得后人借鑒的,也將啟迪我們開(kāi)拓未來(lái)之路?!薄拱?,pythia“Software Development 的圣經(jīng)。如果只能讀一本書(shū),那么是這本書(shū)。”——豆瓣,浪人BabyL
《Clean Code: A Handbook of Agile Software Craftsmanship》
Robert C·Martin 著
《Clean Code: A Handbook of Agile Software Craftsmanship》,即《代碼整潔之道》。軟件質(zhì)量,不但依賴于架構(gòu)及項(xiàng)目管理,而且與代碼質(zhì)量緊密相關(guān)。這一點(diǎn),無(wú)論是敏捷開(kāi)發(fā)流派還是傳統(tǒng)開(kāi)發(fā)流派,都必須承認(rèn)。Rober C.Martin,Object Mentor公司總裁,也是面向?qū)ο笤O(shè)計(jì)、模式、UML、敏捷方法學(xué)和極限編程領(lǐng)域的資深顧問(wèn)。作為編程領(lǐng)域的佼佼者,他給出了一系列行之有效的整潔代碼操作實(shí)踐,并提出一種觀念:代碼質(zhì)量與其整潔度成正比。本書(shū)閱讀對(duì)象為一切有志于改善代碼質(zhì)量的程序員及技術(shù)經(jīng)理,內(nèi)容涵蓋從命名到重構(gòu)的多個(gè)編程方面,雖然書(shū)中所有的例子都用的Java,但其經(jīng)驗(yàn)適用于任何編程語(yǔ)言。
“用整理代碼的決心替代創(chuàng)造廢話的沖動(dòng)。你會(huì)發(fā)現(xiàn)自己成為更優(yōu)秀、更樂(lè)觀的程序員?!薄拱辏悺氨緯?shū)中提倡寫(xiě)代碼猶如寫(xiě)文章,對(duì)此觀點(diǎn)我印象深刻!如何才能寫(xiě)出整潔代碼呢?總的原則無(wú)非是KISS(Keep It Simple Stupid)?!薄拱?,Wuqifu
《The Clean Coder: A Code of Conduct for Professional Programmers》
Robert C·Martin 著
《The Clean Coder: A Code of Conduct for Professional Programmers》,即《代碼整潔之道:程序員的職業(yè)素養(yǎng)》,這是本列表中Robert C·Martin的第二本書(shū),建議在上一本書(shū)之后閱讀。成功的程序員在以往的工作和生活中都曾經(jīng)歷過(guò)大大小小的不確定性,承受過(guò)永無(wú)休止的壓力。Robert C. Martin以自己40余年編程生涯的心得體會(huì),介紹了真實(shí)軟件技藝中的各項(xiàng)原則、技術(shù)、工具和實(shí)踐,展示了怎么以自豪、自尊和自信的心態(tài)進(jìn)行軟件開(kāi)發(fā),怎么取得卓越表現(xiàn)和豐碩成果,怎么做到有效溝通和確切估算,怎么以坦誠(chéng)的心態(tài)面對(duì)困難,助力專業(yè)軟件開(kāi)發(fā)人員具備令人敬佩的職業(yè)素養(yǎng)。這本書(shū)探討的主題可能不是你希望的,但一定是你需要的。
“創(chuàng)造性的輸入,產(chǎn)生創(chuàng)造性的輸出!這本Bob大叔定義專業(yè)程序員為目的的書(shū),從個(gè)人的精進(jìn)練習(xí)到時(shí)間管理,測(cè)試,需求,壓力,到理想的團(tuán)隊(duì),描述作者的程序員修煉之道?!薄拱辏琹iuwill“這本不厚的書(shū),給了普通程序員走向“專業(yè)”的燈塔。知易行難,“專業(yè)”的路上總有各種各樣的攔路虎,也許我會(huì)再走作者標(biāo)明了的錯(cuò)路,我也并不孤單,但心里知道這是錯(cuò)誤的,不要走遠(yuǎn)。每看到這種書(shū),低沉的士氣會(huì)再次振奮?!薄拱?,銀光
《Refactoring: Improving the Design of Existing Code》
Martin Fowler 著
《Refactoring: Improving the Design of Existing Code》,即《重構(gòu):改善既有代碼的設(shè)計(jì)》。Martin Fowler,世界軟件開(kāi)發(fā)大師,在面向?qū)ο蠓治鲈O(shè)計(jì)、UML、模式、XP和重構(gòu)等領(lǐng)域都有卓越貢獻(xiàn),現(xiàn)為著名軟件開(kāi)發(fā)咨詢公司ThoughtWorks的首席科學(xué)家。本書(shū)揭示了重構(gòu)的過(guò)程,解釋重構(gòu)的原理和最佳實(shí)踐方式,并給出了何時(shí)以及何地應(yīng)該開(kāi)始挖掘代碼以求改善。書(shū)中給出了70多個(gè)可行的重構(gòu),每個(gè)重構(gòu)都介紹了一種經(jīng)過(guò)驗(yàn)證的代碼變換手法的動(dòng)機(jī)和技術(shù)。其中提出的重構(gòu)準(zhǔn)則將幫助開(kāi)發(fā)者一次一小步地修改代碼,從而減少開(kāi)發(fā)過(guò)程中的風(fēng)險(xiǎn)。
“大師Martin Fowler的經(jīng)驗(yàn)之談,看后有種醍醐灌頂、欲罷不能的感覺(jué)。重構(gòu)也是當(dāng)今敏捷開(kāi)發(fā)一項(xiàng)不可或缺的技藝,建議所有有設(shè)計(jì)和項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)者都應(yīng)讀一下。”——豆瓣,Kiwi
《Working Effectively With Legacy Code》
Michael Feathers 著
《Working Effectively With Legacy Code》,即《修改代碼的藝術(shù)》。即使是最訓(xùn)練有素的開(kāi)發(fā)團(tuán)隊(duì),也不能保證始終編寫(xiě)出清晰高效的代碼。如果不積極地修改、挽救,隨著時(shí)間流逝,系統(tǒng)的腐化程度會(huì)日積月累。Michael Feathers是世界級(jí)的面向?qū)ο蠹夹g(shù)專家,以豐富的軟件項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)著稱。他以獨(dú)到的洞察力,以及多年開(kāi)發(fā)和指導(dǎo)軟件項(xiàng)目所積累的豐富經(jīng)驗(yàn)和深厚功力,針對(duì)大型的、無(wú)測(cè)試的遺留代碼基,提供了從頭到尾的方案,讓開(kāi)發(fā)者能夠更有效地應(yīng)付它們,將遺留代碼基改善得具有更高性能、更多功能、更好的可靠性和可控性。本書(shū)是一部里程碑式的著作,更是代碼修改技術(shù)的集大成之作,可以大大提高對(duì)代碼和軟件開(kāi)發(fā)的領(lǐng)悟力。
“許多似曾相識(shí)的代碼不斷地出現(xiàn)在書(shū)中,而作者舉重若輕的處理手法,正是讓我有拍案驚奇的地方。實(shí)際上,每個(gè)手法都不是什么很高超的技法,但正是因?yàn)橐?jiàn)識(shí)過(guò)類似的代碼,才能體會(huì)到這種手法的價(jià)值所在?!薄拱?,dreamhead
《Code Complete: A Practical Handbook of Software Construction》
Steve McConnell 著
《Code Complete》,即《代碼大全》。真正的一本百科全書(shū)——960頁(yè)的最新修訂,讓人真切感受到沉甸甸的知識(shí)。這是一本完整的軟件構(gòu)建手冊(cè),涵蓋了軟件構(gòu)建過(guò)程中的所有細(xì)節(jié):從軟件質(zhì)量和編程思想等方面論述了軟件構(gòu)建的各個(gè)問(wèn)題,并詳細(xì)論述了緊跟潮流的新技術(shù)、高屋建瓴的觀點(diǎn)、通用的概念,還含有豐富而典型的程序示例。書(shū)中所論述的技術(shù)不僅填補(bǔ)了初級(jí)與高級(jí)編程技術(shù)之間的空白,也為開(kāi)發(fā)者們提供了一個(gè)有關(guān)編程技巧的信息來(lái)源,大有裨益。
“作者的寫(xiě)作風(fēng)格很客觀很務(wù)實(shí)。作者把每個(gè)章節(jié)最吸引人的地方,用巧妙的方法展現(xiàn)出來(lái)。并且代碼構(gòu)建其實(shí)也可以變得非常具有藝術(shù)性?,F(xiàn)在我很慶幸當(dāng)初自己看完了它?!薄拱辏琂oshua
《Head First Design Patterns》
Eric Freeman/Elisabeth Freeman/Kathy Sierra/Bert Bates 著
《Head First Design Patterns》,即《深入淺出設(shè)計(jì)模式》。這本書(shū)是大多數(shù)非技術(shù)人員所選擇的編程書(shū)籍,以詼諧、幽默、圖文并茂、打破傳統(tǒng)著書(shū)的方式,由淺入深地詳解了設(shè)計(jì)模式的精神及重點(diǎn)。這本書(shū)涵蓋了解決現(xiàn)實(shí)問(wèn)題所需要的主要模式,幫助開(kāi)發(fā)者創(chuàng)建功能性的、優(yōu)雅的、可重復(fù)使用和靈活的軟件,明確權(quán)衡每個(gè)模式的利弊。除去大多數(shù)書(shū)籍都談?wù)摰降哪J綄?shí)現(xiàn)方法,本書(shū)也解釋了模式設(shè)計(jì)緣由。全書(shū)以Java程式語(yǔ)言為范例,是程式設(shè)計(jì)課程的最佳教材,其最新版本包括了Lambda中的Java 8更新。
“作者把原本屬于設(shè)計(jì)模式的來(lái)源還給設(shè)計(jì)模式的學(xué)習(xí)和應(yīng)用過(guò)程,讓讀者能夠從生活中的例子隨著論述的展開(kāi),逐步深入設(shè)計(jì)模式的核心,這個(gè)也是這本書(shū)能夠不負(fù)其初衷的重要原因?!薄拱?,Jarod“讀這本書(shū)不僅僅是學(xué)習(xí)知識(shí),而是在學(xué)習(xí)一種思考的方法,學(xué)習(xí)一種認(rèn)知的技巧,學(xué)習(xí)一種成長(zhǎng)的階梯。總之,用你閑暇的時(shí)間來(lái)讀這本書(shū),并不亞于你專注的工作或?qū)W習(xí)?!薄拱辏懿?/p>
《Peopleware: Productive Projects and Teams》
Tom DeMarco/Tim Lister 著
《Peopleware: Productive Projects and Teams》,即《人件:腦力密集產(chǎn)業(yè)的人才管理之道》?!度思泛汀度嗽律裨挕繁蛔u(yù)為軟體書(shū)中「兩朵最鮮艷的奇葩」。前者關(guān)注的是「軟體開(kāi)發(fā)」本身,后者關(guān)注的是軟體開(kāi)發(fā)中的「人」。以往不認(rèn)為是問(wèn)題的領(lǐng)導(dǎo)問(wèn)題、開(kāi)會(huì)文化、由不同世代所組成的混合團(tuán)隊(duì),以及,最常用的工具不見(jiàn)得是助力,反而可能是阻力。以辛辣而幽默的筆觸,加上務(wù)實(shí)的建議、豐富的專案經(jīng)驗(yàn),這本書(shū)一出版就引起轟動(dòng),一針見(jiàn)血地指出了團(tuán)隊(duì)管理的問(wèn)題點(diǎn)──腦力密集產(chǎn)業(yè)的核心是人,應(yīng)該給予這些工作者充分的自由與信任。
“管理,不僅僅是技術(shù),更是充滿人文精神的藝術(shù)?!度思分械囊恍┖芫俚捏鹧赃h(yuǎn)遠(yuǎn)超過(guò)了軟件管理的范疇。沒(méi)有大量的數(shù)字、精密的論證,也不需要這些。這正是《人件》深入淺出的長(zhǎng)處。”——豆瓣,QingRen
《Soft Skills: The Software Developer’s Life Manual》John Sonmez 著
《Soft Skills: The Software Developer’s Life Manual》,即《軟技能:代碼之外的生存指南》。同樣,這不是一本關(guān)于編程的,卻是每個(gè)開(kāi)發(fā)者都應(yīng)該讀的書(shū)。John Sonmez是“Simple Programmer”網(wǎng)站的創(chuàng)始人,也是軟件開(kāi)發(fā)人員的人生導(dǎo)師,幫助軟件工程師、程序員和其他專業(yè)技術(shù)人員推動(dòng)事業(yè)進(jìn)步,過(guò)上更充實(shí)的生活。這本書(shū)涉及開(kāi)發(fā)者的生活習(xí)慣,又包括思維方式,凸顯技術(shù)中“人”的因素,全面講解軟件行業(yè)從業(yè)人員所需知道的所有“軟技能”:從揭秘面試的流程到精耕細(xì)作出一份殺手級(jí)簡(jiǎn)歷,從創(chuàng)建大受歡迎的博客到打造自身,從提高自己工作效率到與如何與“拖延癥”做斗爭(zhēng),甚至包括如何投資不動(dòng)產(chǎn),如何關(guān)注自己的健康。
最后,我還是要補(bǔ)充一下,對(duì)于編程入門的童鞋,或許保持興趣是最重要的,但是在你對(duì)編程有一定了解之后,你會(huì)發(fā)現(xiàn)自己還有很多困惑,這時(shí)候就需要惡補(bǔ)基礎(chǔ)知識(shí)了,對(duì)底層了解的越清楚越有助于你消除困惑和對(duì)編程更深層的理解。