我的後端開發書架2015 2.0版

工程師WWW發表於2015-11-05

--小學生作文的開頭:光陰似箭,日月如梭.....半年過去了,床底下又多了不少書,更新一個2.0版。

自從技術書的書架設定為”床底下“之後,又多了很多買書的空間。中國什麼都貴,就是書便宜。

很多書沒有全部看完,看一部分覺得值得推薦就放上來了,但在碎片化的閱讀下難免錯評,不定期更新修正。

書架主要針對Java後端開發。

更偏愛那些能用簡短流暢的話,把少壯不努力的程式設計師所需的基礎補回來的薄書,而有些教課書可能很著名,但乾澀枯燥,喋喋不休的把你帶回到大學課堂上昏昏欲睡,不錄。

 

1. 作業系統與網路的書

《Linux核心設計與實現 - Linux Kernel Development 第3版》
Robert Love用最薄的篇幅,順暢的文字將Linux核心主要的演算法講清楚了,比《深入理解Linux核心》《深入Linux核心架構》之類厚厚的全是程式碼的,不是專門的核心程式設計師看這本足夠了。

《Linux系統程式設計 第2版》
繼續是Robert Love,比起APUE也是以薄見長,專門針對重要的系統呼叫講解。

《效能之巔》
作業系統的效能調優、監控、工具和方法論,看這本就夠了,足夠厚。還有本薄一點的,東抄西編格調沒那麼高的叫《Linux效能優化大師》

《TCP/IP詳解 卷1:協議》
這麼多年過去了,TCP的書好像還是隻有這一本,有點舊了,看了也還是半懂不懂。後人在2011年寫了第二版,看目錄清晰明瞭與時俱進了很多,機械工業正在翻譯。

《現代作業系統 第3版》
如果看LKD未盡興,可以回頭看看這本基礎概念,感覺比那本枯燥的《作業系統概念》(恐龍書)讀起來舒服。

 

PS. 《UNIX環境高階程式設計》《UNIX網路程式設計》,APUE和UNP更多作為一本超厚工具書存在。《Unix 程式設計藝術》,扯的都是閒篇,厚厚的一本其實略讀一下就行。

 

2. 演算法的書

《資料結構與演算法分析-Java語言描述 第2版》
夠薄,資料結構與演算法分析的點基本都涵蓋了,而且示例程式碼還是Java寫的。

《演算法 第4版》
可與上一本對比著讀,厚一些,也多些圖,但知識點沒上面的全,也是Java的。

《演算法設計與分析基礎 第3版》
數學系偏愛無比枯燥很多公式的《演算法導論》,計算機系喜歡這本實用主義的典型。翻開就看到一段很文藝很貼心的話:“效率能用數學的嚴密性進行精確定義,而簡單性就像“美”一樣,很大程度取決於審視者的眼光。簡單的演算法更容易理解和實現,因而相應的程式也往往更少的Bug。當然對於簡單性的美學訴求也是讓人無法抗拒的。”

 
PS. 《數學之美》《程式設計珠璣》,都是專欄文章,講得並不系統,可以當興趣讀物來看。
 

3. 架構設計的書

《恰如其分的軟體架構 - 風險驅動的設計方法》
由於人類與生俱來的惰性,計算機原本科學的、精準的設計方式,有了敏捷的藉口之後就很難再維持了。本書就是在這種背景下,提出由風險來決定設計的度,當然,這個風險是廣義的。除了開始的風險驅動部分,其餘部分就是規規矩矩標標準準的架構師教科書。

《軟體系統架構:使用視點和視角與利益相關者合作 第2版》
也是教科書,最難得的是,這本老書在十年後的去年升級了第二版。

《程式設計師必讀之軟體架構 - Software Architecture for Developers》
作者維護著codingthearchitecture.com 。不過中文書名叫“必讀”有點過。薄書裡的兩部分內容:
1. 編碼的架構師:一直是我的職業模板,我記的筆記
2. 架構的表達: 當年我覺得RUP的4+1 UML檢視不足以表達系統時,Simon Brown的模板給了很好的過渡範例。

《釋出!軟體的設計與部署 - Release It!: Design and Deploy Production-Ready Software 》
關於高可靠性的軟體,學校裡不會教,出來社會卻要面對的那部分,英文的原標題更清晰。

《大型網站技術架構:核心原理與案例分析》
淘寶出品,大型網際網路站的科普入門書。

《大規模分散式儲存系統》
繼續淘寶出品,分散式檔案系統與資料庫的科普入門書。

《大資料日知錄》
前幾年參加各種技術會議,CAP,最終一致性,RWN,向量時鐘,Paxos,一致性雜湊,Gossip什麼的能灌你一耳朵。而現在,你只要在家安安靜靜的看書就夠了。不過這個領域發展太快,期望它可以持續出新版。

 
PS. 關於設計模式,我以前曾經有過很多很多本,GOF23啦,企業應用架構模式啦,EIP啦, POSA 5卷本啦,反模式啦,JavaEE/SOA/Restful的模式啦。但現在覺得對新人來說,一本Java寫的《Head First 設計模式》,知道什麼叫設計模式就夠了。

 

4. 語言的書

《Java併發程式設計實戰》
人手一本不用多說了。

《深入理解 Java 虛擬機器 第2版》
深入理解虛擬機器並不是那麼難,Java程式設計師都該看看,很多知識其實是必須的。另外還有幾本類似主題的,忽然一下子都出來了。

《Java效能優化權威指南》
雖然後面的章節好像用處不大,前面有些部分還是值得看,不過Gosling說聖經有點過了。

《寫給大忙人看的Java SE 8》
事實上,為了保持相容性,很多專案還保持在JDK5/6上,這本書一次過將JDK7/JDK8的更新講了,雖然講得還不全。

《函數語言程式設計思維》
Java8終於有函式式的影子了,不要落後太多,開始嘗試跟上節奏。這本書是TW的Neal Ford面向Java程式設計師寫的薄書。

《七週七語言》
《七週七X》系列的開山之作,可能也是最好的一本。

 
PS. 《Effective Java》外界一致推崇,但有點太過譽了。另外《Thinking in Java》有點舊了,而且作者思路隨意,譯者語言晦澀,新程式設計師還是建議同時再看兩卷《Java核心技術 - Core Java》

 

5. 具體技術的書

《Docker: 容器與容器雲》
這本書叫Docker一本就夠了,的確夠了,在那些Docker操作指南書之上,不想著改Docker程式碼的看它就夠了,別想著什麼《Docker原始碼分析》。

《Redis設計與實現》
用Redis的工程師桌面必備吧,不用再多說了。

《從Paxos到Zookeeper》
Zookeeper的書,淘寶出品。

《Spark技術內幕》
深度與厚度之間,選了這本200頁的薄書,一樣有很多的原理與程式碼解釋,但不會像有的書那樣貼20行程式碼只寫一行字。

《Netty權威指南 第2版》
雖然網上的吐槽較多,但Netty 快速入門也只有這一本了。
 

6. 程式設計師的自我修養

PS. 最近沒買什麼新書,隨便說點舊書:

《程式設計師修煉之道-從小工到專家》,Pragmatic Programmer-注重實效的程式設計師開山之作,翻譯的馬達維文筆也和熊節一樣好。

《程式碼整潔之道》和 《程式設計師的職業素養》,英文名是很相近的《Clean Code》和 《Clean Coder》,應該接替《程式碼大全2》成為必看的系列,因為後者太厚了,而且也有不少過時的東西,要自己去過濾。

《重構》很厚,但最有價值就是前面幾章的洗腦篇,具體實作不如薄薄的《重構手冊》

關於敏捷的書,最開始的那本《解析極限程式設計--擁抱變化》就很好,再隨便找本Scrum的流程看看就夠了,《敏捷開發的藝術》也不錯。

《佈道之道 - Driving Technical Change:Why People on Your Team Don't Act on Good Ideas,and How to Convince Them They Should》,經常在組織裡推行新技術的同學可以看下,七種懷疑論者模式,腦海中一幅幅熟悉的面孔。

PS. 溫伯格的書網上很推崇,《成為技術領導者》之類的,但我覺得年代太遠,讀起來其實沒多大意思,一兩個雞湯觀點還要自己從書裡慢慢淘,有那功夫不如看點別的。

7. 沒有覆蓋到的內容

資料庫如MySQL,我們DBA太專業,自己沒機會搞。

 
歡迎大家在評論裡補充。
文章持續修訂,轉載請保留原連結: http://calvin1978.blogcn.com/articles/bookshelf.html
 

相關文章