作者丨莫奇
審校丨云昭
一年之計在于春,新年正是讀書時!假期的喧囂過后,大家不妨靜下心來開始自己的新年讀書計劃,多讀書,讀好書。
為了滿足大家對知識的渴望,今天分享一些程序員(媛)們的必讀書籍,豆瓣評分都在 8.5 分之上,包括程序設(shè)計、軟件開發(fā),以及個人成長類的書籍,幫助大家在新的一年獲取更大的進步。
《編碼》
隱匿在計算機軟硬件背后的語言,這本書其實不應(yīng)該叫編碼——它更應(yīng)該叫“Petzold 教你造計算機”——作者 Charles Petzold。
這本書創(chuàng)造性的以編碼為主題,從電報機和手電筒講到數(shù)字電路,然后利用數(shù)字電路中的邏輯門構(gòu)造出加法器和觸發(fā)器,最后構(gòu)造出一個完整的存儲程序計算機。
如果你是技術(shù)初學(xué)者,也不用擔(dān)心看不懂。《編碼》使用了大量生動形象的類比,將復(fù)雜的概念描述得通俗易懂,深入淺出,隨著基礎(chǔ)知識的不斷增加,有“難度的”知識越來越快地呈現(xiàn)。用電路構(gòu)造邏輯門,一步一步地構(gòu)造起一個完整的內(nèi)存和 ALU、計數(shù)器之類的元件的內(nèi)容,非常有吸引力。
《深入理解計算機系統(tǒng)》
這本書的全名是Computer Systems:A Programmer’s Perspective,所以它又被稱為 CSAPP。
這本書也非常值得一看,被稱為計算機科學(xué)的兩本圣經(jīng)之一。作為一本計算機系統(tǒng)導(dǎo)論型作品,它的把操作系統(tǒng),計算機組成結(jié)構(gòu),數(shù)字電路,以及編譯原理這些計算機基礎(chǔ)學(xué)科中的核心概念匯集在一起,從而覆蓋了指令集體系架構(gòu),匯編語言,代碼優(yōu)化,計算機存儲體系架構(gòu),鏈接,裝載,進程,以及虛擬內(nèi)存這些程序員所需了解的關(guān)鍵計算機系統(tǒng)知識。
如果想打下扎實的計算機基礎(chǔ),又不想把操作系統(tǒng)、計算機結(jié)構(gòu)、編譯原理這些書統(tǒng)統(tǒng)讀一遍,閱讀這本書是最有效率的方式。不夸張地說,這本書每年讀一遍,每遍都會有新的收獲。
編程語言是程序員必不可少的日常工具。正所謂“工欲善其事,必先利其器”。
《C 程序設(shè)計語言》
《C 程序設(shè)計語言》可以稱得上是 C 語言,甚至是計算機科學(xué)中最重要的書籍之一。雖然是二十多年前的書籍了,但它運用清晰的語言和簡練的代碼描述了 C 語言全貌,為之后的編程語言書籍樹立了新的標(biāo)桿。
不過需要做個提醒,讀這本書光看不練是不行的,習(xí)題必須要做,當(dāng)被書后的習(xí)題折騰得死去活來時,恭喜你,C 語言入門了!
《C++ 程序設(shè)計原理與實踐》
作為 C++ 的發(fā)明者,沒有人能比 Bjarne Stroustrup 更理解 C++。
Bjarne 在 Texas A&M 大學(xué)任教時使用 C++ 為大學(xué)新生講授編程,從而就有了 《C++ 程序設(shè)計原理與實踐》這本書。它面向編程初學(xué)者,既包含 C++ 教程,也包含大量程序設(shè)計原則。入門 + 實戰(zhàn),技巧講得很多,例子也很實際。
《Effective Java(第 2 版)》
《Effective Java》一書中列出了關(guān)于 Java 編程實踐的大量優(yōu)秀內(nèi)容,并針對泛型和并發(fā)這兩個充滿陷阱的 Java 特性給出了充滿洞察力的建議。學(xué) Java 必看,對 Java 進階提升很有幫助。
Java 之父 James Gosling 也為這本書作序:“我很希望 10 年前就擁有這本書。可能有人認(rèn)為我不需要任何 Java 方面的書籍,但是我需要這本書?!庇凶x者反饋,雖然這本書的中文翻譯略顯不足,但還是很適合有一定經(jīng)驗基礎(chǔ)的人看,是 Java 的“最佳實踐”。
《C# 圖解教程(第 4 版)》
《C# 圖解教程》運用了一種全新的可視化敘述方式,用圖形并茂的形式,樸實簡潔的文字,并輔以大量表格和代碼示例,全面闡述了 C# 語言的各種特性。讀者能夠快速、深入理解 C#,為自己的編程生涯打下良好的基礎(chǔ)。入門一定要看這本,這本講解了基礎(chǔ)語法,對于理解類型和引用類型有很大的幫助。有讀者認(rèn)為,看完書再配合網(wǎng)上視頻看一遍,效果更好。
《編程語言實現(xiàn)模式》
大多數(shù)程序員不需要從頭編寫一個編譯器或解釋器,因此編譯原理就顯得尤其重要;然而多數(shù)程序員還是需要解析文本,處理配置文件,或者寫一個小語言,《編程語言實現(xiàn)模式》很好的滿足了這個需求。
它把常用的文本解析 / 代碼生成方法組織成一個個模式,并為每個模式給出了實例和應(yīng)用場景。這本書不僅能夠加深你對編程語言的理解,還能提高你的動手能力??梢哉f是一本給初學(xué)者打開眼界和獲取靈感的好書。
《程序設(shè)計方法》
現(xiàn)代編程語言的語法多數(shù)都比較繁雜,這會導(dǎo)致初學(xué)者花大量的時間在編程語言語法(諸如指針,引用和類型定義)上,而不是在程序設(shè)計方法(諸如數(shù)據(jù)抽象和過程抽象)之上。
《程序設(shè)計方法》解決了這個問題——它更專注于程序設(shè)計方法,使讀者不用花費大量時間在編程語言上。這本書是程序設(shè)計入門書,關(guān)鍵是思想的建立。
《編程珠璣(第 2 版)》
編程珠璣(第 2 版)是一本少見的實踐型算法書籍,它并不是逐一介紹數(shù)據(jù)結(jié)構(gòu) / 算法的教材,而是實踐性極強的算法應(yīng)用手冊。內(nèi)容有深度,值得反復(fù)看。
作者 Jon Bentley 從他多年的實踐經(jīng)驗中精選出一些有趣而又實用的問題,然后展示了他解決這些問題的過程(分析問題,選擇合適的算法,解決問題,以及驗證答案)。任何程序員都可以從中獲益。
《程序設(shè)計實踐》
Brian Kernighan 是這個星球上最好的計算機書籍作者?!冻绦蛟O(shè)計實踐》雖然只有短短 200 多頁,但它使用精煉的代碼和簡要的原則,覆蓋了程序設(shè)計的所有關(guān)鍵概念(包括編程風(fēng)格、算法與數(shù)據(jù)結(jié)構(gòu)、API 設(shè)計、調(diào)試、測試、優(yōu)化、移植,以及領(lǐng)域特定語言等概念)。
這本書是程序員正在研修路上必讀的書籍之一,可以幫助形成一些正確的觀念和態(tài)度。
《重構(gòu)》
任何產(chǎn)品代碼都不是一蹴而就,而是在反復(fù)不斷的修改中進化而來?!吨貥?gòu)》這本書詳盡地介紹了改進代碼的方法,并論述了如何在保持代碼行為的基礎(chǔ)上,提升代碼的質(zhì)量。
很多重構(gòu)的方法是簡單的,但之前沒有人整理出方法論。這本書總結(jié)得很好,內(nèi)容組織得完備妥當(dāng),寫得比較中肯,每種重構(gòu)的步驟都很有用。
《程序員修煉之道》
這本書提出了一套切實可行的實效開發(fā)哲學(xué),并且不局限于特定的編程語言或框架。通過程序設(shè)計,測試,編程工具,以及項目管理等方面的實例展示了如何應(yīng)用這套開發(fā)哲學(xué),從而使得程序員更加高效專業(yè)。有讀者反饋稱,讀起來津津有味,這本書告訴程序員怎么用正確的方法做正確的事,每個程序員都應(yīng)該用它每日三省。
《軟件開發(fā)者路線圖》
《軟件開發(fā)者路線圖》是一本優(yōu)秀且實用的程序員職業(yè)規(guī)劃手冊。這本書由若干個模塊組成,每個模塊都對應(yīng)于程序員職業(yè)生涯中的特定階段。這本書更適合瀏覽一遍之后,在遇到職業(yè)瓶頸的時候再來翻閱,前提是你能及時評估自己并獲取反饋加以改進。
《如何把事情做到最好》
為什么同樣資質(zhì)的人,大多數(shù)人會碌碌無為,而只有極少數(shù)能做到登峰造極?如何在領(lǐng)域內(nèi)做到頂尖?如何克服通往頂尖之路上的重重險阻?
刻意練習(xí),這是通向成功的唯一道路。書中用了大量的例子,圍繞這個主題進行講解。閱讀這本書不會讓你立刻脫胎換骨,但它會指引你走向正確的道路——通往登峰造極之路。
最后真心想說一句:千淘萬漉雖辛苦,吹盡狂沙始到金。
程序員這個行業(yè)不輕松,甚至可以說是很艱難。在忙碌的工作之余,不妨抽空翻閱幾本計算機經(jīng)典之作、欣賞研究一段源碼,相信會有意想不到的收獲!
新年伊始,有沒有給自己制定充電計劃呢?大家又有哪些好書推薦,歡迎下方留言。你也可以掃描下方二維碼添加我們小助手微信,加入 51CTO 專屬讀者群溝通交流,可以添加小助手微信領(lǐng)取 2022 年程序員技術(shù)圖譜哦~