點擊藍色“程式員書單”關注我喲
加個“星標”,每天帶你看好文,讀好書!
來自:網路
今天大雄給大家分享的是一些,程式員在掌握每個關鍵概念所需的入門書籍和必讀書籍,
其實,最近這段時間,真的很適合閱讀,相信很多小伙伴在之前的閱讀都是碎片式的,所以這段待在家的時間,真的建議小伙伴們可以好好讀一本書,或者認真地鉆研一件事,
今天的分享主要分為程式設計、軟體開發、以及個人成長三大類,
程式設計
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」,即可免費獲取!!

?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/189494.html
標籤:Java
