去年写了个 回答[1] 总结了下 2020 年读过的好书,今年相对来说花在读书上的时间少了很多,而且有不少在之前一个 关于机器学习专著的回答[2] 里已经介绍过了,这里就简单补几本最近看过的书。 1 《Ideas That Created the Future[3]》 ⭐⭐⭐⭐⭐ 计算机领域有不少“陶冶情操”的神书,例如著名的《计算机程序设计艺术[4]》,《具体数学[5]》,《SICP[6]》,《Elements of Programming[7]》等。这本 21 年出版的新书,无疑又是一本这方面的好书,充分说明了计算机科学还真的是一门“科学”哈哈。书中收录了引领计算机科学领域发展的 40 多篇论文,并结合了作者的一些评述。其中包括很多我们耳熟能详但可能从来没有去读过原作的大佬,例如巴贝奇设计的最早的“计算机”,唯一以人名来命名的基础类型“布尔”,图灵,香农,冯诺依曼等诸位“祖师爷”,到更近代一些的 Dijkstra,Knuth,Codd 等等。涵盖了计算机组成,操作系统,信息论,人工智能,软件工程,算法设计,数据库原理,计算机网络,密码学等方方面面,可谓是精彩纷呈,非常值得一读。 个人感觉有些小遗憾的是作者把入选文章的时间点卡在了 1980 年,像 Leslie Lamport,Tim Berners-Lee 或更晚一些成名的大佬的工作就没有包含在内。这里推荐一下极客时间的“大数据经典论文解读[8]”课程,多少可以弥补一些这方面的遗憾 :) 2 《Software Design for Flexibility[9]》 ⭐⭐⭐ 这个书一看封面就知道来头不小,SICP 续作,也是一本偏“陶冶情操”的书。一开始的总体介绍部分就很激动人心,感觉是悟到了自然世界的终极奥义,马上就可以带领我们写出随着环境自动演化的软件系统来了!但一进入到实际讲解和代码演示环节,我就傻眼了……作者看起来是想解决实际软件系统的很多痛点,但采用的教学语言是现在工业界几乎见不到的 Scheme(保留了 SICP 的选择)。所以这本书的定位就显得有些尴尬了,如果是教新人计算机程序,选择 Scheme 还可以理解,但要进阶来解决一些软件系统的大问题,又有多少软件工程师,架构师日常会用 Scheme 呢?像我这样的非 Scheme 专家,自然也就理解不了这其中的高深绝学了…… 3 《Crafting Interpreters[10]》 ⭐⭐⭐⭐⭐ 编译器与解释器方向最好的一本书!我做这个评价可能不太靠谱,毕竟龙书虎书鲸书橡书我一本都没读过……但不得不说这本书作者的功力真的是深厚,能把一个复杂问题通过非常浅显易懂的方式分解和阐述出来,文字,配图,代码,各种旁征博引,幽默 notes 都那么的恰到好处,实在是佩服。在书中作者会先带我们用 Java 实现一个 tree-walk interpreter,用来运行一门带有 class 和继承等“高级功能”的脚本语言 jlox。然后再用 C 语言再实现一遍具有相同功能的 clox,但这次则是完全从底层开始实现一个 Bytecode VM ,包含了 Pratt Parser,编译 lox 代码到 VM 字节码,垃圾回收以及最后的一些性能优化等。这本书在亚马逊评分高达 4.9,编程语言领域销量第一,相信不需要更多的解释了,现在就入手吧! 4 《Grokking Deep Reinforcement Learning[11]》 ⭐⭐⭐⭐⭐ 跟上一本类似,也是我读过的最易懂的深度强化学习书籍。配图,公式,代码,思考题都设计的非常好,讲述的思路也非常清晰。前半本是基础的 MDP,value/policy iteration,探索和利用到表格类求解方法,后半本则涵盖了 value-based,policy-based,actor-critic 等深度强化学习的方方面面,很适合作为初学者的第一本强化学习的读物。随书还配有相应的代码环境 (Docker 镜像)和 notebooks,可以边看边跑代码尝试,可视化对比各种算法效果。22 年打算再看看伯克利 Levine 大佬的 CS285[12] 提升巩固一下 :) 5 《图表示学习[13]》 ⭐⭐ 今年入门图算法买的书,据说原著还不错,看到有中文版就顺手下单了。不过这个翻译实在有点……很多词可能还得去看原文才知道是啥意思。后来就弃坑去看 Leskovec 的 CS224W[14] 了,感觉讲的好太多了,很快就大致了解了图算法领域的全貌。今年看了不少偏“入门”类的书,但稍微对比一下就知道要把入门的讲好很多时候难度比写领域论文要大得多了。 6 《基于 Apache Flink 的流处理[15]》 ⭐⭐⭐⭐ 今年也“入门”一下流式计算,没有选《Streaming Systems[16]》,而是看了这本更偏实操的 Flink。总体来说感觉还行,看得出来作者是想通过一些 top-down 的思路来逐渐深入讲解 Flink 和流式计算,但感觉有点局限在实操框架层面,而缺少了一些更深层次的原理性描述。比如像水位线的概念,就明显没有 Streaming Systems 里讲的清晰易懂。看完感觉流式计算的应用还挺难写的,API 有点 low-level,不知道从事这块开发的同学有没有什么特别的心得技巧? 7 《Core Kubernetes[17]》 ⭐⭐⭐⭐⭐ 这本书还没正式出版,因为版本比较新,且看到豆瓣上之晗大佬推荐,所以买了 Manning 的 MEAP 版本来读。看完对 k8s 的理解也多了不少,终于不再是只会 kubect apply/delete 的小白玩家了 :) 这里直接引用一下大佬的评价:
8 《阿里云云原生架构实践[18]》 ⭐⭐⭐ 去年读过本阿里的 B2B 电商算法,这本书给我的感觉非常类似,就是参与的作者太多了,整体的质量会有些参差不齐。另外如果没有一个主要的作者,大家也不太会把这本书当作自己的“作品”,前后的写作风格,内容体系等都会打一些折扣。不过话说回来阿里云在国内的技术实力和排面还是在线的,目前也没有看到更好的关于云原生整体生态的相关书籍,这本书还是值得一读,尤其是前五章。 9 《The Rust Programming Language[19]》 ⭐⭐⭐⭐ 今年入门 Rust 稍微读了一下这本书,不过其实很多内容都没怎么记住,后来还是直接参与一些开源项目理解来的更深入一些……上次学一门新的语言还是 13 年上 Scala 的课,感觉 Rust 的确也是一门很值得学习的语言,了解了很多新概念,什么所有权,生命周期……而相对来说 Go 可能就适合直接拿来干活了 :) 10 《Fundamentals of Software Architecture[20]》 ⭐⭐⭐⭐ ThoughtWorks 出的一本架构师读物,前半本讲了很多架构设计的评估维度,取舍,以及各种常见架构的分析,从单体架构,分层架构,SOA 一路讲到现在最火的微服务架构。看完之后会对这些架构有更深刻的认知,对于架构师来说,一切都是 trade-off,如果有人一上来就狂吹微服务,那一定是个菜鸟架构师 :) 有意思的是这本书花了至少三分之一的篇幅来讲架构师的软技能,包括怎么协作,画 ppt,技术谈判等等,的确都是很重要的能力。这类内容在国内的架构师著作中就很少见到了。 11 《架构师应该知道的 37 件事[21]》 ⭐⭐⭐⭐ 相对上面一本来说,这本书在企业组织,沟通,数字化转型等方面的内容就更多了,甚至跟技术强相关的内容可能只有四分之一左右。其实这方面的知识重要度完全不亚于硬核技术本身,还是非常推荐大家阅读学习的。极客时间最近的“郭东白的架构课[22]”感觉是国内这方面技术思考推广的先驱,也很值得推荐。 最后来回顾下 2021 年初时的读书计划:
22 年就不立啥大 flag 了,列一些相对明确的计划:
2022 年多读好书,与大家共勉! 参考资料回答: https://www.zhihu.com/question/427062662/answer/1654558524 [2]关于机器学习专著的回答: https://www.zhihu.com/question/465489928/answer/1981644390 [3]Ideas That Created the Future: https://book.douban.com/subject/35361700/ [4]计算机程序设计艺术: https://book.douban.com/subject/26681685/ [5]具体数学: https://book.douban.com/subject/21323941/ [6]SICP: https://book.douban.com/subject/1148282/ [7]Elements of Programming: https://book.douban.com/subject/7564093/ [8]大数据经典论文解读: https://time./column/intro/100091101 [9]Software Design for Flexibility: https://book.douban.com/subject/35279131/ [10]Crafting Interpreters: https://book.douban.com/subject/35548379/ [11]Grokking Deep Reinforcement Learning: https://book.douban.com/subject/35238587/ [12]CS285: https://rail.eecs./deeprlcourse/ [13]图表示学习: https://book.douban.com/subject/35478592/ [14]CS224W: http://web./class/cs224w/ [15]基于 Apache Flink 的流处理: https://book.douban.com/subject/34912177/ [16]Streaming Systems: https://book.douban.com/subject/27080632/ [17]Core Kubernetes: https://book.douban.com/subject/34899192/ [18]阿里云云原生架构实践: https://book.douban.com/subject/35469552/ [19]The Rust Programming Language: https://book.douban.com/subject/27013197/ [20]Fundamentals of Software Architecture: https://book.douban.com/subject/34464806/ [21]架构师应该知道的 37 件事: https://book.douban.com/subject/35062026/ [22]郭东白的架构课: https://time./column/intro/100099801 [23]Machine Learning Design Patterns: https://book.douban.com/subject/35135282/ [24]Deep Learning Patterns and Practices: https://book.douban.com/subject/35168226/ [25]Data Centric AI Workshop: https://zhuanlan.zhihu.com/p/435894738 [26]Introduction to Causal Inference: https://www./causal-inference-course [27]关于“资深工程师”的思考: https://zhuanlan.zhihu.com/p/410206677 [28]Systems Performance: https://book.douban.com/subject/35114639/ [29]BPF Performance Tools: https://book.douban.com/subject/34467459/ [30]Data Management at Scale: https://book.douban.com/subject/35219958/ |
|