喂喂~~~ 收藏的時候順便點個贊呀!同學們!

( ^ω^ )

2018讀書列表在這裡: 阿萊克西斯:2018年技術類讀書小結(附帶難度估測和推薦度)

這個回答把我覺得比較好的書挑出來,稍微評價一下。

A Philosophy of Software Design

字字珠璣!頁頁炸裂! (這本書把後半本撕了之後可以封神)

8012年最佳編程思想的書,很薄,書頁也很小,會很快能讀完,我推薦, 每!一!個!程!序!員 必!讀!不是開玩笑。如果你讀完覺得一般般,那說明要麼你沒讀懂,要麼你沒有足夠的工業界帶隊經驗(霧)。。。。

Streaming Systems: The What, Where, When, and How of Large-Scale Data Processing

簡直好到爆炸的一本書,我心目中的2018年最佳(A Philosophy of Software Design被後半本內容拖累了),Google 10年大數據流系統經驗總結,這本書不僅僅是講流系統,而是講consistent的大數據處理,本書大一統了batching和streaming,table和stream,可以升級讀者對數據處理的理解,你能學到google dataflow,apache bean model,和各種流系統的對比。 有詳細評論,阿萊克西斯:評:Streaming System(簡直炸裂,強勢安利)

Distributed Systems: An Algorithmic Approach, Second Edition

深入的「入門」分散式系統最好的書,目前看,沒有之一(根據我看過的數本類似的書比較得知)

Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

入門Machine Learning和Deep Learning最好的書,絕!對!沒!有!之!一!(有其他好的你可以告訴我呀~~~~)

Type Theory and Formal Proof: An Introduction

在我看來是入門Formal Proof和Type Theory最好的書,作者可以把很難的東西寫簡單,而且突出重點,忽略該忽略的,講該講的,作者好像知道你哪裡會有疑問,哪裡會理解偏差一樣,在這些點我覺得很疑惑的時候,很多時候突然就有例子和反例來講解,然後就清楚了,對初學者來初入這種很難的領域來說,簡!直!救!命!

Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers

分散式系統想要進階,懂TLA+會幫助很大, 阿萊克西斯:簡評Specifying Systems:關於行為時序邏輯

Reactive Design Patterns

這本書Amazon的評價不高,那是因為這本的涵蓋面實在太廣了。。。。。作者站在雲霄俯視萬物的感覺,沒見過神仙的凡人不會懂。。。。 貼一個之前寫的想法。

我又來安利書籍了,Reactive Design Patterns, 這本不可多得的書在amazon只有三星,險些與我失之交臂。

這本書好到:即使我本人從不使用react和akka,即使我也不同意作者對react和akka的過譽。我還是強烈推薦此書。這本書的眼界非常廣,這是唯一一本我看到同時提到SOA,DDD,bounded context,Enterprise Integration Pattern,camel,Functional /Logic /Dataflow programming,Oz,Bloom等「奇葩」語言,ACID2.0,BASE,CALM,CAP,Akka,continuation,Reactive Manifesto,Little『s law,conway』s law,Universal Scalability Law,Mesaage passing各種語義,Hierarchy分層… … 等等等作者嘗試找出這紛亂世界的聯繫,並建立了一個以所有這些都為基礎的思維體系來描述問題。本書的第二部分關於「計算機系統設計哲學」的論述相當精彩,雖然很多東西我都已經了解過,但是能講述的讓人信服卻是難能可貴(這為我撕逼又添加了很多可以引用的素材)。

本書的唯一缺點就是很多東西只是蜻蜓點水,而強調因果和他們相互的聯繫比較;如果對很多概念都根本沒有了解過,沒有比較深厚的知識背景,那麼很可能看完是一臉懵逼。

就像這樣 =》 ( ̄? ̄)

Kubernetes in Action

這是未來的新基礎(不是說K8S,而是說軟硬體隔離的思想)這本書是用K8S來講,維護一個高可用,高並發的系統,你都需要考慮什麼,而K8S又是怎麼幫助你的。 阿萊克西斯:(簡評)Kubernetes In Action(大勢所趨)

Functional and Reactive Domain Modeling

這本書結合了我認為系統設計最重要的3個方面:Functional Programming, DDD, Distributed System. 對Functional Programming在真實世界建模,運用很精彩的一本書。DDD其實是來自OO世界的,因為Domain建模一般需要具體問題具體分析,分析實際世界。而這本書打通了High level Design和Low level Design的隔閡,完美詮釋了如何把Functional Programming的魔法應用在「現實世界」里。我推薦天天把monad掛在嘴邊,但是一到系統設計就抓瞎的同學閱讀。

阿萊克西斯:(簡評)函數式與反應式領域建模

Professional CUDA C Programming

即使在8012年的今天,這本也是入門 GPU編程最好最詳盡的書之一。

The Type Astronaut』s Guide to Shapeless

在Type上編程,運用Shapeless極大的減少 boilerplate code,提供了把計算機世界和高層語意完美分割的技術。對懂得系統設計和分離責任的讀者,這本書提供了一個非常好的編程思路。(這本書很薄才100頁,但是shapeless對scala implicit的運用簡直。。。帥氣,作者也是會把難東西寫簡單的人,因為書薄,所以可能對難度上有低估。。。因為shapeless貌似是公認的難懂?)

Category Theory for Programmers

對抽象的抽象,抽到腦仁疼。。。。提高程序員抽象能力的終極手段:學習Category Theory,化神的必經階段(大霧)。。。

(答主看了一大半還沒看完。。。前邊還好懂點,越往後越懵逼…目前看完2/3之後感覺舉步維艱。。可能從頭看一遍會好些,或者看其他書參考另闢蹊徑,此書作者的youtube視頻貌似比他寫的書要容易懂些。。。嗯。。。)


《Streaming Systems》

當之無愧的2018第一神書,雖然出版時間略晚,後發亦可先制。讀此書之前可以先讀《Streaming 101》和《Streaming 102》預熱。《Streaming Systems》沉澱了谷歌過去十多年對流、批計算的思考,前半部分主要闡述了Dataflow模型,提出流計算不確定性和可靠性的有效解決方案,把批處理統一吸納進同一套框架,後半部分敘述了Streaming SQL的可行性。這本書的也是大熱的 Flink 和Structural Streaming 的理論基礎。

《Spark: The Definitive Guide 》

大熱的Spark一直都沒有一本類似於《Hadoop 權威指南》的書籍震懾四方,知道2018年Databrick出了這本書,無愧權威二字。此書的Streaming章節配合《Streaming Systems》食用更佳。

《NoSQL distilled》

這本書也是年尾才讀到的,雖然不是2018年的新書,但是值得搞大數據的認真一讀。在13年的時候,NoSQL能做的基本上都做了,剩下的大多是修修補補的活。這本書類似於總結和概括,第一遍讀的時候十有八九是似懂非懂,不太清楚為什麼要這麼設計,這是可以去讀《DDIA》(2017年第一神書)了解數據系統整個理論框架,然後再讀此書,會有種不同的感覺。

《Scala 編程》

2018年認真學習了Scala ,並以淺薄的筆力簡單的對比了Scala和Python。不同於大部分編程語言書,這本書不光光是語法層面的講解,更是語言設計者對編程語言本身的思考以及如何Scala複雜的特性是加進來和思量。

《Python3 學習筆記》

講真,讀Python的相關中文書籍已經沒有當初的驚喜了,大多索然無味,學習不到新的技術和思路,隨意翻翻就知道是新瓶裝舊酒,學習來源一直是各種Weekly和博客。但是讀了《Python3學習筆記》,依然感覺到這是一本誠意滿滿的書,「talk is cheap, show me the code「。


書:

High Performance MySQL?

shop.oreilly.com圖標

書如其名,講的是如何從不同方面(profiling、schema、indexing、query、hardware...)提升mysql的性能。我工作中並不使用mysql,但是還是從前面的一些章節,尤其是第五、六章講設計索引和優化查詢語句的內容中學到很多。前面的章節中傳授的經驗對關係型資料庫基本通用,後面的章節相對來說更加針對mysql。

Understanding MySQL Internals?

www.oreilly.com圖標

講解mysql內部實現原理,很簡短精鍊的書,才兩百頁。

The Elements of Computing Systems?

www.nand2tetris.org

非常喜歡的一本書,講述了如何如何從最基礎的數字電子元件nand gate開始,搭建一台基本的計算機。路線是nand gate -&> logic gates -&> CPU, memory, registers... -&> assembler -&> high level language (實現一個類似java的語言,包括它的vm) -&> os。感覺是把大學的各種基礎課程(數字電子,計算機組成,彙編,編譯器,操作系統)串聯在了一起。跟書配套的課程是coursera上大名鼎鼎的 From Nand to Tetris,還沒看。

Spark核心技術與高級應用 (豆瓣)?

book.douban.com圖標

簡單實用的spark入門書籍,附帶了很多樣例代碼,涉及了一些spark內部的實現原理,能夠幫助讀者深入理解spark。

其他一些書沒有那麼值得推薦,就不寫了。

視頻:

Advanced Machine Learning | Coursera?

www.coursera.org圖標

coursera上比較偏理論的機器學習系列課程,優點是深入講解原理、推導公式,其他網課一般沒有這麼深,缺點是講課方式有待提高,作業有bug。大學畢設做的是機器學習所以就去學了,上完之後還被邀請做tutor了,比較意外。

Functional Programming in Scala | Coursera?

www.coursera.org圖標

只上完了前兩門,感覺很不錯,scala作者教你fp。講課思路還是很清晰的。

Data Engineering on Google Cloud Platform | Coursera?

www.coursera.org圖標

很簡單的Google cloud系列,開兩倍速還能跳進度的。不過做他的lab可以很快了解Google cloud的各種服務。起初上這系列的原因是參加一個活動免費送了課程...

博客:

Inside look at modern web browser?

developers.google.com

Google出的系列博客,用簡單的語言講述Chrome的運行原理(多進程架構與渲染)。

Microservices: From Design to Deployment?

www.nginx.com圖標

Nginx出的系列博客,講解microservices的概念以及怎樣結合nginx來實現。

How to write a good software design doc?

medium.freecodecamp.org

介紹如何寫好軟體設計文檔,寫design doc的時候不能忘了主要的目的是什麼,引用其中一段話 "The main goal of a design doc is to make you more effective by forcing you to think through the design and gather feedback from others. People often think the point of a design doc is to to teach others about some system or serve as documentation later on. While those can be beneficial side effects, they are not the goal in and of themselves."

Notes to Myself on Software Engineering?

medium.com

Keras作者的軟體工程師筆記,比較零散的建議,不過都很有價值。核心思想應該是多考慮團隊和用戶。Keras本身的API設計和文檔都非常好,非常認同作者的很多觀點。順便分享更久以前看作者對API設計的總結:User experience design for APIs

Walking the wire: Mastering the Four Decisions in Microservices Architecture?

medium.com

作者做出的Microservices架構中的四個「決策」

印象比較深的就這麼多,2018學東西還是比較少。2019我會每個月至少看一本書然後去寫這個問題的2019年版本:)


今年書看的不多,論文看的倒是多一點。

資料庫無關的:

  1. What Every Programmer Should Know About Memory

2. What Every Programmer Should Know About Compiler Optimizations

資料庫相關:

Inside Microsoft SQL Server 2005?

book.douban.com圖標資料庫索引設計與優化 (豆瓣)?

book.douban.com圖標Site Reliability Engineering?

book.douban.com圖標現代體系結構上的UNIX系統 (豆瓣)?

book.douban.com圖標現代體系結構上的UNIX系統:內核程序員的對稱多處理和緩存技術 (豆瓣)?

book.douban.com圖標Memory Systems (豆瓣)?

book.douban.com圖標事務處理 (豆瓣)?

book.douban.com圖標

推薦一下我在2018年底剛出版的新書: 《Rust編程之道》

不敢王婆賣瓜自賣自誇,但確實是我心血之作。預售這一個月以來,也受到不少好評。

張漢東:《Rust編程之道》預售開啟

張漢東:《Rust編程之道》完整目錄公布

上面的鏈接是對本書的詳細介紹,也包含了樣章,感興趣可以了解一下。


推薦閱讀:
相关文章