我一直以來讀書是獲取知識最好的方式,很長時間以來,我都在部落格維護了一個 推薦書單,最近又做了一些整理,為每本書都新增了簡評,希望能對大家有幫助,當然如果能用我的推廣連結購書就再好不過了。
電腦科學
-
這本書從一個程式設計師角度描述了計算機底層的工作原理,例如資訊的儲存、算數計算、彙編和連結、處理器、編譯優化、儲存器、輸入輸出、併發程式設計等話題。對於 C 等系統程式語言的使用者來講,這是一本必讀的書,這本書會讓你對你的寫下的每一行程式碼的執行過程有一個比較系統的瞭解。對於應用級程式設計來講,這本書也有很大價值,因為了解底層實現會有助於你更深刻地理解高抽象層次的程式語言是如何實現的。
-
這本書以 Lisp 為例系統性地介紹了用於在構建大型軟體時控制程式碼的複雜度的技巧 —— 將複雜的事物,通過隱藏細節的方式不斷地進行組合和抽象。這本書將會讓你認真地思考程式設計的核心過程 —— 抽象,幫助你設計出結構良好、可維護的程式碼。
-
這本書以自頂向下 —— 從應用到實現的方式介紹了計算機網路各層次的設計和實現。這本書會幫助你對計算機網路各個層次所扮演的角色有一個概覽性的瞭解,對於應用層程式設計來講,瞭解 TCP 和 HTTP 的實現也是非常有幫助的。
-
這本書同時介紹了「狀態機」和「Lambda 驗算」這兩種計算模型,深入地介紹了高層次的編譯型語言如何被編譯到上述的計算模型,但本書並沒有太多理論性的介紹,而是用比較易於接受的例子來進行講解。這本書會讓你瞭解到計算機是如何擁有計算能力的,以及平時所使用的高階語言如何對映到基本的計算模型,也會教會你如何自己實現一個簡單的編譯器。
軟體工程
-
這本書通過上百個例子來介紹在具體編碼工作中的「最佳實踐」,這是一本當之無愧的「程式碼大全」,因為每一節都是相對獨立的話題,因此本書很適合碎片時間閱讀。這本書可能需要你有一定軟體工程的實踐才能理解其巧妙之處,因此建議每隔一段時間就重溫一遍。
-
這本書通過幾十個較為零散的話題介紹了一個優秀的程式設計師在工作的過程中會遇到的問題 —— 如何挑選工具、如何協作、如何保證質量、如何管理需求和任務。這本書適合有一定工作經驗的程式設計師閱讀,並思考自己的工作中還有哪些改進空間。
-
這本書通過大量的程式碼示例和講解,從識別符號、註釋、變數、流程控制、排版、組織程式碼、自動測試的角度細緻地討論了什麼才是「優雅」的程式碼風格。這本書會讓你重新注意起程式碼中不起眼的小細節,適合所有希望寫出優雅的程式碼的人。
-
這本書介紹了世界上最大的網際網路公司如何在規模逐漸增長的過程中保證可用性的,從如何看待風險、部署監控、釋出新版本、緊急故障處理、設計分散式系統、如何培養運維工程師等角度全面地介紹了站點可靠性工程師(SRE)所面臨的挑戰,推薦所有伺服器端開發者閱讀這本書。
演算法
-
這本書通過十幾個例子介紹瞭如何寫出正確的程式碼,並一步步優化使其短小精悍並擁有較高的效能,應用了排序、搜尋、集合和字串運算等最基本的演算法。這本書會讓你思考如何寫出正確的、簡短的、高效能的程式碼,畢竟只有在這樣的程式碼的基礎之上,才有應用其他軟體工程方法的意義。
-
這本書結合有趣的例子介紹了在資料分析、搜尋引擎、文字過濾、預測和決策領域的一些演算法,它們並不複雜,並且很有可能會在你的工作的某個部分中發揮作用。
JavaScript
-
這本書事無鉅細地介紹了 JasvaScript 語言核心、標準庫以及瀏覽器提供的 DOM 和 BOM. 本書並沒有由淺入深的結構,而是通篇平鋪直敘地介紹,因此適合有一定 JavaScript 基礎的人從頭至尾閱讀來掌握一些相對細節的 JavaScript 知識,或遇到具體問題時查閱相關章節。
-
這本書用相對簡短的篇幅介紹瞭如何使用 JavaScript 中最精華的部分編寫優雅的程式碼。這本書適合對 JavaScript 僅有些許瞭解的人快速上手 JavaScript, 避免陷入 JavaScript 語法中的那些糟粕。
-
JavaScript Web Applications 中文版
這本書通過從零設計一個 MVC 架構的 JavaScript Web 應用框架來介紹瞭如何控制大型 Web 應用的複雜度,也介紹了幾個常見的開源 Web 框架。這本書適合 Web 前端開發者瞭解常見的 Web 框架的基本設計思路和工作原理。
-
這本書介紹了 JavaScript 中事件模型、Promise、async.js 等非同步抽象的設計和實現,同時也介紹了 Web Woerk 等在瀏覽器中優化效能的技巧。這本書適合所有 JavaScript 程式設計師增加對 Promise 等非同步模型的理解,並在實踐中挑選合適的非同步模型。
資料庫
-
這本書由淺入深,概覽式地介紹了 SQL 中和具體實現無關的那些語法,非常適合快速入門,瞭解 SQL 所提供的功能。
-
這本書從 Redis 的各種資料型別入手,介紹了常見的命令,其間穿插著資料結構設計的例項,後半部分也介紹了事務、指令碼和持久化等高階話題。這本書非常時候新手入門 Redis 或有一定 Redis 使用經驗的人瞭解一些細節知識。
-
這本書側重於效能和可用性方面,先介紹了效能測試的基本原則,然後分別討論了索引、查詢對效能的影響,還介紹瞭如何配置分割槽和複製、如何配置高可用的資料庫。適合已在工作中大量使用資料庫,希望深入瞭解 MySQL 的工作原理來進行效能優化的開發者。
雜項
-
對於 Web 開發者而言,HTTP 是溝通前端於後端的橋樑,HTTP 本身提供了極其豐富的功能,就像其他的權威指南一樣,這本書面面俱到地介紹了 HTTP 主要特性,有助於你在前端或後端開發中選擇恰當的特性,在出現問題時進行更有針對性的排錯。
-
PHP 的使用者既有 Facebook 這樣頂尖的網際網路公司,也有一些連版本控制和依賴管理都不瞭解的業餘開發者。這本書會介紹如何使用 PHP 中的新特性、常見的需求有哪些最佳實踐、有哪些風格標準可以參考、如何進行測試、如何進行部署,以現代化的方式來進行 PHP 開發。
-
這本書非常適合已有一定的開發經驗,希望快速瞭解 Python 的語法,並用 Python 完成一些簡單的專案。這本書先是簡略地快速介紹了 Python 的語法,然後介紹它在指令碼、網路、資料處理等領域的應用,其間還介紹了很多相關的工具和第三方包。