有哪些你看了以后大呼过瘾的编程书？
没想到竟然上了日报。好方…… ——————————————— 大学时我对编程语言有过一些困惑：应该学哪个编程语言？到底怎么样才算是掌握了编程语言？5年前我幸运地看到了垠神在新浪博客的一篇文章 - 如何掌握程序语言，里面推荐阅读SICP的前三章。我读过之后，受益良多。 曾几何时，SICP是每个MIT CS学生大一就要上的基础课的教材，毕竟是世界名校，比我们的课程不知高到哪里去了。然鹅，时过境迁，MIT的教授们已经停止这门基于SICP的课程了，因为一方面他们已经教了太久（十几年了），感觉很烦了，另一方面他们认为软件工程的学生现在把大部分时间花在阅读软件库的说明书上，然后搞清楚怎么调用，SICP跟这套工作流程已经不怎么相关了。 好了，虽说这门课已经不更新了，SICP的作者承认他们并不知道应该如何安排更合理的课程，所以我们还是要看看这本书。 另外，基于这本书，伯克利的一位教授搞了个教学网站 - http://composingprograms.com/about.html，用Python来教SICP，有兴趣可以去看看。这个网站的内容也是基于伯克利的CS 61A，这门课的名字就叫SICP。实际上MIT也已经用Python替换了Scheme，所以我个人更推荐上面这个网站，比起Scheme，Python更加适合初学者。不过SICP的内容不会过时，Scheme只是一个表现形式，扫一遍前三章也绝对不亏。非初学者也会有时看时新的感觉。 SICP帮助读者了解CS的核心概念，属于从高空俯瞰世界，刚入门的读者不应该错过。  说完了高空，接下来我想推荐另一本中间高度的书，这本书帮助我从了解如何组织代码的模块，以及实践中业界遇到的问题，以及如何用合适的架构来解决这些问题。 Clean Architecture: A Craftsman's Guide to Software Structure and Design 这本书是Uncle Bob最近几年的博文合集，读完以后有种灵台清明的感觉，做code review的时候思路清晰了很多。 看过差的架构才明白好的有多么珍贵。架构都是一点点烂掉的，所以防微杜渐很重要，而要防微杜渐，就必须要从一开始就知道正确的架构方向。这本书不长，英文版也只需要不到10个小时就能读完，大学里或是工作中的读者应该会喜欢这本书。这本书2017年9月才出版，时效性远远超过经典的Martin Fowler的Patterns of Enterprise Application Architecture，你如果准备读后者，建议你先读这本小书。  说完了中间高度，还有一本更加细节的书，我实在不能不推荐，因为我看到高票答案里都没提到，也许是因为这本书2017年三月才出版，还没有中文的。 Martin Kleppmann的DDIA：Designing Data-Intensive Applications。 这本书的作者阅读量非常广泛，以数据密集型软件的设计为楔子讲了分布式系统的很多东西，从设计思路到一些具体细节，收放自如。从Netflix的技术博客，到开源软件的技术来源，再到OSDI上各个业界大厂发的论文，让我大饱眼福。一共12章节，目前看到了第9章。 如果说上一本是讲了高可扩展性、高可维护性的架构，是骨架；那么这本书是讲了分布式、高并发、高性能、高可用的软件，是血肉。细胞的级别讲不出来，绝知此事要躬行。 微软CTO Kevin Scott对这本书的评价是『每一位软件工程师的必读书。』 目前这本书在Goodreads上有404个评价，评分高达4.68，要知道SICP才4.45.  简单强调一下：国内的朋友不要排斥阅读英文资料，作者都是理工科，写作词汇量基本也就是四级英语，跟咱们高中英语差不多。 看了这两个回答，赶紧学习吧： Memoria：17 年美国 CS new grad 就业到底有多差？ David Dong：如果编程语言变成高考科目会怎样？  