其他
向热爱计算机科学的你推荐SICP(2019年版) 《计算机程序的构造和解释》改变你的编程思维
本书曾经是MIT本科第一门课的教材。前两年被Python取代,在geek中引发了轩然大波。有兴趣可以Google一下[sicp mit python]。 本书在Amazon上的评分严重两极分化,五星(>90)和一星(>50)为主,彻底反正态分布。 本书在Amazon上排名最高的书评出自Peter Norvig,当然是强烈推荐,顺便狠狠地鄙视了给一颗星的同学们;第二篇出自Paul Graham,还是强烈推荐。 本书别名紫书(The Purple Book),巫师书(The Wizard Book),或者干脆The Book。
这是一本什么样的书?
语言首先是写给人看的,只是恰巧(incidentally)能够运行。这当然是个修辞,格外强调代码之可读。 语言的语法,漂亮的算法,数学的分析,这些统统都不重要。最打紧的是如何控制复杂度(The techniques used to control the intellectual complexity of large software systems)。
这本书适合初学者吗?
热爱计算机科学 有时间和耐心 受过(高中水平)数学和抽象思维的训练
这本书适合有经验的程序员吗?
Scheme好学吗?
这本书到底讲什么?
语言会影响思维
Then mathematical neatness became a goal and led to pruning some features from the core of the language.(保证数学上的简洁性成为我们的目标,并因此拒绝了将一些特性加入到语言核心中。) This was partly motivated by esthetic reasons and partly by the belief that it would be easier to devise techniques for proving programs correct if the semantics were compact and without exceptions.(这部分是基于美学上的考虑,部分是因为我们相信,紧凑而没有特例的语法才更有可能设计出一种从数学上证明程序正确的方法。)
一个强有力的程序设计语言,不仅是一种指挥计算机执行任务的方式,它还应该成为一种框架,使我们能够在其中组织自己有关计算过程的思想。每一种强有力的语言都为此提供了三种机制:基本表达形式,组合的方法,抽象的方法。
对于构造递归式的训练。相信做过的都深有体会…… 列表处理流程,也就是 map-filter-reduce 。 流处理这一节让我终于明白了 generator 的意义。 从另一个角度看程序和程序设计中的问题 函数式程序设计 多种多样的程序组织方式 丰富多彩的编程模式 对一些基础问题的理解 ……
关于习题
为什么推荐SICP?
往期推荐