笔记《计算机程序构造和解释(SICP)》--构造过程抽象

构造过程抽象

John Locke--有关人类理解的随笔:

心智的活动,除了尽力产生各种简单的认识之外。主要表现有如下三个方面:

1)将若干简单认识组合为一个复合认识,由此产生出各种复杂认识

2)将两个认识放在一起对照。不管它们如何简单或者复杂,在这样做时并不将它们合而为一。

由此得到有关它们的相互关系认识

3)将有关认识与那些在实际中和它们同在的所有其他认识隔离开,这就是抽象。

所有具有普遍性的认识都是这样得到的

计算过程是存在与计算机里的一类抽象事物,在其演化进程中,这些过程会去操作一些被称为数据的抽象事物

计算过程的Lisp描述(称为过程)本身又可以作为Lisp的数据来表示和操作;这一事实的重要性在于,现存强大的程序设计技术,都依赖于填平在“被动的”数据和“主动的”过程之间的传统划分。

一、程序设计的基本元素

强有力的程序设计语言,不仅仅是一种指挥计算机执行任务的方式,它还应成为一种框架,是我们都能在其中组织自己有关计算过程的思想。

在关注一门语言时,我们应将注意力放在能够将简单的认识组合起来形成更复杂认识的方法方面。

每一种强有力的语言都应有三种机制:

  • 基本表达形式,用于表示语言所关心的最简单的个体
  • 组合的方法,通过它们可以从较简单的东西出发构造出复合的元素
  • 抽象的方法,通过它们可以为复合对象命名,并将它们作为单元去操作

程序设计中,需要处理两类元素(二者无严格分离,非形式地描述定义):

  • 数据,一种我们希望去操作的“东西”
  • 过程,有关操作这些数据的规则的描述

任何强有力的程序设计语言都必须能表述基本的数据和基本的过程,还需要提供对过程和数据进行组合和抽象的方法。

强有力程序设计语言里会包含以下集中元素:

  • 数和算术运算是基本的数据和过程
  • 组合式的嵌套提供了一种组织起多个操作的方法
  • 定义是一种受限的抽象手段,它为名字关联相应的值

基本表达形式:表达式、命名和环境、组合式求值、复合过程、过程应用的代换模型、条件表达式和谓词

posted @ 2020-05-22 12:29  Ethan—Anro  阅读(98)  评论(0)    收藏  举报