什么是计算模型?
人们普遍观察到,某些计算机架构课程和编程语言课程之间存在对应关系。例如,冯·诺依曼架构和命令式语言,或者约简架构和函数式语言。相应的架构和语言类别必须具有共同的基础或范式,称为计算模型。
计算模型包含以下三个抽象集,如图所示:
第一个抽象识别**计算的基本要素**。这是对计算所涉及的任何类型计算的项目规范。
例如,在冯·诺依曼计算模型中,计算的基本要素是数据。这些数据通常由命名实体表示,以便能够在计算过程中区分多个不同的数据项。这些命名实体在编程语言中通常称为变量,并在架构中由内存或寄存器地址实现。
**问题描述模型**指的是问题描述的风格和方法,如图所示。
**问题描述风格**指定了在特定计算模型中如何描述问题。风格可以是过程式的或声明式的,如图所示。
在**过程式风格**中,陈述了求解问题的算法。然后以算法的形式声明一个特定的解决方案。
如果使用**声明式风格**,则必须陈述与给定问题相关的所有事实和关系。有两种方法可以表达这种关系和事实。第一种方法使用函数,如在应用计算模型中,而第二种方法以谓词的形式陈述关系和事实,如在基于谓词逻辑的计算模型中。
问题描述模型的另一个组成部分是**问题描述方法**。它在过程式和声明式风格中解释不同。当使用过程式风格时,问题描述模型说明了如何描述给定问题的解决方案。
当使用声明式风格时,它指定了如何描述问题本身。例如,在冯·诺依曼计算模型中,问题解决方案被描述为表示适当算法的一系列指令。
**执行模型** - 计算模型的最后一个元素是执行模型。第一个组成部分声明计算的解释,这与问题描述方法密切相关。问题描述方法的选择和计算的解释相互决定并相互假定。
执行模型的下一个组成部分指定执行语义。这可以解释为规定如何执行单个执行步骤的规则。
基本计算模型应用的不同类型的执行语义如图所示。状态转换语义用于图灵机、冯·诺依曼和基于对象的模型,数据流语义用于相应的数据流模型,约简语义用于应用模型,SLD-resolution 用于基于谓词逻辑的计算模型。
模型的最后一个组成部分指定**执行序列的控制**。在基本模型中,执行是控制驱动的、数据驱动的或需求驱动的。
**控制驱动执行** - 假设存在一个由一系列指令组成的程序。然后,执行序列由指令的顺序隐式给出。
**数据驱动执行** - 其特点是当所有需要的输入数据可用时,操作就被激活。这种序列模型也称为积极求值。
**需求驱动执行** - 在需求驱动执行中,只有当操作的执行对于实现最终结果是必需时,才激活该操作。这种执行控制模式也称为惰性求值,因为它应用了延迟直到需要的理念。