SICP读书笔记 1.1
SICP CONCLUSION
让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 !
祝我能够突破层层代码,找到住在里计算机的神灵!
目录
1. 构造过程抽象
2. 构造数据抽象
3. 模块化、对象和状态
4. 元语言抽象
5. 寄存器机器里的计算
Chapter 1
- 构造过程对象
练习答案
程序设计的基本元素
强有力的程序设计语言,不仅是一种指挥计算机执行任务的方式,还应该提供一种框架,使我们能够自己有关计算过程的思想
- 基本表达形式 (过程 or 数据?)
- 组合的方法
- 抽象的方法
1. 表达式
2. 命名和环境(变量)
或许给变量命名就是语言中最小的抽象?
构造一个复杂的程序,就是为了去一步步地创建出越来越复杂的计算性对象
3. 组合式的求值
在环境中,先求解子表达式(一种递归
4. 复合过程
更强大的抽象方法:定义过程
5. 代换模型
一种简单的计算模型,简单的说明了实参代替形参
考虑科学研究或者工程中的现象,一般从最简单的模型开始,随着更细致的考虑问题,应该完善模型更换模型
应用序和正则序:取决于解释器的实现,更深层时应考虑两者的优缺点
6.条件表达式和谓词
7.实例:牛顿法求平方根
函数与过程之间的矛盾,不过是在描述一件事情的特征,与描述如何去做这件事之间的普遍性差异的一个具体反映
看一下书里怎么教我们用牛顿法求平方根
- 描述事情的解决思路:给出猜测,不断改进这个猜测,直到觉得满足
- 直接描述方法和各个部件,不管具体实现,抽象思想
(define (sqrt-iter guess x)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x)
x)))
- 实现各个部件的细节 good-enough? improve
8. 过程作为黑箱抽象
- 将平方根问题自然的分解为若干个子问题
- 猜测足够好?
- 怎么改进?
- 过程抽象:分解过程,使之成为了可以独立工作的模块
- 隐藏一些细节,作为黑箱给其他程序员使用
一些细节
- 局部名、约束变量、作用域
一样的为了更高度的模块化,
- 内部定义和块结构
依旧是为了更高的模块化,屏蔽我内部的所有名称,更高度的黑盒
SICP读书笔记 1.1的更多相关文章
- 【SICP读书笔记(一)】正则序展开的特殊情况
scheme解释器有两种实现方式,一种是应用序,先对每个参数求值,再以首过程对所有求得的参数求值. 第二种是正则序,会“完全展开然后归约”(书中原文) SICP中的练习1.5,让我困惑了一下.原题如下 ...
- SICP读书笔记 3.5
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- SICP读书笔记 3.4
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- SICP读书笔记 3.2
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- SICP读书笔记 3.3
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- SICP读书笔记 3.1
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- SICP读书笔记 2.5
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- SICP读书笔记 2.4
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- SICP读书笔记 2.3
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
随机推荐
- 乘风破浪:LeetCode真题_028_Implement strStr()
乘风破浪:LeetCode真题_028_Implement strStr() 一.前言 这次是字符串匹配问题,找到最开始匹配的位置,并返回. 二.Implement strStr() 2.1 ...
- 2017 SDN第一次作业
(1)我会选择的,因为网络现在越来越重要,各行各业都离不开网络,这个方向可以适合各种岗位,感觉比较容易就业.但选这个课是为了多学一点东西,没想太多,嘎嘎嘎. (2)SDNLAB,是一个SDN的大的中文 ...
- Windows Server 2012上安装.NET Framework 3.5
引用:https://jingyan.baidu.com/article/14bd256e26b714bb6d26128a.html 装不成功后网上搜到很多相同的问题,都尝试过没解决到 用PowerS ...
- 没有插件的sublime编辑器是没有灵魂的
这阵子各种捣鼓,现在趁有空记录一下sublime编辑器的一些实用的插件和安装方法,下午又该继续学习了. 接下来安装的是htmlHint.jsHint.cssLint以及汉化这几种插件,其实插件会使我们 ...
- 在学习前端的路上,立下一个Flag
今天开始百度前端学习,以此为证
- 抽象类、final关键字、多态
1.1 抽象类 1.1.1 抽象类概念 C extends B,B extends A,在继承过程中,形成一个继承金字塔,位于金字塔底部的类越来越具体(强大),位于塔顶的越来越抽象(简单). 例如:人 ...
- ethereumjs/ethereumjs-icap
https://github.com/ethereumjs/ethereumjs-icap ethereumjs-icap 安装: npm install ethereumjs-icap --save ...
- Node.js实战(八)之回调函数
Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都 ...
- 发行版Linux和麒麟操作系统下netperf 网络性能测试
Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求 ...
- WorldWind源码剖析系列:星球表面渲染类WorldSurfaceRenderer
星球表面渲染类WorldSurfaceRenderer描述如何渲染星球类(如地球)表面影像纹理.该类的类图如下. 星球类World包含的主要的字段.属性和方法如下: public const int ...