sicp读书笔记

以下内容会在github中率先更新。而且会随着阅读不断更新。
前几天在github上看到开源的MIT bibble级别教材sicp(计算机程序的构造与解释),便下载下来看。无奈英文阅读退化到好严重,看了几页就坚持不下去了。于是下单了一本纸制书,在这里开一个项目记录一下我的读书笔记。估计会有少量的写到读书过程中的记录,还有习题解法。单独写一个这个可能会很无聊,只是用来防止我无可救药的拖延症。

What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.
感觉这应该是最好到学习态度。

1.构造过程抽象

程序设计的基本元素

  • 基本表达形式
  • 组合的方法
  • 抽象的方法

Lisp宗教

在看这本书之前看到大家对Lisp黑的已经体无完肤了,其实我感觉语言倒是没什么。反正教材性质到书应该更多到关注思想。当然多一种语言也能开阔思路。好像Lisp有很多的方言,书中使用的是Schema,目前为止感觉最新奇的是前缀表示(prefix notation).

(+ 1 2)

这个用来表示1+2,当参数很多到时候应该是个效率很高的办法,但个人感觉当多个运算符的时候,如何分辨运算顺序与组合关系就会很蛋疼了,好在Lisp的美观打印的格式规则的可读性好一点,但对于我这种java狗来说还是有点吃力。

求值模型

(+ (+ 1 3) (- 7 2))

像这种形式的东西我从来没有想过程序执行的时候应该是怎样到顺序去求值,我一直认为应该是每一部分求值然后一层层算。书中对这点做出了探讨。求值模型开源分为:
* 正则序求值(normal-order evaluation)完全展开而后归约
* 应用序求值(applicative-order evaluation)先求值参数而后应用

书中说明Lisp采用了应用序求值。

练习1.1

10         10
(+ 5 3 4)  12
(- 9 1)     8
(/ 6 2)     3
(+ (* 2 4) (- 4 6))   6
(define a 3)

发表评论

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.