最近一个月, 不管看没看懂, 将SICP全文看了一遍, 大致理解了作者到底要讲写什么东西,处理什么问题。
本人推荐3次读书法。
第一次 不管看不看得懂 将全文全部看一遍, 看不懂的地方,标记什么看不懂。 了解整本书的结构, 每一章主要讲写什么东西, 面对什么问题。
第二次 事无巨细, 全部动手做一次, 务求完全理解。
第三次 用自己的语言,分析总结书中的内容, 尽量转化为自己的东西
很多人, 一看书, 前面几章觉得很难, 后面就坚持不下去了。 这其实是自己最大的损失。任何一本书, 不管难易, 他要面对什么问题, 用了什么技术,
你总归是能看明白的。 由于当前的技术能力, 的确有很多技术的实现很难理解。但这不代表以后就不能看懂。先不管3721,做个笔记, 给大脑做个镜像,
总归未来面对某个问题会想起来。
接下来, 就是做SICP的习题了, 这个就离不开开发环境了。
先是下载了MIT的开发环境, http://www.gnu.org/software/mit-scheme/
用了一下,发现真不是一般的难用。
关键命令: Ctrl + x c 退出编辑模式,进入命令行交互模式
(cd "D:\\path") 进入自己的目录
(load "xxx.lisp") 加载自己的程序
没有办法, 又下载了lispbox, 使用emacs写代码。
http://common-lisp.net/project/lispbox/
本来以为, 两个语言应该差不多, 结果第一次代码就崩溃了。
(define a 3)
CL下报错, 让我莫名惊诧。 只能先放弃用CL直接做题。
另外, 补充一点, SICP绝对不是学习lisp语言的好书。
这本书, 只讲了思想, 关于工程相关核心的细节讲得一点都不具体。
比如, 变量是否区分大小写, 由哪些符号构成, 有哪些内嵌函数。变量的生命周期等, 如何处理I/O, 如何Debug。
更关键的, 如何用lisp做实际项目, 编程规范, 单体测试, 集成测试等等。
看这本书之前, 推荐大家看看Scheme手册
http://deathking.github.io/yast-cn/chapter1.html
然后看看 The Little Schemer
这样,看SICP就会少很多弯路。我是看了Scheme手册, 才发现作者第4章犯规了, 用了Scheme的词法分析来写Scheme解释器。
这个, 你要是用来写Java解释器, 很多工作还是要从头做。