构造过程抽象
我们准备学习的是有关计算过程的知识。计算过程是存在于计算机里的一类抽象事务,在其演化进程中,这些过程会去操作一些被称为数据的抽象事务。人们创建出一些称为程序的规格模型,以指导这类过程的进行。程序是用一些诡秘而深奥的程序设计语言,通过符号表达式的形式精心编排而成,它们描述了我们希望相应的计算过程去完成工作。
软件工程达式们能组织好自己的程序,使自己能合理地确信这些程序所产生的计算过程将能完成预期的工作。设计良好的计算系统就像设计零号的汽车或核反应堆一样,具有某种模块化的设计,其中的各个部分都可以独立的构造、替换、排除错误。
程序设计的基本元素
一个强有力的程序设计语言,不仅是一种指挥计算机执行任务的方式,它还应该称为一种框架,使我们能够在其中组织自己有关计算过程的思想。这样,当我们描述一个语言时,就需要将注意力特别放在这一语言所提供的,能够将简单的认知组合起来,形成更复杂认知的方法方面。每一种强有力的语言都为此提供了三种机制:
- 基本表达形式,用于表示语言所关心的最简单的个体。
- 组合的方法,通过它们可以从较简单的东西出发构造出复杂的元素。
- 抽象的方法,通过它们可以为复合对象命名,并将它们当作单元去操作。
在程序设计中,我们需要处理两类要素:
- 数据,一种我们希望去操作的东西。
- 过程,有关操作这些数据的规则的描述。
这样,任何强有力的程序设计语言都必须能标书基本的数据和基本的过程,还需要提供对过程和数据进行组合和抽象的方法。
表达式
用键盘输入一个表达式,解释器的响应就是将它对这一表达式的求值结果显示出来。
可以键入的一种基本表达式就是数(更准确地说,键入的是由数字组成的表达式)。可以用表示基本过程的表达形式,将表示数的表达式组合起来,形成符合表达式,一表示求要把有关过程应用于这些数。
组合式,其构成方式就是用一对括号括起一些表达式,形成一个表,明于表示一个过程应用。在表里最左的元素称为运算符,其他元素都称为运算对象。要得到这种组合式的值,采用的方式就是将由运算符所刻画的过程应用于有关的实际参数,而所谓的实际参数就是哪些运算对象的值。
将运算符放在所有运算对象的左边,这种形式称为前缀表示。优点:
- 它完全适用于可能带有任意个实参的过程。
- 可以直接扩充,允许出现组合式嵌套的情况,也就是说,允许组合式的元素本身又是组合式。
即使对于非常复杂的表达是,解释器也总司按同样的基本循环运足:从终端读入一个表达是,对这个表达是求值,而后打印出得到的结果。这种运作模式常常被人们说成是解释器运行在一个读入-求值-打印循环之中。