程序員學習必備書單彙總,超全!

點擊藍色「程序員書單」關注我喲前端

加個「星標」,天天帶你看好文,讀好書!程序員

來自:網絡

今天大雄給你們分享的是一些,程序員在掌握每一個關鍵概念所需的入門書籍和必讀書籍。面試

其實,最近這段時間,真的很適合閱讀,相信不少小夥伴在以前的閱讀都是碎片式的,因此這段待在家的時間,真的建議小夥伴們能夠好好讀一本書,或者認真地鑽研一件事。算法

今天的分享主要分爲程序設計、軟件開發、以及我的成長三大類。編程

程序設計設計模式

1\. 基礎理論

編碼網絡

編碼:隱匿在計算機軟硬件背後的語言,這本書其實不該該叫編碼——它更應該叫「Petzold教你造計算機」——做者 Charles Petzold。數據結構

創造性的以編碼爲主題,從電報機和手電筒講到數字電路,而後利用數字電路中的邏輯門構造出加法器和觸發器,最後構造出一個完整的存儲程序計算機 。閉包

不要被這些電路概念嚇到—— 編碼使用大量形象貼切的類比簡化了這些概念,使其成爲最精彩最通俗易懂的計算機入門讀物。架構

深刻理解計算機系統

深刻理解計算機系統(第2版) 這本書的全名是:Computer Systems:A Programmer’s Perspective,因此它又被稱爲 CSAPP。

若是想打下紮實的計算機基礎又不想把操做系統計算機結構編譯原理這些書通通讀一遍,閱讀深刻理解計算機系統是最有效率的方式。

2\. 編程語言

編程語言是程序員必不可少的平常工具。工欲善其事,必先利其器。

C程序設計語言

儘管C程序設計語言這本書是二十多年前的書籍,但它仍然是C語言——以及計算機科學中最重要的書籍之一。

它的重要性不只僅在於它用清晰的語言和簡練的代碼描述了 C 語言全貌,並且在於它爲以後的計算機書籍——尤爲是編程語言書籍樹立了新的標杆。

C++ 程序設計原理與實踐

做爲C++的發明者,沒有人能比 Bjarne Stroustrup 更理解C++。

Bjarne在Texas A&M大學任教時使用C++爲大學新生講授編程,從而就有了 C++ 程序設計原理與實踐這本書。

它面向編程初學者,既包含 C++ 教程,也包含大量程序設計原則。

 C++

一樣是 Bjarne Stroustrup 的做品, C++ 程序設計語言是 C++ 最權威且最全面 的書籍。第4版相對於以前的版本進行了全面的更新,覆蓋了第二新的C++ 11標準,並砍掉了部分過期的內容。

Java

平心而論Java核心技術 (即Core Java)並不算是一本特別出色的書籍:

示例代碼不夠嚴謹,充斥着不少與C/C++的比較,語言也不夠簡潔——問題在於Java並無一本很出色的入門書籍,與同類型的Java編程思想相比,Java核心技術至少作到了與時俱進。

Effective Java

儘管Java沒有什麼出色的入門書籍,但這不表明 Java 沒有出色的必讀書籍。Effective Java包含大量的優秀Java編程實踐,並對泛型和併發這兩個充滿陷阱的Java特性給出了充滿洞察力的建議。

以致於Java之父 James Gosling爲這本書做序:「我很但願 10 年前就擁有這本書。可能有人認爲我不須要任何 Java 方面的書籍,可是我須要這本書。」

C#

C#的語言特性很是豐富,很難用簡短的篇幅歸納這些特性。

精通 C#之因此有近 1200 頁的篇幅,是由於它不但全面介紹了 C# 語言,並且還覆蓋了 ADO.NET,WCF,WF,WPF,以及 ASP.NET 這些 .Net 框架。

CLRviaC#

CLRviaC#是C#/.Net最重要的書籍,沒有之一。

它全面介紹了.Net 的基石—— CLR的運行原理,以及構建於CLR之上的 C# 類型系統,運行時關係,泛型,以及線程/並行等高級內容。任何一個以 C# 爲工做內容的程序員都應該閱讀此書。

JavaScript

JavaScript DOM編程藝術系統的介紹瞭如何使用JavaScript,HTML,以及 CSS 建立可用的 Web 頁面,是一本前端入門佳做。

JavaScript語言

JavaScript語言包含大量的陷阱和誤區,但它卻又有一些至關不錯的特性,這也是爲何 Douglas Crockford 稱JavaScript爲 世界上最被誤解的語言 ,並編寫了 JavaScript 語言精粹 一書來幫助前端開發者繞開JavaScript中的陷阱。

和同類書籍不一樣, JavaScript 語言精粹用精煉的語言講解了JavaScript語言中好的那部分(例如閉包,函數是頭等對象,以及對象字面量)。

Python

Python 的入門書籍不少,並且聽說質量大多不錯,而Python這本入門讀物——簡潔,全面,代碼質量很不錯,並且有幾個頗有趣的課後做業,能夠快速上手。

Python 參考手冊

權威且實用 Python 書籍,覆蓋 Python 2和 Python 3。儘管它名爲參考手冊,但 Python 參考手冊 在 Python 語法和標準庫基礎之上對其實現機制也給出了深刻的講解,不容錯過。

3.編程語言理論

編程語言實現模式

大多數程序員並不須要從頭編寫一個編譯器或解釋器,所以龍書(編譯原理) 就顯得過於重量級;然而多數程序員仍是須要解析文本,處理配置文件,或者寫一個小語言,編程語言實現模式很好的知足了這個需求。

它把經常使用的文本解析/代碼生成方法組織成一個個模式,併爲每一個模式給出了實例和應用場景。這本書既會提升你的動手能力,也會加深你對編程語言的理解。

Python發明者Guido van Rossum甚至爲這本書給出了_「Throw away your compiler theory book!」_ 這樣的超高評價。

程序設計語言——實踐之路

程序員天天都要和編程語言打交道,可是思考編程語言爲何會被設計成這個樣子的程序員並很少, 程序設計語言—實踐之路這本書完美的回答了這個問題。

4. 程序設計

程序設計方法

現代編程語言的語法大多很繁雜,初學者使用這些語言學習編程會致使花大量的時間在編程語言語法(諸如指針,引用和類型定義)而不是程序設計方法(諸如數據抽象和過程抽象)之上。

程序設計方法解決了這個問題——它專一於程序設計方法,使得讀者無需把大量時間花在編程語言上。

計算機程序的構造與解釋

計算機程序的構造與解釋這本書和程序設計方法有不少共同點——都使用 Scheme 做爲教學語言;都專一於程序設計方法而非編程語言自己;都擁有至關出色的課後題。

5\. 算法與數據結構

 算法

算法這本書的使用更爲容易的Java語言做爲教學語言;覆蓋全部經常使用的數據結構和算法,並均給出其完整實現;包含大量的圖示用於可視化算法,這也是被稱爲最好的算法入門書籍的緣由。

編程珠璣(第 2 版)

編程珠璣(第 2 版)是一本少見的實踐型算法書籍——它並不是一一介紹數據結構/算法的教材,而是實踐性極強的算法應用手冊。

做者( Jon Bentley )從他多年的實際經驗精選出一些有趣而又實用的問題,而後展現了他解決這些問題的過程(分析問題,選擇合適的算法,解決問題,以及驗證答案)。任何程序員均可以從中獲益。

6\. 程序調試

調試九法

調試九法這本書的做者是一個具備豐富實戰經驗的硬件工程師,他把他多年的調試經驗總結成九條調試法則,並對每一條法則都給對應的實際案例。

任何程序員都應經過閱讀這本書改善調試效率,即使是非程序員,也能夠從這本書中學到系統解決問題的方法。

軟件開發

1\. 編程實踐

程序設計實踐

Brian Kernighan 是這個星球上最好的計算機書籍做者:從上古時期的 Software Tools ,到早期的 Unix編程環境 和 C 程序設計語言,再到這本程序設計實踐 ,每本書都是必讀之做。

儘管程序設計實踐只有短短 200 餘頁,但它使用精煉的代碼和簡要的原則覆蓋了程序設計的全部關鍵概念(包括編程風格,算法與數據結構,API 設計,調試,測試,優化,移植,以及領域特定語言等概念)。

代碼大全

不管在哪一個版本的程序員必讀書單,代碼大全都會高居首位。

和其它程序設計書籍不一樣, 代碼大全這本書用通俗清晰的語言覆蓋了軟件構建(Software Construction)中各個層次上全部的重要概念。

2\. 面向對象程序設計

 Head First

不管是在Amazon仍是在Google上搜索設計模式相關書籍,Head First設計模式都會排在首位——它使用風趣的語言和詼諧的圖示講述了觀察者、裝飾者,抽象工廠,和單例等關鍵設計模式,使得初學者能夠迅速的理解並掌握設計模式。

設計模式

設計模式做爲設計模式領域的開山之做,Erich Gamma,Richard Helm,Ralph Johnson等四位做者將各個領域面向對象程序開發的經驗總結成三大類23種模式。

並給出了每一個模式的使用場景,變體,不足,以及如何克服這些不足。

須要注意:設計模式不適合初學者閱讀——它更像是一篇博士論文而非技術書籍,加上它的範例都具備很強的領域背景(諸如 GUI 窗口系統和富文本編輯器),缺少實際經驗的程序員很難理解這本書。

3\. 重構

重構

任何產品代碼都不是一蹴而就,而是在反覆不斷的修改中進化而來。重構這本書正是這樣一本介紹如何改進代碼的書籍——如何在保持代碼行爲的基礎上,提高代碼的質量(這也是重構的定義)。

修改代碼的藝術

這裏再重複一遍重構的定義——在保持代碼行爲的基礎上,提高代碼的質量。 重構 專一於第二步,即如何提高代碼的質量,而修改代碼的藝術專一於第一步,即如何保持代碼的行爲。

4\. 軟件測試

How to Break Software

關於軟件測試的書籍不少,但不多有一本測試書籍能像How to Break Software這般既有趣又實用。

How to Break Software這本書很是實際——它從程序員的心理出發,分析軟件錯誤/Bug最可能產生的路徑,而後針對這些路徑進行殘酷的測試,以保證軟件質量。

注意:若是你是一個測試工程師,那麼在閱讀這本書前請三思——由於閱讀它以後你會讓你身邊的程序員苦不堪言,甚至連掐死你的心都有 。

xUnit Test Patterns 

How to Break Software 注重黑盒測試,而這本 xUnit Test Patterns 則注重白盒測試。

正如書名所示, xUnit Test Patterns 覆蓋了單元測試的每一個方面:從如何編寫良好的單元測試,到如何設計可測試(Testable)的軟件,再到如何重構測試——能夠把它看做爲單元測試的百科全書。

5\. 項目管理

極客與團隊

極客與團隊是一本寫給程序員的如何在團隊中工做的絕好書籍,它圍繞着 HRT 三大原則(Humility 謙遜,Respect 尊重,和Trust信任),系統的介紹瞭如何融入團隊,如何打造優秀的團隊,如何領導團隊,以及如何應對團隊中的害羣之馬(Poisonous People)。

人月神話

儘管人月神話成書於40年前,但它還是軟件項目管理重要的書籍。人月神話源自做者Fred Brooks領導並完成System/360和OS/360這兩個便是放到如今也是巨型軟件項目的里程碑項目的經驗總結。

6\. 專業開發

程序員修煉之道

這本書並不侷限於特定的編程語言或框架,而是提出了一套切實可行的實效(Pragmatic)開發哲學,並經過程序設計,測試,編程工具,以及項目管理等方面的實例展現瞭如何應用這套開發哲學,從而使得程序員更加高效專業。

程序員職業素養

程序員修煉之道指出瞭如何成爲專業程序員,這本程序員職業素養則指出了專業程序員應該是什麼樣子——

承擔責任;知道本身在作什麼;知道什麼時候說不/什麼時候說是;在正確的時間編寫正確的代碼;懂得自我時間管理和工期預估;知道如何應對壓力。

若是想成爲專業程序員(Professional Developer)(而不是碼農(Code Monkey),這本書會爲小夥伴指明前進的方向。

7\. 大師之言

奇思妙想

奇思妙想:15 位計算機天才及其重大發現。

奇思妙想把計算機科學分爲四大領域:編程語言;算法;架構;人工智能。並選取了每一個領域下最具表明性的計算機科學家進行訪談。

由於這些計算機科學家都是其所在領域的開拓者,所以他們能給出常人沒法給出的深入看法。

編程人生

一樣是訪談錄,一樣訪談 15 我的, 編程人生把重點放在程序員(Coders at work)上。

它從各個領域選取了15位頂尖的程序員,這些程序員既包括 Ken Thompson 和 Jamie Zawinski 這些老牌Unix黑客,也包括 Brad Fitzpatrick 這樣的80後新生代,還包括 Frances Allen 和 Donald Knuth 這樣的計算機科學家。

8\. 界面設計

寫給你們看的設計書

書如其名, 寫給你們看的設計書是一本面向初學者的快速設計入門。

它覆蓋了版式,色彩,和字體這三個設計中的關鍵元素,並創造性的爲版式設計總結出CRAP四大原則(Contrast 對比,Repetition 重複,Alignment 對齊,Proximity 親密)。

認知與設計

寫給你們看的設計書強調實踐,即如何作出好的設計;認知與設計:理解 UI 設計準則 強調理論,即爲何咱們會接受這樣的設計而反感那樣的設計。

9\. 交互設計

通用設計法則

書如其名, 通用設計法則給出了重要的 125 個設計原則,並用簡練的語言和範例展現了這些原則的實際應用。每一個原則都有對應的參考文獻,以便讀者進一步學習。

交互設計精髓

交互設計精髓這本書是交互設計領域的聖經級著做。

交互設計專家(以及 VB 之父) Alan Cooper 在這本書中詳細介紹了交互設計的原則,流程,以及方法,而後經過各類範例(主要來自桌面系統)展現瞭如何應用這些原則。

我的成長

1\. 職業規劃

軟件開發者路線圖

軟件開發者路線圖是一本優秀且實用的程序員職業規劃手冊。這本書由若干個模式組成,每一個模式都對應於程序員職業生涯中的特定階段。

經過這本書,讀者能夠很方便的找到本身目前所處的模式(階段),應該作什麼,目標是什麼,以及下一個模式(階段)會是什麼。

2\. 思惟方式

程序員的思惟修煉

做爲程序員,咱們須要不斷地學習——既要學習新技術,也要學習如何解決各類領域的問題。

爲了提高學習效率,咱們須要學習如何學習。程序員的思惟修煉正是這樣一本講如何學習的書,它集合了認知科學,神經學,以及行爲理論的最新研究成果,並系統的介紹了大腦的工做機制。

爲何一樣資質的人,大多數人會碌碌無爲,而只有極少數能作到登峯造極?如何在領域內作到頂尖?如何克服通往頂尖之路上的重重險阻?

閱讀這本書不會讓你馬上脫胎換骨,但它會指引你走向正確的道路——通往登峯造極之路。

3\. 求職面試

金領簡歷

知己知彼,百戰不殆。 

金領簡歷:敲開蘋果微軟谷歌的大門是程序員求職的必讀書籍,它覆蓋了程序員求職的方方面面。

程序員面試金典

一樣是來自金領簡歷做者的做品, 程序員面試金典(第 5 版) 專一於技術面試題,它既包含了 IT 企業(諸如微軟,Google,和蘋果)的面試流程以及如何準備技術面試,也包含了大量(超過200道)常見技術面試題題目以及解題思路。

4\. 英語寫做

詞彙量決定閱讀能力,語法決定寫做能力。

計算機專業詞彙並很少,但精確性很是重要,所以每一個程序員都應具有良好的英語語法,但程序員並不須要過於專業的英語語法——掌握經常使用語法並把它用對就能夠。

既是最暢銷的英語寫做書籍,也是計算機書籍中引用最多的非計算機書籍。

風格的要素用極其簡練的語言講述瞭如何進行 嚴肅精確清楚的英語寫做。

從這本書中,不只能夠學到英語寫做,更能夠學到一種嚴謹至簡的處事態度,而這正是專業開發所必需的。

今天的分享就到這裏啦,是否是超全!

以上書單覆蓋了軟件開發各個關鍵領域的入門書籍和必讀書籍,它能夠知足絕大多數程序員的需求,不管小夥伴是初學者,仍是進階者,均可以從中獲益。

小夥伴都讀過哪些呢?

*— 【 THE END 】—*

本公衆號所有博文已整理成一個目錄,請在公衆號裏回覆「m」獲取!

3T技術資源大放送!包括但不限於:Java、C/C++,Linux,Python,大數據,人工智能等等。在公衆號內回覆「1024」,便可免費獲取!!

相關文章
相關標籤/搜索