計算機專業推薦書籍
吾不能有名師指導,但求能精選出最好的書籍,從最好的書中學到東西,可有些許補償。當然,最好能主動尋找良師益友和專業人士的指導。經典的書都有一個特點: 詳盡得當,通俗又不失理論化,資訊量非常大。
一、 思想類讀物:
-
《通靈晶片:計算機運作的簡單原理》: (美) 丹尼爾·希利斯著。 以通俗易懂的方式闡述計算機的構造與原理。
-
《邏輯的引擎》:(美)馬丁·戴維斯著。 從十七世紀的萊布尼茨之夢起始,講述計算機背後的邏輯原理及其主人公的故事,非常精彩!
-
《程式設計珠璣》:(美)本特利(Bentley,J.)著。 看似簡單的東西,也能挖掘出珍珠般的光彩。
-
《Unix 程式設計藝術》: Eric S. Raymond 著。 闡述軟體設計的原則與方法, 很有參考價值, 要讀懂的話需要一定的功力和經驗。
二、 基礎課程類讀物:
-
《電腦科學概論》(Computer Science An Overview 9th): (美)J.Glenn Brookshear 著。 關於計算機導引的上佳英文入門讀物。
-
《The C Programming Language》(第2版): (美)Brian W.Kernighan, Dennis M.Ritchie 著。 C程式設計必讀,簡潔扼要;我就是通過這本書開始消除對“字串”處理的恐懼感的。
-
《作業系統:精髓與設計原理》(第五版) :(美)William Stallings 著。 作業系統的推薦教程,闡述詳盡得當。
-
《資料結構基礎》(C語言版): 霍羅維茲 (Ellis Horowitz) , 薩尼 (Sartaj Sahni) , 安德爾森-費裡德 (Susan Anderson-Freed) 著。 資料結構的推薦讀物,建議讀英文版。 嚴蔚敏老師的《資料結構(C語言版)》 也很不錯 , 適合完全沒有接觸過資料結構的童鞋閱讀。
-
《演算法分析與設計基礎》: (美)萊維丁 著。演算法入門的推薦讀物,講解清晰而不失深度。當需要輕鬆閱讀理解其思想時讀這本,當需要深入理解演算法分析時,建議閱讀《演算法導論》,最好兩本都有,相得益彰。
-
《資料庫系統概念》(第5版) : Abraham Silberschatz, Henry F.Korth, S.Sudarshan 著, 楊冬青,馬秀莉, 唐世渭譯。全面深入,詳盡得當,通俗與理論並重,是為經典。
-
《程式設計實踐》(第2版): Brian W. Kernighan Rob Pike 著, 裘宗燕譯。 或者讀英文版(The practice of programming)更好。 教會初學者進行程式設計而不是簡單編碼的上佳讀物,絕對推薦!
-
《TCP/IP 詳解》(協議篇) : TCP/IP 協議的深入讀物, 理解現實中的網路程式設計基礎。 謝希仁老師的《計算機網路》 也很不錯, 適合完全沒有接觸過計算機網路的童鞋閱讀。
三、 技術類書籍
-
《深入理解計算機系統》:(美)布賴恩特 (Bryant,R.E.) 等著。 以程式設計師的角度和全域性的視角來審視計算機系統,涵蓋從資料表示到程式執行、系統互動的各個方面,非常值得深讀!
-
《Writing solid code》: (美) Steve Maguire 著。 想寫出 bug-free 程式的上佳讀物之一。相應讀物的還有《高質量程式設計藝術》(code quality: from a open source perspective) , 《程式碼整潔之道》(Writing clean code),《編寫可讀程式碼的藝術》(The Art of Readable Code)
-
《Thinking in Java》:(美)Bruce Eckel 著。 Java 語言程式設計的推薦教材。 《Effective Java》(Joshua Bloch著) 作為進階書籍。
-
《設計模式——可複用面向物件軟體的基礎》:(美)“四人幫”著。 設計模式的必讀書籍(亦可用於參考)。
-
《實現模式》: Kent Beck 著。 非常有益的面向物件程式設計經驗談。
-
《重構: 改善既有程式碼的設計》: Martin Fowler 著。 作為面向物件程式設計的收藏書籍,隨時可參閱。
-
《Test Driven Development: By Example》: Kent Beck 著。 測試驅動開發的優秀入門書籍
-
《MYSQL必知必會》: (英)Ben Forta 著。 人民郵電出版社。薄薄的一百頁左右, 快速上手和使用 mysql 資料庫。
-
《正則表示式必知必會》: (英)Ben Forta 著, 楊濤 / 王建橋 / 楊曉 譯。人民郵電出版社。 薄薄的一百頁左右, 清晰的闡述, 適合正則表示式的快速瞭解和上手。
-
《Java TCP/IP socket 程式設計》: (美)Kenneth L.Calvert, M.J. Donaboo著, 周恆民譯。 非常好的 Java tcp/ip socket 入門讀物, 詳細地講解了相關的知識點,有相應的例項為佐, 並且對底層、效能等方面也作了一定的闡述。
-
《Ubuntu Linux 指南:基礎篇》: Mark G.Sobell 著。 學習和使用 Linux 系統的優秀入門讀物, 建議未接觸過 Linux 系統的童鞋從 Ubuntu 起步。
-
《Perl 語言入門》(第五版) : Randal L.schwartz 等著, 盛春等譯。 Perl 入門的推薦教程。通俗易懂、詳盡得當。
-
《Java 程式設計風格》: Alan Vermeulan 等著, 曹鐵鷗譯。 關於Java 程式設計的推薦風格, 必知必會。
-
《精通正則表示式》: Jeffrey E.F.Friedl 著。 關於正則表示式的深入學習讀物。詳細闡述了正則的原理和優化,以及在 Perl, Java, C# 等語言下的實現。
-
《Java Concurrency in Practice》: Brian Goetz 等 著。 Java 併發程式設計的優秀讀物。強烈推薦!
-
《單元測試之道Java版:使用JUnit 》: Andrew Hunt, David Thomas 著. 單元測試的入門讀物。
四、 軟體開發的可選讀物:
-
《軟體工藝》: Pete McBreen 著. 從工藝角度論述軟體開發,強調個人開發能力的修煉。最好讀英文版, 順便學學英語。
-
《人月神話》: Frederick P. Brooks, Jr . 著。 軟體工程領域的必讀經典作品 。
-
《黑客與畫家》: Paul Graham 著. 網際網路已經發生了巨大的變化, 但書中觀點依然很有啟發性, 建議讀一讀。
-
《Coders at work — Reflections on the Craft of Programming》: Peter Seibel 著. 頂級大師的訪談錄, 聽聽他們的聲音和工作經歷,肯定會受益匪淺。
-
《設計原本》: Frederick P. Brooks, Jr. 著, InfoQ中文站 / 王海鵬 / 高博 (譯)。 關於軟體設計、管理方面的優秀讀物。
-
《程式設計師修煉之道:從小工到專家》: Andrew Hunt / David Thomas 著。 關於軟體開發方法的非常有益的實踐經驗談。
-
《時間管理:給系統管理員》: Thomas A.Limoncelli 著。 關於時間管理方面的有益參考,短小而精,適用於所有的軟體開發人員。
五、其它
- 《雲端計算解碼:技術架構和產業運營》 : 雷葆華,饒少陽等 著。 關於雲端計算方面的入門讀物。
軟體開發推薦書籍:
軟體開發就像一場持久的戰役。 模糊、頻繁變更的需求, 專案的討論、爭議 , 進度的緊迫和延遲, 瑣碎的事情, 突然出現的變故,各種因素都在盡全力阻撓人們按計劃的實現預期目的。如果不夠重視,它就會無情地偷取你的時間、精力乃至一切。 所以,在即將進入這個戰場之前,或者準備縱深之前, 你準備好自己的武器和技能了麼? 如果貿然上陣,恐怕會一上戰場就深陷其中。
在《計算機專業推薦書籍》中, 推薦了一些自己讀過的覺得很不錯的計算機書籍,這些書籍都偏重於打好計算機程式設計的基礎功底。 不過, 僅有基礎還不行, 在真實軟體開發環境中,還得有真槍實彈的技能才能應對自如。 所以,這篇文章會根據自己的學習程序,推薦一些有助於軟體開發的書籍。
一、 思想類:
-
《Linux/Unix 設計思想》(Linux and The unix philosophy) : Mike Gancarz 著。 在開始之前,學一些如何做好程式設計這件事的準則是很重要的。 這本書簡練地介紹了 Linux 工具與程式設計的重要思想和準則, 值得不定期重溫一下。
-
《計算機程式的構造與解釋》(SICP) : Harold Abelson, Gerald Jay Sussman, Julie Sussman 著。 提煉出程式設計的核心要素和重要思想, 理論與實踐結合, 值得深讀細讀!
二、 實用技術類
-
《Shell 指令碼學習指南》: Arnold Robbins、Nelson H.F.Beebe 著。 這本書的特色在於, 它從一開始就專注於指令碼編寫的重要元素和常用技巧,涵蓋最常用的Unix標準工具,其示例用法都是比較容易弄懂的,而且非常具有實用性。 這本書很適合於那些有初步的Shell 認識,希望能夠系統學習的讀者。
-
《SQL 語言藝術》: StéphaneFaroult,P 著, 溫 昱、靳向陽 譯。 現代軟體應用幾乎不可能避免與資料庫打交道, 能夠編寫高效的SQL 語句, 高效訪問資料庫資源, 是從事應用程式開發的必備技能。這本書的書名有點學究味,但內容上卻是很具有實戰性的,同時也很好地兼顧了理論,值得細研。
-
《Java虛擬機器併發程式設計》: Venkat Subramaniam 著, 薛笛 譯。 講解併發程式設計的幾種主要設計思想、方法技巧以及在 Java / Groovy / Scala 下的具體實現示例, 理論與實用性都很強,值得細讀。
-
《Java併發程式設計》: Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea 等著, 童雲蘭 譯。 併發程式設計的優秀技術書籍,詳細闡述了編寫正確、高效併發程式的基礎知識、注意事項,以及許多實用的方法、模式和併發實踐示例,是 Java 併發程式設計的必讀書籍,使用其它語言的開發人員亦可從中受益良多。
-
《Spring技術內幕》 : 計文柯 著。 Spring 是 Java 陣營的一個非常優秀的應用框架, 鑽研 Spring 原始碼的引導書籍,學習 Spring 的軟體設計方法。根據專案所用到的部分來閱讀, 或每次讀一個部分。
-
《Javascript: The good Parts》: Douglas Crockford 著。 瞭解 Javascript 的核心元素的優秀讀物, 也可以學到一個重要思想: 使用語言或技術的良好子集來構建應用而不是致力於掌握全部。
-
《JavaScript非同步程式設計:設計快速響應的網路應用》: Trevor Burnham 著, 許青松 譯。 簡潔的篇幅, 以有效的示例精煉地介紹了非同步程式設計的常見模式和方法。
-
《實用Common Lisp教程》: Peter Seibel 著, 田春 譯。 Common Lisp 程式設計的推薦教程, 詳盡得當, 內容豐富。
-
《軟體測試實踐: 成為一個高效能的測試專家》: Rex Black 著, 郭耀、李琦 譯。 軟體測試技術的入門推薦書籍, 詳細討論了軟體測試的基礎技術。 包括: 測試的目標、策略、戰術; 質量風險識別與評估; 常用測試技術: 程式碼審查、等價類劃分和邊界值分析、狀態轉換圖和狀態表、測試用例、決策表、域測試、正交表與所有對值表、反應測試、控制流測試、資料流測試、整合測試。
-
《Python核心程式設計》: Wesley J. Chun(陳仲才) 著。 全面、系統、詳細地講解了 Python 語言基礎以及應用程式設計, Python 入門書籍的優秀書籍。
三、 架構設計類
-
《架構之美》: Till Adam 等著。 王海鵬、蔡黃輝、徐鋒 譯。 對於不同型別的系統,用一個或多個例項來說明其架構、思路及設計考量,開闊程式開發的思路, 文筆自然生動, 引人思考, 值得細讀。
-
《軟體架構設計: 從程式設計師向架構師轉型必備》: 溫昱 著。 系統詳細地闡述了作為一名架構師必須具備的基礎知識’技能和方法,使架構設計這件看上去很抽象神祕的事情變成具體而實際可操作的, 值得贊一個。 不足之處,在於技術味道太濃, 作文摻了一點培訓的味道, 缺乏一種架構的靈動之美。 與 《架構之美》配合著看。
-
《大型網站技術架構:核心原理與案例分析》: 李智慧 著。 關於大型網站技術架構的全面介紹和索引書, 遇到問題後可以查閱對策, 具體技術還需要另外深入學習。
-
《恰如其分的軟體架構——風險驅動的設計方法》: George Fairbanks 著, 張逸、倪健、高翌翔 譯。 對軟體架構知識和經驗的很好總結。
-
《軟體架構師的12項修煉》: Dave Hendricksen 著, 張菲 譯。 程式設計師軟技能的全面且實用的必讀指南。
-
《軟體框架設計的藝術》: [捷] Jaroslav Tulach 著, 王磊、朱興 譯。 API 設計的實用指南。
-
《面向模式的軟體架構——併發與聯網物件模式》: [美] Douglas Schmidt、[德] Michael Stal、[德] Hans Rohnert、[德] Frank Buschmann 著。 朱而剛、袁國忠 譯。 詳細地闡述了併發和聯網應用程式設計中的挑戰和設計模式(服務配置模式、同步模式、併發模式、事件分離模式), 這些模式建基於GOF所談到的基本設計模式的組合使用, 值得細研。
-
《Javascript設計模式》: 前端的設計模式實現方法和技巧, jQuery 設計模式。
四、 開發方法類
-
《敏捷技能修煉:敏捷軟體開發與設計的最佳實踐》: Alan Shalloway、Scott Bain、Ken Pugh、Amir Kolsky 著。 鄭立、鄒駿、黃靈 譯。 本書講解了一些敏捷開發所用到的重要理念和方法, 掌握好的開發方法、過程,養成良好的開發習慣和技能,受益匪淺。與 《程式設計師修煉之道:從小工到專家》 配合著看。
-
《敏捷軟體開發:原則,模式與實踐》: 基於重要的面向物件設計原則(SRP, OCP, LSP, DIP, ISP), 結合測試驅動開發、設計模式和案例分析, 展示如何編寫可擴充套件性良好的程式碼,應對需求的變化。
五、 產品設計類
-
《CSS 禪意花園》: Dave Shea、Molly E. Holzschlag 著, 陳黎夫、山崺頲 譯。 知名Web設計之書, 以優秀的示例闡述優秀WEB設計理念、方法與技巧。
-
《源於自然的設計—— 源於自然的設計原理與形式》: Maggie Macnab 著, 樊旺斌 譯。 以簡練的文字和美輪美奐的插圖, 生動地闡述了設計與美學的有益見解, 讀起來賞心悅目。
-
《設計師要懂心理學》: Susan Weinschenk 著, 徐佳、馬迪、餘盈億 譯。以相互獨立的短小篇幅講述了人是如何感知、注意、記憶、思考、動機、決策等多個方面的認知學常識, 與網站的互動設計相結合, 值得參考。
-
《設計心理學》: Donald A. Norman 著。 以實際的例子詳細地闡述如何運用心理學知識指導產品的易用性設計, 值得細讀。
-
《簡約至上: 互動式設計四策略》: Giles Colborne 著, 李鬆峰、秦緒文 譯。 短短的篇幅, 簡明扼要地闡述了“刪除-組織-隱藏-轉移” 四個設計方法和諸多技巧, 值得一讀。
六、 專案管理與產品開發
-
《專案管理修煉之道》: Johanna Rothman 著。 講述了專案從啟動、規劃、日程安排、進度跟進、專案節奏、會議控制、專案驗收總結的專案全週期相關的方法, 另外也有跨團隊專案、跨地點專案的闡述。 詳盡得當, 值得信賴。 詳盡得當, 值得信賴。
-
《未來產品的設計》: Donald A. Norman 著。 詳細地闡述人與未來智慧產品之間的互動和設計問題, 對設計互動式應用程式有很多啟發。
-
《好產品,壞產品:如何創造出類拔萃的產品》: 詹姆斯.L.亞當斯 著。 作者從效能、成本、價格、產品適合度、工藝、情緒、需求、美學、文化和環境約束等多個角度對產品品質做了全景式的描述。 內容還是非常不錯的, 敘述略微有點枯燥。
-
《團隊之美》: Andrew Stellman, Jennifer Greene 著。 米全喜、鄭柯、徐毅 譯。 講述各種團隊應對真實軟體開發專案的故事, 值得一讀。
-
《Google軟體測試之道》: James A. Whittaker、Jason Arbon、Jeff Carollo 著, 黃利、李中傑、薛明 譯。 詳細闡述了 Google 內部是如何進行產品開發與測試、角色分工(SWE, SET, TE, TM)以及測試的理念、方法、技術和手段, 包括測試工程師的招聘, 值得一讀。
-
《啟示錄:打造使用者喜愛的產品》: Marty Cagan 著, 七印部落 譯。 產品開發的優秀入門書籍。 以經驗之談的形式, 闡述了產品開發的角色分工及職責定義, 產品開發的基本流程和注意事項, 以及創造優秀產品過程中的一些有益經驗。
-
《掌握需求過程》: Suzanne Robertson, James Robertson 著。 王海鵬 譯。 詳細闡述了需求發現、分析、 評審和存檔的方法和技術: 需求的理解誤區, 確定業務範圍, 設計業務用例, 工作調研, 場景描述, 理解真正的問題, 系統思考, 解決方案的設計, 業務分析策略, 非功能性需求, 複用需求, 用例驗收, 需求的溝通與文件化, 需求模板 等。
-
8. 《淘寶技術這十年》:講述淘寶網誕生和發展的故事, 揭示了“產品業務如何驅動技術發展,技術如何服務於產品業務的發展”的路徑,對做產品和做技術很有啟發意義。
七、 社科人文類
-
《喬布斯傳》: 沃爾特·艾薩克森 著。 感受一下天使與魔鬼的化身, 喬布斯有兩點做到了極致: 對產品設計的極致完美的追求和大膽不受社會條框限制的極致。 同時, 也能學習到很多創業中所遇到的問題、解決方法以及商業社會中的規則。
-
《改變未來的九大演算法》: 約翰.麥考密克 著。 通俗易懂地講解了九個非常重要而實用的演算法(搜尋引擎、公鑰加密、糾錯碼、圖形識別、資料壓縮、資料庫一致性、數字簽名、可計算理論), 感受是: 一個偉大的演算法 = 一個基本的思路 + 一個精密的數學原理 + 廣泛的應用。 不得不說, 演算法永遠是計算世界裡最迷人的領域。
-
《精簡: 大資料時代的商業制勝法則》: 馬修.E.梅 著。 閱讀此書不會讓你立即擁有“化繁為簡”的神奇能力, 但是, 通過大量的真實案例, 作者有信服力地闡述了很多用於“化繁為簡” 的方法和技術, 內容豐富, 有啟發性, 值得一讀。
-
《喬布斯的魔力演講》: 卡邁恩.加洛 著。 除了開發設計程式和應用, 還要善於展示自己、團隊乃至公司的工作成果。 學會演講是一門很重要的技能, 這本書比較深入地講述了演講的基本技能和方法,以及喬布斯所採用的一些“魔法”, 值得一讀。
-
《億萬富翁的非常思考術》: 埃利布羅德 著。 由一篇篇簡短的文集組成, 講述了作者在事業中所遇到的問題、思考以及解決思路和方法。 簡短,有力, 富有啟發。
-
《赤裸裸的統計學》: 查爾斯.惠倫 著。 以通俗易懂的例子生動地揭示了概率論和統計學在現實生活中的應用和含義, 值得一讀。
-
《需求:締造偉大商業傳奇的根本力量》: 亞德里安.斯萊沃斯基, 卡爾.韋伯 著。 講述了當今時代那些新興初創企業如何不屈不撓地克服各種障礙(技術,設計,商業,社會,習慣和情結,強大的競爭對手等), 最終打造出一款新穎的、優質的產品服務的過程。非常有啟發性。每一個小節都以一個非常引人入勝的案例入手, 無論是成功還是失敗, 都深入地揭示了其中的關鍵元素。
-
《泰戈爾經典詩選2: 生如夏花》: (印)泰戈爾著, 冰心譯。 優美而清新的散文詩, 心靈的美妙音樂。
-
《簡單的藝術》: (法)多米尼克.洛羅 著。簡約而優雅生活的實用指南。 作者以自己對簡單生活的信仰、熱愛、追求和探索,緩緩而清晰地講述如何細心護理自己的身體、精神、心理和心靈,構建屬於自己的簡約而優雅的生活。簡單,即是擁有極少,把空間留給必需與精華。依賴更少,更加暢快、自由與輕鬆,更加細膩優雅。你是自己唯一擁有的最珍貴的財富;專注提升自身的完善,善用萬物而非擁有。
-
《安妮日記》: 安妮.弗蘭克 著。二戰中一位普通少女的隱蔽生活記錄。 讓人懂得珍惜現在更加美好自由的生活。
-
《生命之書》: 克里希那穆提 著, 胡因夢 譯。 作者極深刻地探索了人在一生中所遇到的種種困惑, 令人如飲清透的甘泉。
-
《心理學與生活》(第16版): 理查德.格里格, 菲利普.津巴多著。 心理學入門的優秀讀物, 通俗易懂, 而不失心理學科的嚴謹性和系統性。瞭解自己, 理解和體貼他人。
-
《創新演算法:TRIZ,系統創新與技術創造力》: 根裡奇.阿奇舒勒 著。 作者首先闡述了傳統發明試錯法的低效,批判了關於發明創造的老舊觀念,接著在分析大量機電發明專利的基礎上,提煉出一套用於技術發明創造領域的系統有序地探索和搜尋求解空間的演算法和方法:理想機器、技術矛盾和原理矩陣, 誠意滿滿的乾貨! 略微美中不足的是,大量的發明專利分析都是基於機電類的,如果缺乏相應的知識背景, 讀起來會比較費勁。
-
-
《數學之美》: 吳軍著。 建立正確的數學模型, 提煉出簡潔的概念, 發展方法進行處理。 本書通過講述自然語言處理領域相關的網際網路技術背後的數學原理, 揭示了數學在處理電腦科學與技術問題上的威力,值得軟體工程師深思自己的開發工作。
15. 《我的心只悲傷七次》:紀伯倫著。冰心譯。雙語版。從那散文詩中飄出大地的悠遠和花土的芬芳。
16. 《為人生加速:福特自傳》:福特著。 以樸實的語言闡述設計、生產、製造、工作、社會,企業經營管理的真知灼見。商業的基礎是服務,人所創造的絕大多數事物都是為社會生活而服務的。
17. 《微創新:5種微小改變創造偉大產品》:德魯•博迪,雅各布•戈登堡 著。闡述了產品重組創新的加減乘除、屬性依存策略。
18. 《偉大創意的誕生:創意自然史》:史蒂文·約翰遜 著。揭示了“創新是穿過並連結相鄰可能的一扇扇門而抵達的另一扇門”的道理,同時也闡述了構建平臺和生態系統的一些啟示:迴圈利用,彼此依存,共生共榮。
-
《清醒思考的藝術》:羅爾夫·多貝里 著。講述了人容易犯的52種思維偏差。意即要對人類“理性”保持謹慎,切勿高估。
-
《TED Talks:演講的力量》: 生命轉瞬即逝,唯有思想、靈感與愛永存。簡單、放鬆、感悟、分享。一本優秀的演講書籍,提綱挈領地闡釋了演講的方法和技巧,乾貨滿滿。還有很多TED實戰演講可以參悟,真是演講人的好去處。
[待續]