问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

计算机程序的构造和解释 笔记(一)

发布网友 发布时间:2024-10-01 10:17

我来回答

1个回答

热心网友 时间:2024-10-19 17:49

计算机科学与程序员之间存在紧密联系,即便是最基础的CRUD操作,理解解释器的工作原理也是十分必要的。尽管SICP在当今可能显得有些过时,甚至MIT已经停止教授该课程,但这并不妨碍我们在业余时间对其进行研究。

这本书与《深入理解计算机系统》和《算法导论》一样,是计算机科学入门的经典教材。尽管入门难度较大,但对于像我这样的初学者来说,制作读书笔记显得尤为重要。

在阅读本书之前,需要了解其使用的编程语言——Scheme方言,它属于著名的Lisp语言家族。关于Lisp的特性,可以参考相关资料。

Scheme是Lisp的三大方言之一,由于Lisp的特性,其语言变种众多。

要使用Scheme进行开发,可以下载Racket,它是继承自Scheme的Lisp方言,下载地址如下:

第一章:构造过程抽象

本章主要介绍了如何将最基本的数据和操作组合成复杂的过程,并如何对这些过程进行抽象和命名,以便将它们作为单元操作。这两种能力是所有语言都具备的基本能力。

1.前缀式是Lisp的运算表达式方式,与Java的中缀式不同,也与我们传统的数学学习有所冲突。不过,这两种表达方式可以通过树结构轻松地互相转换。

2.在解释器对组合式进行求值时,可以使用正则序和应用序两种求值方式来得到结果。正则序求值是一种“完全展开后再归约”的求值模型,而应用序求值是一种“先对参数求值后再应用”的求值模型。

3.递归与迭代之间的区别

递归是指计算式通过自我调用将复杂问题无限分解,这种方法可以使用有限的语句表示无限集合。迭代则是一个循环,与普通循环的区别在于,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

以阶乘为例,我们可以用递归和迭代两种方式计算阶乘。递归方式通过不断调用自身来实现,而迭代方式则通过循环实现。

4.使用高阶函数进行抽象

高阶函数指的是将函数作为参数或返回值的函数。在Java 1.8之前,Java开发者只能使用匿名内部类来模拟这一特性。从Java 1.8开始,我们可以使用Java的Lambda表达式,但无论如何,在这一方面,Java都不如Lisp灵活。

在Lisp中,函数是一等公民,我们可以将函数与数据同等处理,进一步提升抽象的层次。例如,我们可以通过将f(x)作为参数传递,使用高阶函数抽象计算过程。

5.Lambda表达式

Lambda表达式是Java和Lisp等语言中的一种匿名函数,可以用来表示只使用一次即可丢弃的方法。

6.“一等公民”

在Lisp、JavaScript等函数式特性较强的方法中,函数被作为一等公民使用。这意味着函数可以作为变量赋值,可以作为其他函数的参数和结果,可以放入数据结构中。这一特性虽然强大,但难以掌握,但带来的能力也是格外强大的。

7.平方根计算及其抽象

本章内容以平方根计算为例,介绍了逐步*近法。在1.17节中,我们使用逐步*近法计算平方根。在本章结尾,我们将平方根问题转换为查找y→y/x的不动点问题,并抽象出一个通用的取不动点方法,这是本章的要点。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上海青假黑斑病防治方法 上海青假黑斑病传播途径和发病条件 上海青细菌性黑斑病症状 治愈人心的早安句子(特别励志的早安心语) 打点滴针孔碰到水后血管发热疼痛是怎么回事 打点滴后一周后,手上的筋还肿痛,怎么办啊 打点滴后手肿了发青怎么回事 打点滴手很痛怎么办 番禺校最好的幼儿园有那几家 我想要弄个性签名档。怎么弄 甲状腺手术后多久才能吃肉 甲状腺良性肿瘤手术后多久可以吃东西 ps2假面骑士甲斗模拟器高速流畅配置 甲状腺癌手术后要休息多久 ps2模拟器怎么用 要玩假面骑士555 为什么玩PS2的假面骑士游戏那么卡? 学习通作业未交和60分哪个影响大 宝骏730的发动机在什么位置? 请问大家,宝骏730 16款前面引擎盖打开有点困难,特别 狼人杀身份大全 狼人杀中女巫与药剂师有区别吗?药剂师是女巫的别称? 狼人杀中女巫与药剂师有区别吗?药剂师是女巫的别称?? 如何评价《马大帅》电视剧中女主-马小翠? 马大帅3评价 ...液晶仪表盘和275c主机,苹果的CarPlay支持高德地图投射吗? 视力什么时候定型 近视多少岁定型 到什么年龄,近视患者的视力就定型了不会下降了? 眼睛定型的年龄 显卡有HDMI接口主板没有能看高清吗? 用竖式计算. 79×48= 144÷8= 90×35= 315÷4 有女的在网上加到你,叫你去找她玩,彼此都没见过面的 315÷52的竖式? 在网上认识一个中年妇女她来我这里出差顺便见过一次面大家都很聊得来... 刚认识没几天的一个网友,连面都没见过,她突然邀请我去参加她的一个活 ... ...她说叫我去看她,她的照片我也没见过,只是偶尔发几句语音, 小米指纹解锁动画怎么关闭 J55石油套管概述 J55石油套管的进口标准和国产规定有哪些差异? N80石油套管概述 P110石油套管简介 L80石油套管详细介绍 K55石油管概述 ...库?数据库系统都包括什么?数据库系统有哪些特点? 2005年出生的人多久满19岁? 电信网卡为什么上网那么慢? 我刚买了个天翼的无线网卡,但联网后发现好卡,网页都打不开,怎么办? 孩子多大应该跟家长分床睡 285 孩子分床晚的危害 男孩和妈妈分床睡的最佳年龄