程序原本(十五):计算系统——抽象(“函数式”计算范式的核心,正好是消除这个“=”号)

阅读数:31 2019 年 9 月 28 日 17:51

程序原本(十五):计算系统——抽象(“函数式”计算范式的核心,正好是消除这个“=”号)

然而我们知道,“将数置于存储单元”这样的事情并不是计算所必须的——它只是“计算结果的表示法”。因此我们将这个部分从代码:

复制代码
var aNum = 0

中抽去。则运算部分可以表示为:

复制代码
= 0

这个“运算部分”——作为整体来理解——的具体内容有两种可能:对于计算来说,表明“数0”的方法,就是一个0,或将之表示为一个运算 f() 的结果。设 fequ0来标识——既然“运算部分”整体可以理解为一个标识,那么我们也可以换一个标识来表示这个抽象:

复制代码
function equ0()
{ return 0
}

既然上述equ0是一个计算过程,那我们可能通过有限的步骤来完成这一计算2。亦即是说,equ0仅仅关注该标识与其含义的确切关系,其具体指代为return 0,或者是某个耗时有限的计算过程,但并不是这个抽象本身所关注的。

2 这里是无限可能的计算过程,但就顺序机器计算的必要性来说,适用的过程都必然是有限步骤的。

现在,我们提出最后一个推论。既然equ0可以指代任意有限的计算步骤,那么它必等价于图灵机的“顺序逻辑”中所有步骤;既然equ0可以指代图灵机所有的顺序步骤,则必然能指代顺序步骤的两种特例:分支与循环;既然equ0既可以指代计算的要素“数”,又可以指代计算的要素“算”,还可以指代描述正确计算所必须的逻辑,那么equ0本身——在概念抽象上——必然等同于一个完整的计算系统。

这就是“函数式”计算范式的基本抽象。

评论

发布