03.02 有哪些程序員必讀書籍值得推薦?

離殤_夜未央


國內的放在文章下面,第一部分推薦國外的書,是Treehouse在Facebook和Twitter做了一項問卷調查。

最終,最受程序員推薦的前25本書。(沒有什麼特別的順序。)

並把書分成五類:General Programming(通用程序設計)、HTML & CSS、JavaScript & jQuery、Python、其他。

General Programming(通用程序設計)

1、《代碼整潔之道》(Clean Code: A Handbook of Agile Software Craftsmanship)

《代碼整潔之道》應該很多看書的程序員都有聽過,簡直是寫出乾淨代碼的一劑良藥,並且Robert C. Martin在寫這本書中也有很多工作之中能用得到的操作實踐旨在幫助開發者編寫出乾淨的代碼,從而有效提升代碼質量。

2、《代碼大全》

本書幾乎涵蓋了軟件開發過程中的各方面,工作學習中的查閱寶典。

3、《Think Like a Programmer》

本書旨在教讀者如何系統地解決問題,書中提供大量的技術和示例,但是這本書不會告訴任何人在特定的環境下該做什麼,而是培養讀者解決問題的能力,讓他們用程序員思維去突破每一個難題。(聽書名彷彿是有人要改行一樣)

4、《編碼》

這本書被描述為不懂計算機的人都能看得懂,看評分就知道這本書有多友好了,但這並不是說本書的知識十分淺顯,相反地,作者通過一種巧妙的方式,完整介紹了計算機的原理和應用,讓讀者充分理解軟件和硬件的區別。

5、《Starting Out with Programming Logic & Design 》

本書是一本介紹性編程手冊,旨在讓沒有任何編程經驗的人,學習編程的概念和邏輯,書中沒有涉及太多的語言語法,更能增加新手學習編程的信心。(打底子,基礎很重要。)

6、《Beginning Programming All-In-One Desk Reference For Dummies 》

本書也是一本非常好的編程入門書。在這個實用指南中,讀者將瞭解到編譯、算法、最佳實踐、調試程序等概念。

7、《Cracking the Coding Interview》

本書是適合硅谷技術面試的一本面試指南,因為題目分類清晰,風格比較靠譜,所以廣受推崇。(畢竟這是美國的調查,所以是硅谷的面試。)

8、《第一本書系列》(Java,Python,設計模式,JavaScript,C#,WordPress,Rails)

一共有很多本書,這裡就寫出兩本,基本每個方面都會出一本。

HTML & CSS

9、《HTML & CSS設計與構建網站》

(圖片上傳一直失敗)

本書採用有別於許多傳統編程書籍的新穎編排方式,指導讀者如何構建出用戶友好、令人賞心悅目的Web內容

10、《Head First HTML and CSS》

(圖片上傳一直失敗)

head first系列作為初學者入門最合適不過,這本書展示了學習創建符合工業標準的Web頁面的完整歷程,讓學會HTML和CSS來創建你想要的Web頁面。

11、《You Don't Know JS》

本書旨在為那些變成新手,提供了學習JavaScript必要的背景知識,一共分為上、中、下三卷,上圖為中卷,本系列書籍介紹了學習編程的基本構建模塊,以及JavaScript的核心機制。

12、《JavaScript編程精解(第2版)》

覆蓋了JavaScript的絕大多數語言特性,涉及Web編程和Node.js服務器編程,以及JavaScript性能優化等。

13、《Head First JavaScript程序設計》

本書內容涵蓋JavaScript的基本知識以及對象、函數和瀏覽器文檔對象模型等高階主題。書中配備了大量有趣的實例、圖示和練習,讓讀者輕輕鬆鬆掌握JavaScript。

14、《JavaScript & jQuery》

這本彩色書籍採用了一種視覺方法來講述JavaScript和jQuery,向讀者展示瞭如何通過使用代碼示例、信息圖形和攝影作品使web頁面更具交互性和讓界面更直觀。

15、《JavaScript高級程序設計(第3版)》

全書從JavaScript 語言實現的各個組成部分——語言核心、DOM、BOM、事件模型講起,深入淺出地探討了面向對象編程、Ajax 與Comet 服務器端通信,HTML5 表單、媒體等內容,還介紹了離線應用和與維護、性能、部署相關的最佳開發實踐。

16、《JavaScript忍者秘籍(第2版)》

本書適合具備一定JavaScript基礎知識的讀者閱讀,書中分4個部分,從不同層次講述了逐步成為JavaScript高手所需的知識。

17、《Javascript: Javascript Programming The Ultimate Beginners Guide》

本教程是為javascript初學者準備的,幫助他們理解javascript構建動態web頁面和web應用程序的基本功能,但我覺得不太行。也可能是因為我比較垃圾。

Python

18、《笨方法學Python 3》

本是一本入門的python學習書籍,書中的內容以52個exercise構成,按照由易到難、循序漸進的方式,一步一步引導讀者深入python。

19、《流暢的Python》

從語言設計層面剖析編程細節,兼顧Python 3和Python 2,教你寫出風格地道的Python代碼。

20、《Python編程:從入門到實踐》

本書是一本針對所有層次的Pytho入門書。第一部分側重基本概念的講解,第二部分通過開發三個項目,幫讀者解決編程中的問題與困惑。(我最推薦這本用來入門。)

21、《Python編程快速上手》

本書是一本面向實踐的Python編程實用指南。本書的目的,不僅是介紹Python語言的基礎知識,而且還通過項目教應用這些知識和技能。

其他

22、《程序員修煉之道》

本書涵蓋的主題從個人責任、職業發展,直到用於使代碼保持靈活、並且易於改編和複用的各種架構技術,利用許多富有娛樂性的奇聞軼事、有思想性的例子及有趣的類比,全面闡釋了軟件開發的許多不同方面的最佳實踐和重大陷阱。

23、《iOS Programming: The Big Nerd Ranch Guide 》

ios的,在這隻提一提吧。

24、《Java How to Program, Early Objects》

價格拒絕,極其不友好。

25、《指導生活的算法: 人類決策的計算機科學》

從尋找配偶到尋找停車位,從整理收件箱到展望未來,這些算法將計算機科學的智慧轉化為人類的生存策略。很有趣的一本書。



中國版本前面先按照自己的愛好來推薦,然後按照網上推薦率。

這本書是從數據挖掘的應用點出發的;有電力、航空、醫療、互聯網,生產製造還有公共服務的各種行業的真是案例為主寫的、主要介紹了python數據挖掘建模的過程,好在實踐性很強,並且行業領域很多。個人認為重點就在於,先是以某個行業的挖掘需求為前提,有很好的代入感。就是帶著看到需求,教你如何解決需求。

上面這本書,是一本知識點很全的入門書籍。這個前期作為入門很好的點在於,裡面有配套光盤,並且還有配套課程,就是這個知識點的所有課程有視頻講解。有的時候死看書,看不下去,並且在學習的時候遇到問題沒辦法解決。但是配套視頻就很好的解決了。前期可以作為入門書籍,後期的話可以作為工具書。哪裡忘了看哪裡。

python文本分析這本書,也是入門數據。從自然語言開始到python的基礎,從而深一步的學習分析理念和機器學習的概念。很全面的提供技術和概念。裡面包含了豐富的實際案例,比如構建分類新聞文章的文本系統,使用主題建模和文本摘要分析app還有遊戲評論。還有就是熱門電影概要的聚類分析等等。裡面也有基於python和流行nlp開源庫和文本分析的工具等等。

還有這本書,介紹就說了大量的時間案例教會我們如何python的庫高效的解決各樣的數據分析。優點在書中所講的是利用python進行數據控制,處理整理分析等方面的細節和藥店。主要就是我們都知道python有很多很好用的庫,但是我們不知道如何使用。而這本書就很好的解決了這個問。具體案例用具體的庫。重點就在於如何高效的使用python語言和豐富的庫。

這本書可以帶我們深入理解其底層算法和可用的優化方法。而且為我們很好的提供了機器學習的設計過程和堅實的基礎。能夠讓我們為特定問題建立制定機器學習模型。

上面這本書,建議在學懂python之後去看。首先書是谷歌高級軟件工程師結合自己的多年使用python的經驗,深入的討論如何提高python代碼的技巧,還有禁忌點還有豐富的時間經驗。之所以是學會了看,因為裡面有很多使用的代碼示例來解釋他所謂的提高技巧的方法。並且有很多能夠改善代碼功能以及運行效率的習慣用法。再提高階段看這本書,會對碼農有更高一層的理解。

1、《代碼大全》 史蒂夫·邁克康奈爾推薦數:1684

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



黑馬程序員


工作10年+程序員分享一些自己看過、覺得還不錯的程序員學習書籍,主要是後臺開發或者雲計算方向,希望對想拿到BATMD等互聯網公司的同學offer有用。

一、計算機網絡,推薦書籍:

1、計算機網絡(謝希仁)

2、TCP/IP詳解

3、HTTP權威指南

二、數據庫、Redis,推薦書籍:

1、MySQL數據庫

2、應用從入門到精通

3、高性能Mysql

4、Redis設計與實現 Redis實戰

三、數據結構與算法,推薦書籍:

1、數據結構C語言版(嚴蔚敏)

2、java數據結構和算法(Robert Lafore)

3、劍指offer及leetcode刷題(大神可以看一下算法導論)

四、java,推薦書籍:

1、設計模式那點事

2、瘋狂java講義

3、java併發編程實戰

4、深入理解java虛擬機

5、java編程思想

五、其他推薦:

1、Hadoop權威指南(hadoop:mapreduce、HDFS、yarn等等)

2、Hive編程指南(hive:很常用的處理工具)

以上是推薦給程序員們的必讀書籍。

BAT架構師原創出品的【java架構師學習80期專題資料合集】免費送,發送【架構】,無套路立即領取。

覺得有用點贊支持,小夥伴們覺得還不錯的書籍,也可以在評論貼出來分享給大家。


優知學院


乾貨來了!

這個問題因人而異,即使是程序員也分很多種,這裡就Python相關推薦一些不錯的書籍!

不BB,show the code

先分享一張圖,這是Python之禪作者劉老師推薦的Python書籍清單,非常乾貨!

下面根據劉老師總結分享的進行介紹!

Python入門系列

有這幾本書非常不錯,值得新手選擇適合自己的學習!

  • 《Python編程:從入門到實踐》

我自己就是快速過了一遍這本書籍入的坑,非常適合新手!

豆瓣評分:9.1

推薦指數:❤️❤️❤️❤️❤️

本書是一本針對所有層次的Python 讀者而作的Python 入門書。全書分兩部分:第一部分介紹用Python 編程所必須瞭解的基本概念,包括matplotlib、NumPy 和Pygal 等強大的Python 庫和工具介紹,以及列表、字典、if 語句、類、文件與異常、代碼測試等內容;第二部分將理論付諸實踐,講解如何開發三個項目,包括簡單的Python 2D 遊戲開發如何利用數據生成交互式的信息圖,以及創建和定製簡單的Web 應用,並幫讀者解決常見編程問題和困惑。

  • 《Python編程快速上手》

豆瓣評分:9.0

推薦指數:❤️❤️❤️❤️

本書是一本面向實踐的Python編程實用指南。本書的目的,不僅是介紹Python語言的基礎知識,而且還通過項目實踐教會讀者如何應用這些知識和技能。本書的首部分介紹了基本Python編程概念,第二部分介紹了一些不同的任務,通過編寫Python程序,可以讓計算機自動完成它們。

進階系列

上邊兩本書還是相對比較基礎,進階的推薦如下兩本:

  • 《流暢的Python》

豆瓣評分:9.4

推薦指數:❤️❤️❤️❤️❤️

本書致力於幫助Python開發人員挖掘這門語言及相關程序庫的優秀特性,避免重複勞動,同時寫出簡潔、流暢、易讀、易維護,並且具有地道Python風格的代碼。本書尤其深入探討了Python語言的高級用法,涵蓋數據結構、Python風格的對象、並行與併發,以及元編程等不同的方面。本書適合中高級Python軟件開發人員閱讀參考。

  • 《Python Cookbook中文版》

豆瓣評分:9.3

推薦指數:❤️❤️❤️❤️❤️

本書覆蓋了Python應用中的很多常見問題,並提出了通用的解決方案。書中包含了大量實用的編程技巧和示例代碼,並在Python 3.3環境下進行了測試,可以很方便地應用到實際項目中去。此外,《Python Cookbook(第3版)中文版》還詳細講解了解決方案是如何工作的,以及為什麼能夠工作。非常適合具有一定編程基礎的Python程序員閱讀參考。

網絡爬蟲方向

這裡著重推薦靜覓博主崔慶才老師的《Python的網絡爬蟲開發實戰》,不過大家如果想上手,可以等等作者快要更新的第二版!

豆瓣評分:9.0

推薦指數:❤️❤️❤️❤️

數據分析挖掘

劉老師推薦的2本書口碑都不錯,我自己學習過第 2 本,強推《利用Python進行數據分析(第2版)》

豆瓣評分:8.2

推薦指數:❤️❤️❤️❤️

本書由Python pandas項目創始人Wes McKinney親筆撰寫,詳細介紹利用Python進行操作、處理、清洗和規整數據等方面的具體細節和基本要點。第2版針對Python 3.6進行全面修訂和更新,涵蓋新版的pandas、NumPy、IPython和Jupyter,並增加大量實際案例,可以幫助你高效解決一系列數據分析問題。

深度學習入門

這裡除了聖經花書,我想推薦《Python深度學習》這本書!

豆瓣評分:9.6

推薦指數:❤️❤️❤️❤️❤️

本書由Keras之父、現任Google人工智能研究員的弗朗索瓦•肖萊(François Chollet)執筆,詳盡介紹了用Python和Keras進行深度學習的探索實踐,涉及計算機視覺、自然語言處理、生成式模型等應用。書中包含30多個代碼示例,步驟講解詳細透徹。由於本書立足於人工智能的可達性和大眾化,讀者無須具備機器學習相關背景知識即可展開閱讀。在學習完本書後,讀者將具備搭建自己的深度學習環境、建立圖像識別模型、生成圖像和文字等能力。

寫在最後

讀書不是唯一的學習方式,但是他是成本最低的一種方式,希望上邊的一些書籍推薦對想入門Python的你有所幫助!

歡迎你和我一起來學習Python!感謝給一個👍🏻❤️


小詹學Python


本文把程序員所需掌握的關鍵知識總結為三大類19個關鍵概念,然後給出了掌握每個關鍵概念所需的入門書籍,必讀書籍,以及延伸閱讀。旨在成為最好最全面的程序員必讀書單。

程序員必讀書單

入門書籍

基礎理論 : 編碼:隱匿在計算機軟硬件背後的語言

編程語言 :

C : C 和指針

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

Java : Java 核心技術(第9版)

C# : 精通 C#(第6版)

JavaScript : JavaScript DOM編程藝術(第2版)

Python : Python 基礎教程(第二版)

編程語言理論 : 編程語言實現模式

程序設計 : 程序設計方法

算法與數據結構 : 算法(第4版)

程序調試 : 調試九法——軟硬件錯誤的排查之道

編程實踐 : 程序設計實踐

面向對象程序設計 : Head First設計模式

重構 : 重構

軟件測試 : How to Break Software

項目管理 : 極客與團隊

專業開發 : 程序員修煉之道:從小工到專家

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

界面設計 : 寫給大家看的設計書

互設計 : 通用設計法則

個人成長:

職業規劃 : 軟件開發者路線圖

思維方式 : 程序員的思維修煉:開發認知潛能的九堂課

求職面試 : 金領簡歷:敲開蘋果微軟谷歌的大門

英語寫作 : The Only Grammar Book You’ll Ever Need

必讀書籍

程序設計:

基礎理論 : 深入理解計算機系統(第 2 版)

編程語言 :

C : C 程序設計語言(第 2 版)

C++ : C++程序設計語言(第 4 版)

Java : Effective Java(第 2 版)

C# : CLR via C#(第 4 版)

JavaScript : JavaScript 語言精粹

Python : Python參考手冊(第 4 版)

編程語言理論 : 程序設計語言——實踐之路(第 3 版)

程序設計 : 計算機程序的構造與解釋(第 2 版)

算法與數據結構 : 編程珠璣(第 2 版)

程序調試 : 調試九法——軟硬件錯誤的排查之道

軟件開發:

編程實踐 : 代碼大全(第 2 版)

面向對象程序設計 : 設計模式

重構 : 修改代碼的藝術

軟件測試 : xUnit Test Patterns

項目管理 : 人月神話

專業開發 : 程序員職業素養

大師之言 : 編程人生:15 位軟件先驅訪談錄

界面設計 : 認知與設計:理解UI設計準則(第 2 版)

交互設計 : 交互設計精髓(第 3 版)

以上推薦覆蓋了軟件開發各個關鍵領域的入門書籍和必讀書籍,我相信它可以滿足絕大多數程序員的需求,無論你是初學者,還是進階者,都可以從中獲益。


華清遠見成都中心


我就從一個算法初學者的角度來回答一下吧。

推薦一下「算法與數據結構」從入門到進階的書單。

一.入門系列

這些書籍通過圖片、打比方等通俗易懂的方法來講述,讓你能達到懂一些基礎算法,線性表,堆棧,隊列,樹,圖,DP算法,揹包問題等,不要求會實現,但是看過以下這些書對於之後實現算法打下堅實的思維基礎。

很適合在閒暇之餘拿出來閱讀一番。

1.1 《啊哈!算法》

閱讀鏈接:https://book.douban.com/subject/25894685/

這不過是一本有趣的算法書而已。和別的算法書比較,如果硬要說它有什麼特點的話,那就是你能看懂它。

推薦理由: 本書中涉及到的數據結構有棧、隊列、鏈表、樹、並查集、堆和圖等;涉及到的算法有排序、枚舉、深度和廣度優先搜索、圖的遍歷,當然還有圖論中不可以缺少的四種最短路徑算法、兩種最小生成樹算法、 割點與割邊算法、二分圖的最大匹配算法等

1.2《算法圖解》

閱讀鏈接:https://book.douban.com/subject/26979890/

推薦理由:這本圖解書很容易看懂,不枯燥。書中的前三章將幫助你打下基礎,帶你學習二分查找、大O表示法、兩種基本的數據結構以及遞歸等。餘下的篇幅將主要介紹應用廣泛的算法,具體內容包括:面對具體問題時的解決技巧,比如,何時採用貪婪算法或動態規劃;散列表的應用;圖算法;K最近鄰算法。

1.3《妙趣橫生的算法(C語言實現 第2版)》

閱讀鏈接:https://book.douban.com/subject/4710825/

推薦理由:理論與實踐相結合,旨在幫助讀者理解算法,並提高C語言編程能力,培養讀者的編程興趣,並鞏固已有的C語言知識。

1.4《趣學算法》

閱讀鏈接:https://book.douban.com/subject/27109832/

推薦理由:非常好的一本書,圖解多,思路清晰,不僅講了問題分析算法設計的過程,還講了如何優化算法,使讀者體驗算法的奧妙

1.5《大話數據結構》

閱讀鏈接:https://book.douban.com/subject/6424904/

推薦理由:文中附有大量插圖,適合對大段文字提不起興趣的朋友。以一個計算機教師教學為場景,講解數據結構和相關算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,並充分運用圖形語言來體現抽象內容,對數據結構所涉及到的一些經典算法做到逐行分析、多算法比較。與市場上的同類數據結構圖書相比,本書內容趣味易讀,算法講解細緻深刻,是一本非常適合自學的讀物。

1.6 《學習算法思想 修煉編程內功》

慕課網鏈接:https://coding.imooc.com/class/71.html

推薦理由:視頻課程,這樣精緻的課程很難找到第二個,我暫時還沒看過比這個課程能更好的進行算法入門了,小吳的PPT製作動畫靈感就是來源於此。

二.基礎系列

通過基本入門算法書的調教,你已經逐漸體會到了算法的魅力,現在正是時候去閱讀基礎系列踏入算法的領域!!!

這些書籍需要你費點心思去閱讀。

2.1《算法導論中文版》

閱讀鏈接:https://book.douban.com/subject/20432061/

排在基礎系列第一的位置應該沒意見吧:)

推薦理由:本書將嚴謹性和全面性融為一體,深入討論各類算法,並著力使這些算法的設計和分析能為各個層次的讀者接受。

2.2《數據結構與算法 Java版》

閱讀鏈接:https://book.douban.com/subject/21519616/

適合想通過Java語言來學習算法的小夥伴們。

推薦理由:本書把算法分析與最有效率的Java程序的開發有機地結合起來,深入分析每種算法,內容全面、縝密嚴格,並細緻講解精心構造程序的方法。

2.3《數據結構與算法:Python語言描述》

閱讀鏈接:https://book.douban.com/subject/26702568/

適合想通過Python語言來學習算法的小夥伴們。

推薦理由:本書基於Python語言介紹了數據結構與算法的基本知識,主要內容包括抽象數據類型和Python面向對象程序設計、線性表、字符串、棧和隊列、二叉樹和樹、集合、排序以及算法的基本知識。本書延續問題求解的思路,從解決問題的目標來組織教學內容,注重理論與實踐的並用。

2.4《學習JavaScrit數據結構與算法(第2版)》

閱讀鏈接:https://book.douban.com/subject/26639401/

適合想通過JavaScrit語言來學習算法的小夥伴們。

推薦理由:本書首先介紹了JavaScript語言的基礎知識,接下來討論了數組、棧、隊列、鏈表、集合、字典、散列表、樹、圖等數據結構,之後探討了各種排序和搜索算法,包括冒泡排序、選擇排序、插入排序、歸併排序、快速排序、順序搜索、二分搜索,還介紹了動態規劃和貪心算法等常用的高級算法及相關知識。

2.5《數據結構與算法分析:C語言描述(原書第2版)》

閱讀鏈接:https://book.douban.com/subject/1139426/

適合想通過C語言來學習算法的小夥伴們。

推薦理由:在本書中,作者更加精煉並強化了他對算法和數據結構方面創新的處理方法。通過C程序的實現,著重闡述了抽象數據類型的概念,並對算法的效率、性能和運行時間進行了分析。

2.6《數據結構與算法分析:C++描述(第3版)》

閱讀鏈接:https://book.douban.com/subject/1971825/

適合想通過C++語言來學習算法的小夥伴們。

推薦理由:這是是數據結構和算法分析的經典教材,書中使用主流的程序設計語言C++作為具體的實現語言。

三.進階系列

掌握了一定的數據結構與算法的知識,現在你已經是一名合格的程序員了。但如果你想要參加面試,那就需要閱讀以下書籍進行準備了。

這些書籍需要你花費時間和精力去仔細閱讀,但為了漲薪,值得!

3.1 《劍指Offer:名企面試官精講典型編程題(第2版)》

閱讀鏈接:https://book.douban.com/subject/27008702/

我想,只要是程序員應該都聽說過這本書吧,哪怕你沒看過。

推薦理由:《劍指Offer:名企面試官精講典型編程題(第2版)》剖析了80個典型的編程面試題,系統整理基礎知識、代碼質量、解題思路、優化效率和綜合能力這5個面試要點。

3.2《算法謎題》

閱讀鏈接:https://book.douban.com/subject/25805152/

推薦理由:算法是計算機科學領域最重要的基石之一。算法謎題,就是能夠直接或間接地採用算法來加以解決的謎題。求解算法謎題是培養和鍛鍊算法思維能力一種最有效和最有樂趣的途徑。

3.3《編程之法 面試和算法心得》

閱讀鏈接:https://book.douban.com/subject/26641732/

推薦理由:本書涉及面試、算法、機器學習三個主題。書中的每道編程題目都給出了多種思路、多種解法,不斷優化、逐層遞進。

四.工作系列

適合已經工作的程序員閱讀,可以提升你的思維廣度,也可以在面試前翻一翻。

4.1《編程珠璣(第2版•修訂版)》

閱讀鏈接:https://book.douban.com/subject/26302533/

歷史上最偉大的計算機科學著作之一!!!

推薦理由:融深邃思想、實戰技術與趣味軼事於一爐的奇書,帶你真正領略計算機科學之美。

4.2《程序員實用算法》

閱讀鏈接:https://book.douban.com/subject/3923731/

推薦理由:《程序員實用算法》重點關注的是實用、立即可用的代碼,並且廣泛討論了可移植性和特定於實現的細節。《程序員實用算法》作者介紹了一些有用但很少被討論的算法,它們可用於語音查找、日期、B樹和索引文件、數據壓縮、任意精度的算術、校驗和與數據驗證,並且還最全面地介紹了查找例程、排序算法和數據結構。

4.3《編程之美》

閱讀鏈接:https://book.douban.com/subject/3004255/

推薦理由:這本書收集了約60道算法和程序設計題目,這些題目大部分在近年的筆試、面試中出現過,或者是被微軟員工熱烈討論過。作者試圖從書中各種有趣的問題出發,引導讀者發現問題,分析問題,解決問題,尋找更優的解法。

五.大佬系列

適合大佬們踏入的領域,小吳膜拜中。

5.1《數據挖掘原理與算法》

閱讀鏈接:https://book.douban.com/subject/2341863/

推薦理由:內容覆蓋面最廣,除了所有書都有的內容外,還包括FOIL算法和空間數據挖掘等。

5.2《集體智慧編程》

閱讀鏈接:https://book.douban.com/subject/3288908/

推薦理由:非常實用的寶典,看了這本書,如果有工具,可以解決大部分問題。

End

當你計劃開始學習一門課程、閱讀一本經典教材時,請先明確你要期望達到的目標。具體來說,就是問自己一個問題:

我期望從這本書中收穫哪些東西?

不同的課程、不同的書籍,期望的目標應該是不一樣的,並且是越具體越好。

比如看上面的入門系列,可以抱著娛樂的心態在業餘時間看看。而看基礎系列,就要規劃好一段時間,邊看邊做筆記。

推薦一個金老師的學習方法給小夥伴們:多遍掃描法。

第一遍是略讀,把一本書從頭翻到尾,快速地閱讀,不深鑽細節,只看背景、結論和實際應用,即使遇到看不懂的地方也不要停下來,繼續看下去,這一遍的目的是讓你對這本書有一個總體上的印象。基於這個印象,你就能確定全書哪裡難,哪裡易,哪裡是重點,這樣就能制定下一步的攻讀策略。

第二遍則是“細讀”與“攻讀”,選擇你感興趣的,感覺最重要的內容慢慢地讀,可以採用一些行之有效的閱讀手段(比如記要點然後嘗試回顧、繪製思維導圖等)吸收書中的知識。對於難點,關鍵是弄明白為什麼你看不懂(數學公式看不懂?關鍵術語不明白?翻譯有問題?),你就能對症下藥了,比如本書寫得太抽象,可以先看看比較淺顯的科普類書籍,之後再回過頭來再看,或者找幾本不同作者寫的類似的教材對照著看……

上述過程可能需要重複幾次。並且可能前後兩次之間會間隔一個較長的時間。

人學習特定領域的知識需要一個過程,並且需要反覆的。

所以要耐心,學習是很少有可能畢其功於一役的。

簡單推薦了一些我比較喜歡的書籍,如果都能看完看懂且科學的總結外加合理的實踐,相信未來你的技術路會更好走,當然BATJ這些的Offer也不在話下。

除了多看點技術書,你覺得還有什麼能拿出來和985,211的朋友比呢?

與君共勉:)


後臺回覆 書單 送你算法編程書籍


五分鐘學算法


1. 《代碼大全》(第二版)

程序員一生必讀的30本書 - 遠行的風 - 風的驛站

第2版的《代碼大全》是著名IT暢銷書作者史蒂夫·邁克康奈爾11年前的經典著作的全新演繹:第2版不是第一版的簡單修訂增補,而是完全進行了重寫;增加了很多與時俱進的內容。這也是一本完整的軟件構建手冊,涵蓋了軟件構建過程中的所有細節。它從軟件質量和編程思想等方面論述了軟件構建的各個問題,並詳細論述了緊跟潮流的新技術、高屋建瓴的觀點、通用的概念,還含有豐富而典型的程序示例。這本書中所論述的技術不僅填補了初級與高級編程技術之間的空白,而且也為程序員們提供了一個有關編程技巧的信息來源。這本書對經驗豐富的程序員、技術帶頭人、自學的程序員及幾乎不懂太多編程技巧的學生們都是大有裨益的。可以說,無論是什麼背景的讀者,閱讀這本書都有助於在更短的時間內、更容易地寫出更好的程序。

2. 《程序員修煉之道》

程序員一生必讀的30本書 - 遠行的風 - 風的驛站

作者: Andrew Hunt /David Thomas

《程序員修煉之道》由一系列的獨立的部分組成,涵蓋的主題從個人責任、職業發展,直到用於使代碼保持靈活、並且易於改編和複用的各種架構技術。利用許多富有娛樂性的奇聞軼事、有思想性的例子以及有趣的類比,全面闡釋了軟件開發的許多不同方面的最佳實踐和重大陷阱。無論你是初學者,是有經驗的程序員,還是軟件項目經理,本書都適合你閱讀。

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

程序員一生必讀的30本書 - 遠行的風 - 風的驛站

作者: Harold Abelson/ Gerald Jay Sussman / Julie Sussman

《計算機程序的構造和解釋(原書第2版)》1984年出版,成型於美國麻省理工學院(MIT)多年使用的一本教材,1996年修訂為第2版。在過去的二十多年裡,《計算機程序的構造和解釋(原書第2版)》對於計算機科學的教育計劃產生了深刻的影響。第2版中大部分重要程序設計系統都重新修改並做過測試,包括各種解釋器和編譯器。作者根據其後十餘年的教學實踐,還對其他許多細節做了相應的修改。

4. 《C程序設計語言》

程序員一生必讀的30本書 - 遠行的風 - 風的驛站

作者: (美)Brian W.Kernighan / (美)Dennis M. Ritchie

在計算機發展的歷史上,沒有哪一種程序設計語言像C語言這樣應用廣泛。本書原著即為C語言的設計者之一DennisM.Ritchie和著名計算機科學家BrianW.Kernighan合著的一本介紹C語言的權威經典著作。我們現在見到的大量論述C語言程序設計的教材和專著均以此書為藍本。原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標準C的基礎。人們熟知的“hello,World"程序就是由本書首次引入的,現在,這一程序已經成為眾多程序設計語言入門的第一課。

原著第2版根據1987年制定的ANSIC標準做了適當的修訂.引入了最新的語言形式,並增加了新的示例,通過簡潔的描述、典型的示例,作者全面、系統、準確地講述了C語言的各個特性以及程序設計的基本方法。對於計算機從業人員來說,《C程序設計語言》是一本必讀的程序設計語言方面的參考書。

5. 《算法導論》

程序員一生必讀的30本書 - 遠行的風 - 風的驛站

作者: [美] ThomasH.Cormen / Charles E.Leiserson / Ronald L.Rivest / Clifford Stein

這本書深入淺出,全面地介紹了計算機算法。對每一個算法的分析既易於理解又十分有趣,並保持了數學嚴謹性。本書的設計目標全面,適用於多種用途。涵蓋的內容有:算法在計算中的作用,概率分析和隨機算法的介紹。書中專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計算法,以及對貪心算法元素的討論。此書還介紹了對強連通子圖算法正確性的證明,對哈密頓迴路和子集求和問題的NP完全性的證明等內容。全書提供了900多個練習題和思考題以及敘述較為詳細的實例研究。

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

程序員一生必讀的30本書 - 遠行的風 - 風的驛站

重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。多年前,正是本書原版的出版,使重構終於從編程高手們的小圈子走出,成為眾多普通程序員日常開發工作中不可或缺的一部分。本書也因此成為與《設計模式》齊名的經典著作,被譯為中、德、俄、日等眾多語言,在世界範圍內暢銷不衰。

本書凝聚了軟件開發社區專家多年摸索而獲得的寶貴經驗,擁有不因時光流逝而磨滅的價值。今天,無論是重構本身,業界對重構的理解,還是開發工具對重構的支持力度,都與本書最初出版時不可同日




簡通激光小楊


程序員嘛 修煉自己也是有一個過程的

第一步c或者c++java最好都懂一點,精通一門

以我之前面試頭條的經驗來看,數據結構和算法,操作系統,計算機網絡 這是第二步

操作系統 多線程,進程間通信,堆棧,隊列等知識

計算機網絡,網絡編程要了解udp tcp 等

平時刷刷牛客網,很多大公司面試題目都在這上面,挺難的老實說

接下來,就是很有難度的,是大招,是不是大牛就看能不能搞懂這本書

深入瞭解計算機系統,神一般的書,我們公司大佬基本人手一本

以上是修煉內功必須的,

還有就是程序員必讀的書,比如編程珠璣,裝載鏈接庫等

我之前收集了一些程序員必讀十本書

算法導論

代碼整潔之道

編譯原理

人月神話

設計模式

程序員修煉之道

代碼大全

重構改善既有代碼設計

計算機程序構造和解釋

c++編程藝術

如果想要這些資料記得私信😄前5名,這前5名記得關注,後面的記得問他們要

當然不需要讀完有空的時候看看,很多時候我們單單會寫代碼並不能帶來多大的提升,一定要多讀多寫,反覆看

如果想搞操作系統 有一個資料特別好,linux內核完全註釋,有代碼,搞通了就是大師了

如果以上你覺得都沒有問題了,最後我想推薦程序員養生寶典

專治頸椎病,肩周炎,腰椎盤突出,肥胖,小肚子

哈哈哈😄


打醬油的小肉丸


在IT領域的發展過程中,新的編程語言層出不窮:C/C++、Java、C#、PHP、R語言、Python ……但在編程語言不斷更新的過程中,經典的IT思想卻歷久彌新,用普適的思想來應對變化的語言,經受住了開發實踐的考驗。


在修煉成為優秀程序員的道路上,有很多經典的IT好書可供閱讀。一本好書所傳達的編程思想和開發理念往往能令人醍醐灌頂,恍然大悟,教會我們用更高的效率開發出更優質的應用。

《重構 改善既有代碼的設計(第2版)》

推薦理由:

這本書是經典著作《重構》出版20年後的更新版。作者馬丁·福勒(Martin Fowler)是世界軟件開發大師,在重構、面向對象分析設計、模式、XP 和UML等領域都有傑出貢獻。這本書生動闡述了重構原理和具體做法,在第1版的基礎上,這一版的內容更豐富,反映了許多編程領域業已發生的變化,能夠幫助程序員一步一步修改代碼,減少開發過程的風險。適合軟件開發人員、項目管理人員等閱讀,也可作為高等院校計算機及相關專業師生的參考讀物。

《代碼整潔之道》

推薦理由:

Robert C. Martin,世界級軟件開發大師,設計模式和敏捷開發先驅,敏捷聯盟首任主席,C++ Report前主編,被後輩程序員尊稱為“Bob大叔”。

這本書提出了一種觀念:代碼質量與其整潔度成正比。乾淨的代碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。作者給出了一系列行之有效的整潔代碼操作實踐,並輔以來自現實項目的正、反兩面的範例。只要遵循這些規則,就能編寫出乾淨的代碼,從而有效提升代碼質量。

《代碼整潔之道 程序員的職業素養》

推薦理由:

這本書是“Bob大叔”40餘年編程生涯的心得體會的總結,講解要成為真正專業的程序員需要具備什麼樣的態度,需要遵循什麼樣的原則,需要採取什麼樣的行動。作者以自己和身邊的同事走過的彎路、犯過的錯誤為例,意在為後來者引路,助其職業生涯邁上更高臺階。

《編程珠璣(續 修訂版)》

作者:[美]Jon Bentley,譯者:錢麗豔 劉田;《編程珠璣(第2版 修訂版)》,作者:[美]Jon Bentley,譯者:黃倩 錢麗豔,審校:劉田

推薦理由:

《編程珠璣》是歷史上最偉大的計算機科學著作之一,融深邃思想、實戰技術與趣味軼事於一爐。《編程珠璣(續)(修訂版)》是《編程珠璣》的姊妹篇,講述了對於程序員有共性的知識,延續了《編程珠璣》的特色,通過一些精心設計的有趣而又頗具指導意義的程序,對實用程序設計技巧及基本設計原則進行透徹而睿智的描述,為複雜的編程問題提供清晰而完備的解決思路。《編程珠璣(第2版 修訂版)》圍繞程序設計人員面對的一系列實際問題展開,作者以其獨有的洞察力和創造力,引導讀者理解這些問題並學會解決方法,而這些正是程序員實際編程生涯中至關重要的。這兩本書對各個層次的程序員都具有很高的閱讀價值。

《持續交付:發佈可靠軟件的系統方法》

推薦理由:

這是一本軟件工程師的職場指南,講述瞭如何實現更快、更可靠、低成本的自動化軟件交付,描述瞭如何通過增加反饋,並改進開發人員、測試人員、運維人員和項目經理之間的協作來達到這個目標。作者以自己在蘋果、網景等公司中面臨的生死攸關的時刻所做的抉擇為例,總結了在硅谷摸爬滾打的經驗,旨在為軟件工程師更好地規劃自己的職業生涯提供幫助,適合所有開發人員、測試人員、運維人員和項目經理學習參考。

《持續交付2.0 業務引領的DevOps精要》

推薦理由:

這本書的作者喬梁是敏思特諮詢公司的聯合創始人,持續交付領域專家,敏捷與精益轉型導師,任騰訊外聘研發管理顧問,也是《持續交付》一書的譯者。作者“重新定義”了持續交付,增補了組織管理和架構兩個維度,輔助以真實案例,對諸多持續交付的原則和實踐加以解讀,並對持續交付過程中的取捨原則加以論述。本書適合大型互聯網公司的技術VP、技術負責人,中小型互聯網公司的CTO、技術VP、研發/測試/運維負責人、主管及骨幹,以及組織變革者閱讀。

《計算機程序設計藝術》(共四卷)

作者:[美]Donald E. Knuth,譯者:(卷1)李伯民 範明 蔣愛軍;(卷2)巫斌 範明;(卷3)賈洪峰

推薦理由:

《計算機程序設計藝術》系列被公認為計算機科學領域的權威之作,深入闡述了程序設計理論,對計算機領域的發展有著極為深遠的影響。卷1講解基本算法,其中包含了其他各卷都需用到的基本內容;卷2全面講解了半數值算法,分“隨機數”和“算術”兩章,總結了主要算法範例及這些算法的基本理論,廣泛剖析了計算機程序設計與數值分析間的相互聯繫;卷3全面講述了排序和查找算法,擴展了卷1中數據結構的處理方法,並對各種算法的效率進行了大量的分析;卷4主要介紹了組合算法,內容涉及布爾函數、按位操作技巧、元組和排列、組合和分區以及所有的樹等(中文版待譯)。

《高效程序員的45個習慣:敏捷開發修煉之道(修訂版)》

作者:[美]Venkat Subramaniam Andy Hunt,譯者:錢安川 鄭柯

推薦理由:

這本書生動地闡述並總結了成為高效的開發人員所需具備的45個習慣、思想觀念和方法,涵蓋了軟件開發進程、編程和調試工作、開發者態度、項目和團隊管理以及持續學習等幾方面。這本書適合所有程序員閱讀,《Ajax基礎教程》的作者,資深軟件工程師Nathaniel T. Schutta評價這本書:“書中‘切身感受’的內容非常有價值——通過它我們可以做到學有所思,思有所悟,悟有所行。”

《軟技能 代碼之外的生存指南 》

推薦理由

這是一本真正從“人”的角度關注軟件開發人員自身發展的書,聚焦於軟件開發人員生活的方方面面。從揭秘面試的流程到精耕細作出一份殺手級簡歷,從創建大受歡迎的博客到打造你,從提高自己工作效率到與如何與“拖延症”做鬥爭,甚至包括如何投資不動產,如何關注自己的健康。 通過閱讀本書,軟件工程人員、編程人員和其他技術人員能夠積極思考自己的職業生涯,豐富自己的生活,讓自己更接近成功。

《系統化思維導論》

推薦理由

這本書初版於1975年面世,此後四分之一個世紀始終暢銷不衰。作者傑拉爾德·溫伯格是軟件領域最著名的專家之一,美國計算機名人堂代表人物,國際知名的演講家、作家、顧問。這是一本全面介紹一般系統思維的權威指南,旨在幫助人們掌握科學的思維法則,揭開科學與技術的神秘面紗。書中通過基本的代數原理,使用大量圖表、符號,乃至方程來展示探索項目、產品、組織機構等各類系統的方式方法。 這本書適合所有對思考問題感興趣,希望高效認知世界的讀者閱讀。

《黑客與畫家:來自計算機時代的高見》

推薦理由:

這本書是硅谷創業之父Paul Graham的文集,以新的視角展示了當今IT技術浸透下的世界。主要介紹黑客的愛好和動機,討論黑客成長、黑客對世界的貢獻,以及編程語言和黑客工作方法等所有對計算機時代感興趣的人的一些話題。書中的內容不但有助於瞭解計算機編程的本質、互聯網行業的規則,還會幫助讀者瞭解我們這個時代,認識黑客大腦內部的世界,充滿了離經叛道的洞見與實踐的智慧。適合所有程序員和互聯網創業者,也適合一切對計算機行業感興趣的讀者。


思想的傳承和借鑑讓程序員們跳出了具體編程語言的框架,認識了開發過程的本質。各位程序員不妨仔細研讀、品味這些精選的IT好書,利用這些珍貴的思想,創造出更為驚豔的作品!

人民郵電出版社


程序員必讀書有哪些?這個其實沒辦法回答,你最需要的,就是你必讀的。不過,仍然有很多經典的書籍,當你讀完這些之後,你會發現另外一番天地,也解放了自己的思維方式。

代碼大全(第二版)

本書從軟件質量、編程思想等方面闡述了軟件構建的各種問題,並論述了緊跟潮流的新技術、高屋建瓴的觀點,而且還有豐富的程序示例。看完這本書,可以打開自己的思維方式,有種柳暗花明又一村的感覺。

程序員修煉之道

這本書主要講述了使代碼保持靈活並且易於改變和複用的各種框架技術,利用了許多富有娛樂型的奇聞異事,具有思想性的例子及有趣的類比,全面闡述了軟件開發的許多不同方面的最佳實踐和重大陷阱,絕對是程序員必讀的書之一。

計算機程序的構造和解釋

本書成型於麻省理工學院多年使用的一本教材,世界各地已有100多所院校採用本書作為教材,包括美國福斯坦大學、普林斯頓大學、牛津大學、東京大學等。

這本書,能賦予你智慧。

C程序設計語言

由C語言設計者Dennis M.Ritchie和著名計算機科學家Brian W.Kernighan編寫的一部介紹C語言標準及其程序設計方法的權威性經典著作。全面、系統的講訴了C語言各個特性及程序設計的基本方法。

C語言開發者必讀的一本書,其他開發者也不妨看看,非常有價值。

重構:改善既有代碼的設計

實用性書籍,清晰揭示了重構的過程,解釋了重構的原理和最佳實踐方式,並給出了何時、何地應該開始挖掘代碼以求改善。書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換首發的動機和技術。

這本書可以幫助你減少開發過程中的風險,是很有價值的參考讀物。

人月神話

本書蘊藏了很多發人深省的觀點,而且有大量的軟件工程的實踐,為每個複雜項目的管理著給出了自己的真知灼見。這本書適合軟件開發行業的從業人員閱讀,對軟件開發、軟件項目經理、系統分析師更是必讀之作。

代碼簡潔之道

《代碼整潔之道》提出一種觀念:代碼質量與其整潔度成正比。乾淨的代碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。作為編程領域的佼佼者,這些實踐在《代碼整潔之道》中體現為一條條規則(或稱“啟示”),並輔以來自現實項目的正、反兩面的範例。只要遵循這些規則,就能編寫出乾淨的代碼,從而有效提升代碼質量。

這本書非常有借鑑的價值。

好了,說了這麼多,忘記開頭語了:收藏不看系列……(真的很有價值,不看感覺虧了什麼)

——摘自W3Cschool學員的回答


編程獅APP


下面就按照各本書的推薦數排列。

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

“優秀的編程實踐的百科全書,《代碼大全》注重個人技術,其中所有東西加起來, 就是我們本能所說的“編寫整潔的代碼”。這本書有50頁在談論代碼佈局。” —— Joel Spolsky

對於新手來說,這本書中的觀念有點高階了。到你準備閱讀此書時,你應該已經知道並實踐過書中99%的觀念。– esac

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

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

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

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

2、《程序員修煉之道》

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

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

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

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

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

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

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

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

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

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

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

4、《C程序設計語言》

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

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

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

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

5、《算法導論》

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

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

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

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

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

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

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

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

我想我不得不推薦《重構》:改進現有代碼的設計。—— Martin

我必須承認,我最喜歡的編程語錄是出自這本書:任何一個傻瓜都能寫出計算機能理解的程序, 而優秀的程序員卻能寫出別人能讀得懂的程序。—— Martin Fowler

7、《設計模式》

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

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

8、《人月神話》

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

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

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

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

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

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

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

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

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

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

強大的寫作陣容。

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

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

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

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

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

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

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

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

13、《代碼整潔之道》

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

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

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

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

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

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

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

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

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

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

15、《編程珠璣》

多年以來,當程序員們推選出最心愛的計算機圖書時,《編程珠璣》總是位列前列。 正如自然界裡珍珠出自細沙對牡蠣的磨礪,計算機科學大師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

小編給大家謀取了一點小福利,最近會有一個送書活動,多讀書多學習準沒錯兒~不過還要大家的配合哦,看大家的熱情程度,分享自己認為不錯的書籍,簡單的說出理由,或者自己希望獲得的一本書籍,小編會從中選擇最受大家歡迎的書籍在即將推出的送書活動中進行贈送。


分享到:


相關文章: