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