# 《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,SICP)

总感觉这本书充满着哲学意味,窥探一门计算机编程语言的设计哲学与内在逻辑。

本书使用的编程语言为 Lisp。

# 1 构造过程抽象

# 1.1 程序设计的基本元素

  • 基本表达式:最基本的语法,例如 1 + 1
  • 组合的方法:把基本表达式组合起来,最终组合出来的还是元素
  • 抽象的方法:为复合对象命名,将他们当做单元去操作,当然应该还有高级编程语言中的面向对象

基本的表达式(一个数、运算例如 + * ):

349
1

复合表达式(组合式):

(+ 1 2 3 4 5)
1

命名和环境,命名计算对象,称为变量:

(define size 2)
(* 5 size)
1
2

组合式的求值:

  • 求值组合式的各个子表达式
  • 将作为最左子表达式(运算符)的值的那个过程应用于相应的实际参数,所谓的实际参数也就是其他子表达式(运算对象)的值

对下列表达式求值:

(* (+ 2 (* 4 6))
   (+ 3 5 7))
1
2