《计算机程序的构造和解释》笔记 01 - 构造过程抽象

 这本神作,目前看完了第 1 章,习题还没来得及做。名不虚传啊,很多真知灼见的金句,还有很多思想都是醍醐灌顶的。第一章里主要是讲了 Lisp 语言的一些基础性的概念,以及程序开发中的基本思想。书里用到不少数学的思想,高中数学扎实,理解起来就相对轻松一些。第 1、2、3 小节,层层深入。现在回过头来看第 1 章的标题,“构造过程抽象”,才明白他说的是什么。 

序、前言

Pascal 为了建造金字塔——壮丽辉煌、令人震撼,是由各就其位的沉重巨石筑起的静态结构。而 Lisp 则是为了建造有机体——同样地壮丽辉煌并令人震撼,由各就其位却永不静止的无数简单的有机体片段构成的动态结构。

一个计算机语言并不仅仅是让计算机去执行操作的一种方式,更重要的,它是一种表述有关方法学的思想的新颖的形式化媒介。

计算机革命是有关我们如何去思考的方式,以及我们如何去表达自己的思想的一个革命。

数学为精确处理“是什么”提供了一种框架,而计算则为精确处理“怎么做”的概念提供了一种框架。

第 1 章 构造过程抽象

  • 计算过程
    • 这是基本概念,也是本章的主题。可以理解为一段计算机操作指令,一组规则组合,一个函数,一个程序语言描述的算法……

1.1 程序设计的基本元素

  • 前缀表示的组合式表达式。
  • 使用 define 关键字定义变量与过程(函数)。其中定义一个过程,成为生成一个复合过程。
  • 计算组合式表达式可以是递归的计算过程或者是树形积累的计算过程。
  • 复合过程在其他过程中的引用于计算,称为代换模型。
  • 关键字 cond 与 if 可以构造条件表达式。and、or、not 关键字可用于谓词计算。

1.2 过程与它们所产生的计算

  • 递归计算过程与迭代计算过程。需要注意的是,有些过程是使用递归过程来描述的,而他对应的计算过程却可能是一个迭代计算过程。(P23)
  • 树形递归。
  • 增长的阶。我们称 R(n) 具有 θ(f(n)) 的增长阶,记为 R(n)=θ(f(n))(读作 f(n) 的 theta)。这个其实对应算法里的时间、空间复杂度。

1.3 用高阶函数做抽象

  • 高阶过程,我们需要构造出这样的过程,它们以过程作为参数,或者以过程作为返回值。
  • 公共的基础模式,由此可以先构造出一个过程,作为模板,然后从参数传入具体的特异化的过程,来应用在这个公共基础模式上。(P39)
  • lambda 方法。一般而言,除了不为有关过程提供名字,lambda 与 define 使用同样的方式构造过程。
  • let 关键字的使用方法比 lambda 更进一步,可以在不带名字的过程中定义局部变量。
  • 过程作为返回值,一个过程(函数)接受一个参数过程 f,把他应用于过程内部的另一个由 lambda 产生的过程,并返回这个由 lambda 产生的过程,然后返回的这个过程马上就可以应用于参数 x。真是十分的绕,可以结合下面的例子来理解:
; 返回一个过程的一个过程定义:
(define (average-damp f)
    (lambda (x) (average x (f x)))

; 该过程的应用。求 10 与 100 的平均数,结果为 55:
((average-dump square) 10)

廖杰良 - 2019-03-03

已标记关键词 清除标记
内容简介 《计算机程序构造解释》(原书第2版)1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,《计算机程序构造解释》(原书第2版)对于计算机科学的教育计划产生了深刻的影响。第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。 《计算机程序构造解释》(原书第2版)自出版以来,世界各地已有100多所院校采用《计算机程序构造解释》(原书第2版)做教材,其中包括美国斯坦福大学、美国普林斯顿大学、英国牛津大学、日本东京大学等。 这一版本中强调了几个新问题,其中最重要的是有关的不同的途径中,计算模型里对于时间的处理所起的中心作用:带有状态的对象、并发程序设计、函数式程序设计、惰性求值和非确定性程序设计。这里为并发和非确定性新增加了几节,我们也设法将这一论题集成到整本书里,贯穿始终。每一位严肃的计算机科学家都应该阅读这本书。由于本书清晰、简洁和富于才智,我们强烈推荐本书,它适合所有希望深刻理解计算机科学的人们。 作者简介 Harold Abelson是MIT1992年度MacVicarFacultyFellow。Gerald JaySussman是Matsushita电子工程教授。他们都在MIT电子工程和计算机科学系工作.都得到过最重要的计算机科学教育奖:如Abelson得到了IEEE计算机学会的Booth奖。Sussman得到了ACM的Karlstrom奖。Julie Sussman是作家和编辑,同时使用自然语言和计算机语言写作。
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页