诡秘深奥的现代魔法 – SICP 读书笔记 0

明天高考成绩出来以后,这个读书笔记如果没坑,说明我还好。我现在心情压抑的转移注意力。

《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs ,简称SICP,豆瓣链接维基词条)这种好书,很早我就买了,几年了我常常带在身边想要翻看,结果只看了一点点,但是因为常常带在身边,有的时候用作鼠标垫什么的,前几页就磨损的很厉害,我总是很自豪地说我把SICP 翻烂了。

实际上Scheme (SchemeLisp 的一个方言,也是SICP 的教学语言)也就写了个hello world。这本书曾是麻省理工的编程入门课程的教材,但是难度一点都不符合“入门”,但我也不清楚是否真的能行,如果没学过编程的人对自己有信心的话可以借来看看。

现在,在高考成绩发表前的忐忑中,我打算一边看,一边连载读书笔记和习题解答。当然,也有些有趣的摘抄。

带着崇敬和赞美,将本书献给活在计算机中的神灵。

这本书的序,在严谨中透着Fantasy 和Romantic,将程序设计和施展魔法类比,看似怪诞但是真的很合适。如果一个程序员说起《魔法书》就说的是这本书,而在Scheme 讨论的语境中,据说将这本书叫做“The Bible”(圣经)。其封面就是一个魔法师,手里还有一个阴阳鱼:eval 和 apply,这应该说的是Lisp 的元编程特性:众所周知在C 中你可以用Macro(宏)定义一些常量和简单过程,编译时会进行处理,但是Lisp 的最特别之处就在于Lisp 的Macro 也是Lisp,也就是Lisp 能自己处理自己,并且Lisp 的基于S 表达式的语法使其能把程序本身当作数据处理 ,你可以想象一个基于JSON 语法的编程语言,能读取自己的数据来动态的处理 。

虽然我没有这样元编程的经验(我才写了个hello, world。),但是可想而知这种方式能让语言的表达能力得到最大的释放,Lisp 本身不支持OO(面向对象),但是借助元编程,很多人自己很快就从无到有定义了一套OOP 语法。很久很久以前,有人想要让没有OOP 能力的C 实现OOP 出现的是C ++,但是Scheme 还是Scheme……

作者将这种不断变化的特性比作生命体,Pascal (和我们熟知的很多语言)则比作金字塔,这是我在技术书中看到过最热血的话。

作为这些情况的后果,金字塔矗立在哪里千年不变,而有机体则必须演化,否则就会死亡。

最后,正是这种语法和语义的极端简单性,产生出了所有Lisp 程序员的负担和自由。任何规模的Lisp 程序,除了那种寥寥几行的程序外,都饱含着考虑周到的各种功能。发明并调整,调整恰当后再去发明!让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp 程序员。

前期准备,就是选择编译器(解释器), Racket 是不错的选择,强大(可以说是Scheme 的超集,但严格来说不是Scheme,不过没问题。),多平台,并且自带有着友好GUI 的IDE(也是多平台): DrRacket,用了一下很不错,就是Linux 下图标很丑。

顺便,“hello, world”是:

 

这个Github 代码仓库,是我准备放习题解答的地方,现在只有一个习题的解答

目录

诡秘深奥的现代魔法 – SICP 读书笔记 0》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注