程序員必備的書籍有哪些?

程序猿必讀的圖書有哪些?最值得看的?


沒有程序員必看的。
只有某些領域程序員必看的。

拋磚:
C++:《C++ primer》,《深度探索C++對象模型》,《stl源碼剖析》。這是唯3我認為深入C++學習必看的書。effective之類的瑣碎知識,工作多了自然懂,工作少了,看了也沒用。想在線學會C++我個人認為是痴人說夢,或者需要付出看書幾倍的時間

演算法:《演算法導論》,《編程之美》,一本重理論,一本重實踐

Linux後台:《Unix環境高級編程》,《Unix網路編程》。領域內絕對統治地位

前端:《javascript高級程序設計》,《HTML5程序設計》。前者必看,後者相關的在網上學學也沒問題,只是書籍更系統全面

網路:《tcp/ip詳解 卷一》,看看神一樣的協議是怎麼設計的。

計算機體系:《現代操作系統》(強推),《深入理解計算機系統》(看前三章),《程序員的自我修養》(和周志華的《機器學習》並列為我心中最牛逼的國產技術書籍)

測試:《軟體測試的藝術》

軟體工程:好書太多,《代碼大全》,《設計模式》(四人幫的),《重構》 是我認為必看的

搜索引擎:《走進搜索引擎》,配合谷歌論文食用,效果更佳

裝逼:《上帝擲骰子嗎》,《geb》,《希修斯之船》

其他領域我不懂


當你拿到諸位大佬給你的書單,並且你居然真的把它們都買回家了,等到搬家時,相信我,你一定會非常非常為書的數量而絕望的……


  • 一個合格的程序員應該讀過哪些書
  • 前端開發,從菜鳥到大牛的取經之路
  • 免費開源的計算機類書籍 justjavac/free-programming-books-zh_CN · GitHub
  • 程序員應該閱讀的非編程類書籍 free-programming-books-zh_CN/what-non-programming-books-should-programmers-read.md at master · justjavac/free-programming-books-zh_CN · GitHub
  • 前端技能匯總 JacksonTian/fks · GitHub

《深入理解計算機系統》
http://book.douban.com/subject/5333562/


雞湯類:

1.《黑客與畫家》

豆瓣評分:8.9

2.《浪潮之巔》

豆瓣評分:9.1

潔癖類:

3.《重構》

豆瓣評分:9.1

4.《代碼整潔之道》

豆瓣評分:8.6

5.《代碼大全2》

豆瓣評分:9.3

敏捷類:

6.《Rework中文版》

豆瓣評分:8.3

7.《高效程序員的45個習慣》

豆瓣評分:8.2

產品類:

8.《人人都是產品經理》

豆瓣評分:8.3

9.《結網》

豆瓣評分:8.1

神書:

10.《自私的基因》

豆瓣評分:8.9

11.《失控》

豆瓣評分:8.9

參考自:http://blog.knownsec.com/Knownsec_RD_Checklist/v3.0.html


看著我書架上嶄新的《編譯原理》、《計算機組成原理》等等各種貴的肉疼的書,我悟出一個道理:

程序員必備的書就是你會看的書,展開說就是你感興趣的技術書、能解決你工作中遇到的問題的書以及各種 Friendly Manual 及 Cookbook。

至於別的書嘛,錢多的話就上吧!


說幾本淺顯易懂的老書,不管你用什麼語言,做什麼程序都可以從中學到大量的絕對有用的知識。特別是第一本,就算智商不足以弄懂後面的,第一本也要弄懂。

《凌波微步——軟體開發警戒案例集》

《龍書》

《深入探索C++對象模型》

《演算法導論》

《Visual Basic 高級圖形程序設計教程》


搬運自 v2ex 回答 [簡尋] 程序員充電必備的書單集合

《重構》
《程序員修鍊之道》
《 計算機程序的構造和解釋》
《 黑客與畫家》
《 編程珠璣 》
《深入理解計算機系統》
《 代碼大全》
《 HTTP權威指南 》
《UNIX程序設計藝術》
《 重來》
《 集體智慧編程》
《 瘋狂的程序員》
《 Python金融數據分析 》
《智識分子:做個複雜的現代人》
《 C++primer》
《 禪與摩托車維修藝術》
《 深入理解Java虛擬機(最新版)》
《 計算機程序設計藝術卷1:基本演算法》
《 頸椎康復指南 》
《活著 》

排序來自我們後台的統計v友的贊同數

利益相關:簡尋 簡尋-你值得擁有更優質的offer


技術書籍我就不推薦了。
伯格曼的《你的燈亮著嗎》是我的首推,作為程序員整體忙碌在各種bug和問題中,卻無暇思考這些問題的根源,這本書是一個好的引子。


C Programming Language
即使作為速查書,對於初學者而言,通過示例,可以改進代碼上的一些累贅的地方,我說的不是三目表達式,我指的是如果if可以寫成一行,那麼就寫成一行。

How to Sharpen Pencils: A Practical Theoretical Treatise on the Artisanal Craft of Pencil Sharpening for Writers, Artists, Contractors, Flange Turners, Anglesmiths, Civil Servants-Kindle商店
如何削鉛筆:針對作家,藝術家blablablabla,以及程序猿的實用性指南
你看,裡面有程序猿呢!有程序猿呢!
並且有kindle版的呢,不需要買紙張呢,並且比紙張還便宜不少呢

~~~~最近看到了 pluskid 寫的pluskid/MLOpt.jl 路 GitHub,於是我好好的瞄了瞄julia 提供的一些類相關的功能,於是發覺很多我之前以為沒用到的東西其實都能用上了的分割線~~~~~

STL源碼剖析 (豆瓣)
強烈推薦這本書,首先會對functor這個東西(其實Lisp之類的語言就是函數了,不過C++會略微麻煩一點)有些熟悉。因為STL中基本上都是根據邏輯和策略來考慮內容,而不是考慮數據具體的什麼(準確的說是考慮數據的結構)
這才是編程的時候應該具備的思維,並且可以培養這樣一種思維:從我們想要達到的目標反推,考慮我們應該將各種數據封裝成什麼結構

但是 C++的模板寫起來真是太麻煩了....但是不需要擔心,我們平常用不到C++;
由於我用的是julia,這裡面的方法反而給了一種繞過簡單的帶入函數的方法(直接拿函數當作參數會出現函數指針.....所以就偽造一個functor了)

C++設計新思維 (豆瓣)
思維,思維,思維;重要的是思維,而不是庫給你提供了什麼.....
好吧,如果這麼說的話,的確有點像是賣手機:「我不管代碼好不好看,效率如何,我求的就是思維」
雖然這本書讀起來,他喵的就是Lisp呀
所以說,這本書提供了一個如何在別的語言中玩lisp的範例,這樣,我在julia中能夠觸雷旁通

Collins COBUILD English Usage (豆瓣)
在github或者stackoverflow寫點東西的時候總會覺得自己這裡用法對不對,比如any後面應該是複數還是單數,這裡介詞用的如何,這裡是不是應該用would.....有疑問可查此書

English Prepositions Explained (豆瓣)
原因如上

An Essay Concerning Human Understanding (Great Books in Philosophy) (豆瓣)
很不幸的是,我們的語言不僅僅是餵給機器的,也不僅僅是餵給同樣是程序猿的存在的........
這本書我剛剛開頭,所以不好說什麼(喂

第三種文化 (豆瓣)
以適當的方式加強文化水平,在程序猿的不歸路上越走越遠
這本書在寫得時候目的基本上是,文化可不是什麼莎士比亞,王爾德之類的事情,還有維納,圖靈的事情......於是內容可想而知了

Practical Vim (豆瓣)
我不想解釋了.....除非有人提emacs,否則我懶得傳教了
其實提了我也懶得傳教了....最多建議購買職業病,尤其是覆蓋了腕管綜合症的醫療保險

~~~~偽裝自己是比程序猿更高等生物的書籍~~~~
這個世界上有兩種程序猿,一種是懂數學的程序猿,另外一種是不懂數學的程序猿。雖然所有程序猿都是平等的,但是,顯然地說,有一類程序猿更加平等
............
...........
.......
已坑勿念


深入理解計算機系統
演算法導論
編譯原理
操作系統的設計與實現
Database Management Systems

網路這塊了解不多 計算機網路自頂向下方法感覺還行,別的網路方面的書沒看過,不好說這本是必修
圖形學不懂就略過了...圖形學貌似也有一本龍書

除了這幾本必修,剩下的隨意....看你幹什麼了,一般工作範圍都繞不過這幾本磚頭的內容
===================C++程序員必讀....
C++ primer
effective C++ 系列三本
exceptional C++系列三本
STL自修手冊 STL源碼剖析
C++ template C++ 模板元編程 C++設計新思維
C++ 101條 imperfect C++ ...純語法這些差不多了


我覺得是這本。。。。。。。。


看完3P就夠了:The Discipline of Programming, The Science of Programming, Unified Theories of Programming。當然,首先你要有辦法買到(逃


純技術的不太好說,推薦一些周邊的,有思維,有方法,有生活:

  • 《代碼大全》
  • 《重構》
  • 《人月神話》
  • 《程序開發心理學》
  • 《程序員修鍊之道,從小工道專家》
  • 《高效程序員的45個習慣,敏捷開發修鍊之道》
  • 《高效能程序員的修鍊》
  • 《你好哇,程序員》
  • 《軟技能,代碼之外的生存之道》
  • 《做事的常識》
  • 《干法》
  • 《程序員的職業素養》
  • 《程序員的思維修鍊》

在 GitHub 上整理了一份書單~~

成長路線已經彙集到Growth,Github見:https://github.com/phodal/growth

這是一份關於如何Re-Practise的技術書籍推薦書單。

一直畫/寫一個推薦書單來供大家參考,無奈找不到一本合適的形式。有一天,想到了之前的技術樹 https://github.com/phodal/sherlock,便開始落地了。

在線查看見:http://phodal.github.io/booktree/

我深知自己的知識有限,所以寫下本文以便和大家切磋交流。歡迎通過 GitHub 的Issues或者直接Pull Requests方式來分享你的經驗。期待你的反饋。

基本閱讀路線圖:

首先,你需要選擇一門語言,然後學習之。這時有一些還不錯,如JavaScript實戰,JavaScript Cookbook,前者是一門實站手冊,後者則是參考手冊。再來一本某某語言,或者框架的實戰,與權威指南,你就可以完成工作了。

然後呢?

說明: 完成工作是一件很容易的事,如何更好地完成工作就需要更多地學習。並且我堅信每一個有技術熱情的人,都希望可以看到自己寫的框架可以無處不在。

《技術的本質》 - W. Brain Arthur早已看穿了一切

這是一本關於『技術是什麼,它是如何進化』的書。新的技術是根據於我們當前的目的、一個可實現的原理、一種新現象而發明的。並且,新的技術都是基於之前的技術發展出來的。

So,通過研究現有技術的一些發展,我們可以預料到一些新的技術的出現。儘管新的技術並沒有解決一些根本性問題,如業務,但是它是為了業務而簡化現有的技術。

如何寫好代碼——重構與設計模式

從編寫可讀的代碼,到重構現有的代碼,再到設計模式,是編碼的必備法則。

  • 《測試驅動開發》: 儘管在國內,我們很少聽到開發人員寫測試,就更少聽人們談論TDD。雖然我不是TDD的死忠,但是我覺得TDD還是很有好處的。特別是當你的函數特別長的時候,它可以驅使你寫出更短的函數——更多的函數。紅-&>綠-&>重構,就是這麼簡單。
  • 《重構: 改善既有代碼的設計》: 紅-&>綠-&>重構。如果重構之前沒有測試,我相信你可能是想換個工作了。好的代碼是重構出來的,而不是一開始就寫出來的——除非你的代碼不用於任何業務。反正,就是程序員必讀,不想多說。
  • 《Head First設計模式》: GoF的《設計模式》一書很薄,所以也很抽象。第一次看《設計模式》的時候,硬著頭皮看了幾天,然後放棄了。。。不過,Head First系列可以將各種枯燥的設計生起起來,這是一本非常適合入門設計模式的書籍沒有之一。
  • 《設計模式解析》: 比Head First更深入,但是比DP簡單。作者選用了一些常用或者說用到的模式,講述了為什麼在這裡適合用它。
  • 《易讀代碼的藝術/編寫可讀代碼的藝術》: 納尼!你居然不想買這本書?
  • 《代碼整潔之道》: 書中給了很方法與規範,遵循它們可以寫出整潔的代碼。但是整潔並不意味著你應該讓代碼簡單!
  • 《重構與模式》: 這本書的中文名字應該叫《重構到模式》!!!重構代碼到設計模式就這麼簡單。
  • 《設計模式》: 必讀,並且值得多讀幾遍。
  • 《元素模式》: 首先書名很扯!!!這本書更適合叫《設計模式要素》!這本書提取了設計模式中的一些基本元素,很具有啟發性。

如何寫前端框架——前端讀書路線圖

以JavaScript作為例子來解釋如何去學習一門語言,從語法到最後的MVC。

機器學習讀書路線

機器學習依賴於大量的數據和理論知識,而數據又可以創造出美妙的數據可視化圖像。

持續交付讀書路線圖

敏捷是過去,持續交付是現在,未來呢?

想要構建一個好的項目,構建系統、自動化測試、可配置缺一不可。

領域特定語言讀書路線圖

最好的語言就是可以表達你業務的語言。

如果你熟悉前端的知識的話,你會發現DSL無處不在。

架構與模式讀書路線圖——每個人都是架構師。

成為架構師最簡單的方法就是學習別人的模式。

成為成功架構師便是創建模式。

更多內容見:phodal/booktree


一個合格的程序員應該讀過哪些書-博客-雲棲社區-阿里雲

1、《代碼大全》 史蒂夫·邁克康奈爾

推薦數:1684

「優秀的編程實踐的百科全書,《代碼大全》注重個人技術,其中所有東西加起來, 就是我們本能所說的「編寫整潔的代碼」。這本書有50頁在談論代碼布局。」 —— Joel Spolsky
對於新手來說,這本書中的觀念有點高階了。到你準備閱讀此書時,你應該已經知道並實踐過書中99%的觀念。– esac

Steve McConnell的原作《代碼大全》(第1版)是公認的關於編程的最佳實踐指南之一, 在過去的十多年間,本書一直在幫助開發人員編寫更好的軟體。

現在,作者將這本經典著作全新演繹,融入了最前沿的實踐技術,加入了上百個嶄新的代碼示例, 充分展示了軟體構建的藝術性和科學性。 McConnell彙集了來自研究機構、學術界以及業界日常實踐的主要知識, 把最高效的技術和最重要的原理交織融會為這本既清晰又實用的指南。

無論您的經驗水平如何,也不管您在怎樣的開發環境中工作,也無論項目是大是小, 本書都將激發您的思維並幫助您構建高品質的代碼。

《代碼大全(第2版))》做了全面的更新,增加了很多與時俱進的內容,包括對新語言、新的開發過程與方法論的討論等等。

2、《程序員修鍊之道》

推薦數:1504

對於那些已經學習過編程機制的程序員來說,這是一本卓越的書。 或許他們還是在校生,但對要自己做什麼,還感覺不是很安全。

就像草圖和架構之間的差別。雖然你在學校課堂上學到的是畫圖,你也可以畫的很漂亮, 但如果你覺得你不太知道從哪兒下手,如果某人要你獨自畫一個P2P的音樂交換網路圖,那這本書就適合你了。—— Joel

《程序員修鍊之道:從小工到專家》內容簡介:《程序員修鍊之道》由一系列獨立的部分組成, 涵蓋的主題從個人責任、職業發展,知道用於使代碼保持靈活、並且易於改編和復用的各種架構技術, 利用許多富有娛樂性的奇聞軼事、有思想性的例子及有趣的類比, 全面闡釋了軟體開發的許多不同方面的最佳實踐和重大陷阱。

無論你是初學者,是有經驗的程序員,還是軟體項目經理,《程序員修鍊之道:從小工到專家》都適合你閱讀。

3、《計算機程序的構造和解釋》

推薦數:916

就個人而言,這本書目前為止對我影響醉倒的一本編程書。

《代碼大全》、《重構》和《設計模式》這些經典書會教給你高效的工作習慣和交易細節。 其他像《人件集》、《計算機編程心理學》和《人月神話》這些書會深入軟體開發的心理層面。 其他書籍則處理演算法。這些書都有自己所屬的位置。

然而《計算機程序的構造和解釋》與這些不同。 這是一本會啟發你的書,它會燃起你編寫出色程序的熱情; 它還將教會你認識並欣賞美; 它會讓你有種敬畏,讓你難以抑制地渴望學習更多的東西。

其他書或許會讓你成為一位更出色的程序員,但此書將一定會讓你成為一名程序員。

同時,你將會學到其他東西,函數式編程(第三章)、惰性計算、元編程、虛擬機、解釋器和編譯器。

一些人認為此書不適合新手。 個人認為,雖然我並不完全認同要有一些編程經驗才能讀此書,但我還是一定推薦給初學者。 畢竟這本書是寫給著名的6.001,是麻省理工學院的入門編程課程。 此書或許需要多做努力(尤其你在做練習的時候,你也應當如此),但這個價是對得起這本書的。

4、《C程序設計語言》

推薦數:774

這本書簡潔易讀,會教給你三件事:C 編程語言;如何像程序員一樣思考;底層計算模型。 (這對理解「底層」非常重要)—— Nathan

《C程序設計語言》(第2版新版)講述深入淺出,配合典型例證,通俗易懂,實用性強, 適合作為大專院校計算機專業或非計算機專業的C語言教材,也可以作為從事計算機相關軟硬體開發的技術人員的參考書。

《C程序設計語言》(第2版新版)原著即為C語言的設計者之一Dennis M.Ritchie和著名的計算機科學家Brian W.Kernighan合著的 一本介紹C語言的權威經典著作。 我們現在見到的大量論述C語言程序設計的教材和專著均以此書為藍本。 原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標準C的基礎。

人們熟知的「hello,world」程序就是由本書首次引入的,現在,這一程序已經成為所有程序設計語言入門的第一課。

5、《演算法導論》

推薦數:671

《代碼大全》教你如何正確編程; 《人月神話》教你如何正確管理; 《設計模式》教你如何正確設計……

在我看來,代碼只是一個工具,並非精髓。 開發軟體的主要部分是創建新演算法或重新實現現有演算法。 其他部分則像重新組裝樂高磚塊或創建「管理」層。

我依然夢想這樣的工作,我的大部分時間(&>50%)是在寫演算法,其他「管理」細節則留給其他人…… —— Ran Biron

  • 經典的演算法書,被亞馬遜網,《程序員》等評選為2006年最受讀者喜愛的十大IT圖書之一。
  • 演算法領域的標準教材,全球多所知名大學選用
  • MIT名師聯手鑄就,被譽為「計算機演算法的聖經」
  • 編寫上採用了「五個一」,即一章介紹一個演算法、一種設計技術、一個應用領域和一個相關話題。

6、《重構:改善既有代碼的設計》

推薦數:617

《重構:改善既有代碼的設計》清晰地揭示了重構的過程,解釋了重構的原理和最佳實踐方式, 並給出了何時以及何地應該開始挖掘代碼以求改善。 書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術。

《重構:改善既有代碼的設計》提出的重構準則將幫助你一次一小步地修改你的代碼,從而減少了開發過程中的風險。

《重構:改善既有代碼的設計》適合軟體開發人員、項目管理人員等閱讀, 也可作為高等院校計算機及相關專業師生的參考讀物。

我想我不得不推薦《重構》:改進現有代碼的設計。—— Martin
我必須承認,我最喜歡的編程語錄是出自這本書:任何一個傻瓜都能寫出計算機能理解的程序, 而優秀的程序員卻能寫出別人能讀得懂的程序。—— Martin Fowler

7、《設計模式》

推薦數:617

自1995年出版以來,本書一直名列Amazon和各大書店銷售榜前列。 近10年後,本書仍是Addison-Wesley公司2003年最暢銷的圖書之一。 中文版銷售逾4萬冊。

就我而言,我認為四人幫編著的《設計模式》是一本極為有用的書。 雖然此書並不像其他建議一樣有關「元」編程,但它強調封裝諸如模式一類的優秀編程技術, 因而鼓勵其他人提出新模式和反模式(antipatterns),並運用於編程對話中。—— Chris Jester-Young

8、《人月神話》

推薦數:588

在軟體領域,很少能有像《人月神話》一樣具有深遠影響力並且暢銷不衰的著作。

Brooks博士為人們管理複雜項目提供了最具洞察力的見解。 既有很多發人深省的觀點,又有大量軟體工程的實踐。 本書內容來自Brooks博士在IBM公司System/360家族和OS/360中的項目管理經驗。

該書英文原版一經面世,即引起業內人士的強烈反響,後又譯為德、法、日、俄中等多種語言,全球銷量數百萬冊。 確立了其在行業內的經典地位。

9、《計算機程序設計藝術》

推薦數:542

《計算機程序設計藝術》系列著作對計算機領域產生了深遠的影響。 這一系列堪稱一項浩大的工程,自1962年開始編寫,計划出版7卷,目前已經出版了4卷。

《美國科學家》雜誌曾將這套書與愛因斯坦的《相對論》等書並列稱為20世紀最重要的12本物理學著作。 目前Knuth正將畢生精力投入到這部史詩性著作的撰寫中。

這是高德納傾注心血寫的一本書。—— Peter Coulton

10、《編譯原理》(龍書)

推薦數:462

我很奇怪,居然沒人提到龍書。(或許已有推薦,我沒有看到)。 我從沒忘過此書的第一版封面。 此書讓我知道了編譯器是多麼地神奇絕妙。- DB

11、《深入淺出設計模式》

推薦數:445

強大的寫作陣容。

  • 《Head First設計模式》(中文版) 作者Eric Freeman;
  • ElElisabeth Freeman是作家、講師和技術顧問。
  • Eric擁有耶魯大學的計算機科學博士學位,E1isabath擁有耶魯大學的計算機科學碩士學位。
  • Kathy Sierra(javaranch.com的創始人)FHBert Bates是暢銷的HeadFirst系列書籍的創立者,也是Sun公司Java開發員認證考試的開發者。

本書的產品設計應用神經生物學、認知科學,以及學習理論,這使得這本書能夠將這些知識深深地印在你的腦海里, 不容易被遺忘。

本書的編寫方式採用引導式教學,不直接告訴你該怎麼做,而是利用故事當作引子,帶領讀者思考並想辦法解決問題。 解決問題的過程中又會產生一些新的問題,再繼續思考、繼續解決問題,這樣可以加深體會。

作者以大量的生活化故事當背景,例如第1章是鴨子,第2章是氣象站,第3章是咖啡店, 書中搭配大量的插圖(幾乎每一頁都有圖),所以閱讀起來生動有趣,不會感覺到昏昏欲睡。

作者還利用歪歪斜斜的手寫字體,增加「現場感」。 精心設計許多爆笑的對白,讓學習過程不會太枯燥。 還有模式告白節目,將設計模式擬人化成節目來賓,暢談其內在的一切。 每一章都有數目不等的測驗題。 每章最後有一頁要點整理,這也是精華所在,我都是利用這一頁做複習。

我知道四人幫的《設計模式》是一本標準書,但倒不如先看看這部大部頭,此書更為簡易。 一旦你了解了解了基本原則,可以去看四人幫的那本聖經了。- Calanus

12、《哥德爾、艾舍爾、巴赫書:集異璧之大成》

推薦數:437

如果下昂真正深入閱讀,我推薦道格拉斯·侯世達(Douglas Hofstadter)的《哥德爾、艾舍爾、巴赫書》。 他極為深入研究了程序員每日都要面對的問題:遞歸、驗證、證明和布爾代數。 這是一本很出色的讀物,難度不大,偶爾有挑戰,一旦你要鏖戰到底,將是非常值得的。 – Jonik

13、《代碼整潔之道》

推薦數:329

細節之中自有天地,整潔成就卓越代碼

儘管糟糕的代碼也能運行,但如果代碼不整潔,會使整個開發團隊泥足深陷, 寫得不好的代碼每年都要耗費難以計數的時間和資源。 然而這種情況並非無法避免。

著名軟體專家RoberfC.Marlin在《代碼整潔之道》中為你呈現出了革命性的視野。 Martin攜同ObjectMetltor公司的同事,從他們有關整潔代碼的最佳敏捷實踐中提煉出軟體技藝的價值觀, 以饗讀者,讓你成為更優秀的程序員——只要你著手研讀《代碼整潔之道》。

閱讀《代碼整潔之道》需要你做些什麼呢?你將閱讀代碼——大量代碼。 《代碼整潔之道》促使你思考代碼中何謂正確,何謂錯誤。 更重要的是,《代碼整潔之道》將促使你重新評估自己的專業價值觀,以及對自己技藝的承諾。

從《代碼整潔之道》中可以學到:

  • 好代碼和糟糕的代碼之間的區別;
  • 如何編寫好代碼,如何將糟糕的代碼轉化為好代碼;
  • 如何創建好名稱、好函數、好對象和好類;
  • 如何格式化代碼以實現其可讀性的最大化;
  • 如何在不妨礙代碼邏輯的前提下充分實現錯誤處理;
  • 如何進行單元測試和測試驅動開發。

雖然《代碼整潔之道》和《代碼大全》有很多共同之處,但它有更為簡潔更為實際的清晰例子。 – Craig P. Motlin

14、《Effective C++》和《More Effective C++》

推薦數:297

在我職業生涯早期,Scott Meyer的《Effective C++》和後續的《More Effective C++》都對我的編程能力有著直接影響。 正如當時的一位朋友所說,這些書縮短你培養編程技能的過程,而其他人可能要花費數年。

去年對我影響最大的一本書是《大教堂與市集》,該書教會我很有關開源開發過程如何運作,和如何處理我代碼中的Bug。 – John Channing

15、《編程珠璣》

推薦數:282

多年以來,當程序員們推選出最心愛的計算機圖書時,《編程珠璣》總是位列前列。 正如自然界里珍珠出自細沙對牡蠣的磨礪,計算機科學大師Jon Bentley以其獨有的洞察力和創造力, 從磨礪程序員的實際問題中凝結出一篇篇不朽的編程「珠璣」, 成為世界計算機界名刊《ACM通訊》歷史上最受歡迎的專欄, 最終結集為兩部不朽的計算機科學經典名著,影響和激勵著一代又一代程序員和計算機科學工作者。

本書為第一卷,主要討論計算機科學中最本質的問題:如何正確選擇和高效地實現演算法。

儘管我不得不羞愧地承認,書中一半的東西我都沒有理解,但我真的推薦《編程珠璣》,書中有些令人驚奇的東西。 – Matt Warren

16、《修改代碼的藝術》by Michael Feathers

本書是繼《重構》和《重構與模式》之後探討修改代碼技術的又一里程碑式的著作, 而且從涵蓋面和深度上都超過了前兩部經典。 書中不僅講述面向對象語言(Java、C#和C++)代碼,也有專章討論C這樣的過程式語言。

作者將理解、測試和修改代碼的原理、技術和最新工具(自動化重構工具、單元測試框架、仿對象、集成測試框架等), 與解依賴技術和大量開發和設計優秀代碼的原則、最佳實踐相結合,許多內容非常深入,而且常常發前人所未發。

書中處處體現出作者獨到的洞察力,以及多年開發和指導軟體項目所積累的豐富經驗和深厚功力。 通過這部集大成之作,你不僅能掌握最頂尖的修改代碼技術,還可以大大提高對代碼和軟體開發的領悟力。

我認為沒有任何一本書能向這本書一樣影響了我的編程觀點。 它明確地告訴你如何處理其他人的代碼,含蓄地教會你避免哪些(以及為什麼要避免)。- Wolfbyte
同意。很多開發人員討論用乾淨的石板來編寫軟體。 但我想幾乎所有開發人員的某些時候是在吃其他開發人員的狗食。– Bernard Dy

17、《編碼:隱匿在計算機軟硬體背後的語言》

這是一本講述計算機工作原理的書。

不過,你千萬不要因為「工作原理」之類的字眼就武斷地認為,它是晦澀而難懂的。 作者用豐富的想像和清晰的筆墨將看似繁雜的理論闡述得通俗易懂,你絲毫不會感到枯燥和生硬。 更重要的是,你會因此而獲得對計算機工作原理較深刻的理解。 這種理解不是抽象層面上的,而是具有一定深度的,這種深度甚至不遜於「電氣工程師」和「程序員」的理解。

不管你是計算機高手,還是對這個神奇的機器充滿敬畏之心的菜鳥, 都不妨翻閱一下《編碼:隱匿在計算機軟硬體背後的語言》,讀一讀大師的經典作品,必然會有收穫。

我推薦Charles Petzold的《編碼》。 在這個充滿工具和IDE的年代,很多複雜度已經從程序員那「抽取」走了,這本書一本開眼之作。 – hemil

18、《禪與摩托車維修藝術 / Zen and the Art of Motorcycle Maintenance》

對我影響最大的那本書是 Robert Pirsig 的《禪與摩托車維修藝術》。 不管你做什麼事,總是要力求完美,徹底了解你手中的工具和任務,更為重要的是, 要有樂趣(因為如果你做事有樂趣,一切將自發引向更好的結果)。 – akr

19、《Peopleware / 人件集:人性化的軟體開發》

Demarco 和 Lister 表明,軟體開發中的首要問題是人,並非技術。 他們的答案並不簡單,只是令人難以置信的成功。 第二版新增加了八章內容。 – Eduardo Molteni

20、《Coders at Work / 編程人生》

這是一本訪談筆錄,記錄了當今最具個人魅力的15位軟體先驅的編程生涯。 包括DonaldKnuth、Jamie Zawinski、Joshua Bloch、Ken Thompson等在內的業界傳奇人物,為我們講述了 他們是怎麼學習編程的,在編程過程中發現了什麼以及他們對未來的看法, 並對諸如應該如何設計軟體等長久以來一直困擾很多程序員的問題談了自己的觀點。

一本非常有影響力的書,可以從中學到一些業界頂級人士的經驗,了解他們如何思考並工作。 – Jahanzeb Farooq

21、《Surely You』re Joking, Mr. Feynman! / 別鬧了,費曼先生!》

雖然這本書可能有點偏題,但不管你信不信,這本書曾在計算機科學專業課程的閱讀列表之上。 一個優秀的角色模型,一本有關好奇心的優秀書籍。 – mike511

22、《Effective Java 中文版》

此書第二版教你如何編寫漂亮並高效的代碼,雖然這是一本Java書,但其中有很多跨語言的理念。 – Marcio Aguiar

23、《Patterns of Enterprise Application Architecture / 企業應用架構模式》

很奇怪,還沒人推薦 Martin Fowler 的《企業應用架構模式》- levi rosol

24、《The Little Schemer》和《The Seasoned Schemer》 nmiranda

這兩本是LISP的英文書,尚無中文版。 美國東北大學網站上也有電子版。

25、《交互設計之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity》該書作者:Alan Cooper,人稱Visual Basic之父,交互設計之父。

本書是基於眾多商務案例,講述如何創建更好的、高客戶忠誠度的軟體產品和基於軟體的高科技產品的書。 本書列舉了很多真實可信的實際例子,說明目前在軟體產品和基於軟體的高科技產品中,普遍存在著「難用」的問題。

作者認為,「難用」問題是由這些產品中存在著的高度「認知摩擦」引起的, 而產生這個問題的根源在於現今軟體開發過程中欠缺了一個為用戶利益著想的前期「交互設計」階段。 「難用」的產品不僅損害了用戶的利益,最終也將導致企業的失敗。

本書通過一些生動的實例,讓人信服地講述了由作者倡導的「目標導向」交互設計方法在解決「難用」問題方面的有效性, 證實了只有改變現有觀念,才能有效地在開發過程中引入交互設計,將產品的設計引向成功。

本書雖然是一本面向商務人員而編寫的書,但也適合於所有參與軟體產品和基於軟體的高科技產品開發的專業人士, 以及關心軟體行業和高科技行業現狀與發展的人士閱讀。

他還有另一本中文版著作:《About Face 3 交互設計精髓》

26、《Why』s (Poignant) Guide to Ruby 》

如果你不是程序員,閱讀此書可能會很有趣,但如果你已經是個程序員,可能會有點乏味。

27、《Unix編程藝術》

It is useful regardless operating system you use. – J.F. Sebastian
不管你使用什麼操作系統,這本書都很有用。 – J.F. Sebastian

28、《高效程序員的45個習慣:敏捷開發修鍊之道》

45個習慣,分為7個方面:工作態度、學習、軟體交付、反饋、編碼、調試和協作。

每一個具體的習慣里,一開始提出一個謬論,然後展開分析,之後有正隊性地提出正確的做法,並設身處地地講出了正確做法給你個人的「切身感受」,最後列出幾條注意事項,幫助你修正自己的做法(「平衡的藝術」)。

29、《測試驅動開發》

前面已經提到的很多書都啟發了我,並影響了我,但這本書每位程序員都應該讀。 它向我展示了單元測試和TDD的重要性,並讓我很快上手。 – Curro
我不關心你的代碼有多好或優雅。 如果你沒有測試,你或許就如同沒有編寫代碼。 這本書得到的推薦數應該更高些。 人們討論編寫用戶喜歡的軟體,或既設計出色並健壯的高效代碼,但如果你的軟體有一堆bug,談論那些東西毫無意義。– Adam Gent

30、《點石成金:訪客至上的網頁設計秘笈》

可用性設計是Web設計中最重要也是難度最大的一項任務。 《點石成金-訪客至上的網頁設計秘笈(原書第二版)》作者根據多年從業的經驗,剖析用戶的心理, 在用戶使用的模式、為掃描進行設計、導航設計、主頁布局、可用性測試等方面提出了許多獨特的觀點, 並給出了大量簡單、易行的可用性設計的建議。

本書短小精鍊,語言輕鬆詼諧,書中穿插大量色彩豐富的屏幕截圖、趣味叢生的卡通插圖以及包含大量信息的圖表, 使枯燥的設計原理變得平易近人。

本書適合從事Web設計和Web開發的技術人員閱讀,特別適合為如何留住訪問者而苦惱的網站/網頁設計人員閱讀。 這是一本關於Web設計原則而不是Web設計技術的書。

本書作者是Web設計專家,具有豐富的實踐經驗。 他用幽默的語言為你揭示Web設計中重要但卻容易被忽視的問題,只需幾個小時, 你便能對照書中講授的設計原則找到網站設計的癥結所在,令你的網站煥然一新。

取決於你所追求的目標。 我喜歡《代碼大全》是因純編程,《點石成金》是一本有關UI設計的卓越書籍。 – Justin Standard


  • SICP(Structure and Interpretation of Computer Programs)
  • 深入理解計算機系統
  • 代碼大全2
  • 人件
  • 人月神話
  • 軟體隨想錄
  • 演算法導論(麻省理工學院出版社)
  • 離散數學及其應用
  • 設計模式
  • 編程之美
  • 黑客與畫家
  • 編程珠璣
  • The Little Schemer
  • Simply Scheme_Introducing_Computer_Science
  • TCP/IP詳解
  • Unix 編程藝術
  • 技術的本質
  • 軟體隨想錄
  • 計算機程序設計藝術
  • 程序員的自我修養:鏈接、裝載與庫
  • 程序員修鍊之道
  • 高效能程序員的修鍊
  • 《失控》《科技想要什麼》《技術元素》凱文凱利
  • 程序開發心理學

摘自:stanzhai/be-a-professional-programmer


經典的書太多了,各種推薦你看都看不完。我實在不明白「最好的編程語言是什麼」、「最值得、必看的書有哪些」這類話題為什麼層出不窮?

比如我說《Effective Java》是Java程序員必看,那對Python程序員是不是必看?對張三是,對李四呢?

只有觸動自己靈魂深處的才是你值得看的,你又不是別人的影子,別人值得看的,你又未必一定合適。


《計算機導論》
《C語言從入門到精通》
《計算機系統機構》
《數據結構》
《C#從入門到精通》
《http://ASP.NET MVC高級編程》
《系統架構從入門到精通》
《佛經》
《老子》
《頸椎病康復指南》
《腰椎間盤突出日常護理》
《腱鞘炎的預防與防治》
《高血壓降壓寶典》
《強迫症的自我恢復》
《精神病癥狀學》
《鋼鐵是怎樣練成的》
……
《活著》


《代碼大全》


推薦閱讀:

TAG:極客Geek | 程序員 | 編程 | 程序員修養 | 白帽黑客WhiteHat |