看SICP有感
Sat ,Apr 18 ,202017年最早是开始读sicp的pdf.看文本的效果比较一般,不太好抓重点,再一个编程的经验比较缺乏.
19年11月份的时候,从b站看到了sicp的视频,看了一遍.
20年4月,再次出发.有感于大型的系统设计,基于此,再次观看sicp,以此博客记录观看过程的思考.
lec1a: Lisp概览
对一门通用语言的学习,需要关注的几个点:
1.基本的元素: +,-,*,/ 数字.
2.组合: conds,if
3.抽象的方式: define
lec2a: 高阶过程
抽象模式。举个简单的例子:
过程1:for(a= i->j) sum(a)
过程2:for(a= i->j) sum(a^2)
for与sum就是共同的模式,即可以被抽象的地方。
编程语言一等公民的权力:
1.可以被变量命名
2.可以被当作过程参数传递。
3.可以被当作过程的返回值。
4.可以被数据结构包含。
lec2b: 复合数据
数据和函数之间本身没有严格的界限。
c = (cons a b)
(car c) = a
(cdr c) = b
可以认为是一个内存的结构体布局。
也可以认为一个闭包函数。