学习SICP(《计算机程序的构造和解释》)的一些准备工作

最近刚好把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简直是把编程的过程剖析得细致入微,就像书中引用的约翰尼斯·开普勒所说的一样,“我的目的是想说明,这一天空机器并不是一种天赐造物或者生命体,它不过是钟表一类的机械装置(而那些相信钟表有灵魂的人却将这一工作说成是其创造者的荣耀),在很大程度上,这里多种多样的运动都是由最简单的物质力量产生的,就像钟表里所有活动都是一个发条产生的一样“。

尾注:题图来自MIT官网https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《计算机程序构造解释》是一本经典的计算机科学教材,它由Harold Abelson和Gerald Jay Sussman创作,已经成为计算机科学领域的里程碑之一。该教材于1979年首次出版,最新版是第二版。 该书的主要内容包括两个方面:计算机程序构造解释。首先,它详细解释计算机程序构造,强调了程序的基本要素和组织原则。这可以帮助读者理解如何使用编程语言和工具构建高效和可靠的计算机程序。书中还介绍了一些常见的编程范式和设计模式,如函数式编程和面向对象编程,使读者能够选择适合自己项目的最佳方法。 其次,该书解释计算机程序解释过程。它介绍了一种称为Lisp的编程语言,这是一种函数式编程语言,非常适合表达和解释复杂的计算机程序。通过详细讲解Lisp的语法和语义,读者可以深入了解程序如何被计算机解释和执行。这对于理解计算机底层工作原理和实现高性能程序非常有帮助。 《计算机程序构造解释》被广泛认为是计算机科学入门的必读教材。它不仅适合计算机科学专业的学生学习,也适合对计算机程序有兴趣的非专业读者。该书的内容深入浅出,兼具理论和实践,读者可以通过阅读本书并进行相应的练习来提高他们的编程能力和计算机科学理解。 总之,《计算机程序构造解释》是一本经典的计算机科学教材,它介绍了计算机程序构造解释两个重要方面。通过学习本书,读者可以掌握构建高效和可靠程序的技巧,并深入理解计算机程序的执行过程。这本书对于计算机科学专业学生以及对计算机程序感兴趣的非专业读者都是极其有价值的。 ### 回答2: 《计算机程序构造解释》(简称SICP)是一本经典的计算机科学教材,该书由麻省理工学院的编程语言专家哈罗德·艾布尔森(Harold Abelson)和吉拉迪·塞斯曼(Gerald Jay Sussman)共同编写。它在计算机科学领域具有重要的地位和影响力。 该书的主要内容围绕着计算机程序构造解释展开。它从一个通用的编程语言(Scheme)出发,通过讲解计算机程序的抽象、过程和数据的重要概念,帮助读者建立起正确的思维模式和编程方法。 SICP通过一系列的例子和习题,引导读者通过编程实践来加深对计算机程序的理解。它强调程序设计的原理、模块化、抽象和递归等重要思想,通过一步步的讲解和示例,帮助读者培养出优雅和高效的编程风格。 SICP的目标是让读者真正理解计算机程序的本质,并学会如何用一种简单而强大的编程语言来构建复杂的软件系统。它不仅仅是一本教科书,更是一部引导读者探索计算机科学本质的指南。 总的来说,《计算机程序构造解释》是一本重要的计算机科学经典教材,它的初版已经出版超过30年,至今仍然是计算机科学教育领域的重要参考书之一。阅读该书可以帮助读者真正理解计算机程序的本质和设计原则,提升编程能力和思维方式。 ### 回答3: 《计算机程序构造解释》(SICP)是一本经典的计算机科学教材,也是学习编程的重要参考书籍。 这本书以文学化的形式介绍了计算机程序是如何构造解释的。它通过简明易懂的语言和丰富的示例,向读者解释了编程语言的设计原则、计算过程的原理以及如何理解和构造复杂的程序。 SICP主要分为五个部分。第一部分介绍了程序设计的基本概念和过程抽象的重要性。第二部分介绍了数据抽象和高阶过程,帮助读者理解程序设计中的重要概念和方法。第三部分讨论了程序设计的不同风格和编程的复杂性。第四部分介绍了元语言解释器的实现,帮助读者理解编程语言的工作原理。第五部分则介绍了一些高级主题,如并发和非确定性计算。 这本书的独特之处在于它不仅仅教授编程语言的具体细节,更重要的是让读者理解程序设计的理念和基本原则。它培养了读者逻辑思维和问题解决能力,帮助他们成为更好的程序员。 对于那些想要深入理解计算机程序构造解释的人来说,这本书是一个不可或缺的工具。它挑战了读者的思维,让他们思考计算机程序的本质和原理。无论是初学者还是有经验的程序员,阅读《计算机程序构造解释》都会有所收获,成为更好的计算机科学家或工程师。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值