最近刚好把SICP看完,在学习的过程中发现有些资源找起来有点费时间,于是我想把他们收集起来,方便其他人。涉及到的引用部分都会带上作者和链接,尊敬的作者如果您有异议,请私信或者评论,我会将其删除。(注:需要科学上网的地方我会标记为外网)
一、 环境的配置
1. 背景:
本来我是下载的MIT Scheme的,安装后无法正常打开,在外网Stack Overflow上的解决方法也都尝试,但是内存分配总是出错。我当前的操作系统是64位Window 10。况且,这个软件的更新还停留在2003年,最新支持也只到Windows 7。于是转而寻找替代方案。
2. 替代方案:
DrRacket对于Scheme也有很好的支持,之前叫做DrScheme。搜索下载,安装,一气呵成。(下载地址:https://download.racket-lang.org/ )软件安装好之后,还需要添加@周彦尚大佬提到还需要SICP package。安装步骤在网站上有,下载时记得挂上外网就行。(安装步骤:https://docs.racket-lang.org/sicp-manual/ 中的Installation)中文界面在菜单栏的help里。安装完成后,在定义那一栏加上
”#lang sicp” 即可运行书本上的程序。
\3. 详细的安装步骤可以看我的另一篇文章DrRacket 的安装与 SICP 的配置。
二 、源代码
1. 使用源代码一来可以避免一下机械地操作,快速的打理好定义,特别在书本后面的求值器和编译器部分。二来对于课本中的特殊函数也可以马上定位,复制+ctrl F。源代码在书籍官网可以下载(地址:https://mitpress.mit.edu/sicp/ 中的Code from the book)
2. 对于一些需要导入整个文件来说,使用函数load会出错,网友Louis Christopher的博客中提到使用函数Require可解决。使用示例:
(#%require “需要导入的文件”)。(原文链接:https://louischristopher.me/setting-up-drracket-for-sicp )另一个方法是是将预处理器改成#lang racket/load。
三、 视频
1. 视频可以加深对于书本内容的理解,学生的提问也让人很有启发。谢谢@DeathKing(不知道他在知乎是否是这个昵称)大佬的中文化项目:https://github.com/DeathKing/Learning-SICP/ 。视频从《1A: Overview and Introduction to Lisp》开始到《10B: Storage Allocation and Garbage Collection》,从8B开始的内容就去油管看吧。
四 、答案
答案可以用来检验自己对于知识的掌握程度。huangz1990大神做了一个SICP的解题集。(链接:http://sicp.readthedocs.io/en/latest/ )英文版的答案在scheme wiki里有。(SICP-Solution:
http://community.schemewiki.org/?SICP-Solutions )里面的函数点击后可以直达相应的官方文档。
五、 电子书
在书籍官网可以找到(链接:https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start )。B站用户不稳固的支点提示,还有HTML版本。(链接:https://sarabander.github.io/sicp/html/index.xhtml#SEC_Contents )
六 、Scheme
《Yet Another Scheme Tutorial》是一本Scheme入门教程,由大神Death King翻译了放在网上(链接:http://deathking.github.io/yast-cn/ )
感谢大佬们的默默付出,SICP的学习之路才能畅通无阻。当然,谢谢@萧井陌的《编程入门指南 v1.5》。SICP简直是把编程的过程剖析得细致入微,就像书中引用的约翰尼斯·开普勒所说的一样,“我的目的是想说明,这一天空机器并不是一种天赐造物或者生命体,它不过是钟表一类的机械装置(而那些相信钟表有灵魂的人却将这一工作说成是其创造者的荣耀),在很大程度上,这里多种多样的运动都是由最简单的物质力量产生的,就像钟表里所有活动都是一个发条产生的一样“。