程序原本(七):计算系统——数,以及对数据的性质的思考(对数据与行为加以标识,是一个系统“可计算”的基本条件)

阅读数:30 2019 年 9 月 28 日 17:27

程序原本(七):计算系统——数,以及对数据的性质的思考(对数据与行为加以标识,是一个系统“可计算”的基本条件)

首先,我们需要一个标识符系统来“标识”所有我们要操作的数据(例如值与引用),以及这些数据的操作方法(例如运算符)。现实是:任何一个不被显式地或隐式地标识的数据,都不可能参与运算过程;任何一个不被标识的行为,都不可能在系统中执行操作6

6 关于这一点是如何确立的,是我们在“第 4 章 语言”中一切讨论的起始。

继续思考这些标识对我们而言是相当有意义的。例如说,我们用aNum标识了一个数据,请问这个数据是指 0 呢,还是指 1?或者我们再设问,即使我们用aNum标识了数据 1,请问这个数据现在究竟是 0,还是 1 呢?

上面这两个问题看来是文字游戏,但确实是计算机语言和编程中最核心的一些设问。其一,它涉及一个标识是否有其存在价值的问题。亦即是说,数据(包括其操作方法,亦作为数据)是否明确地作为该标识所表明的——内容,亦即数据,亦或者更明确地表述为计算机术语的“值”的——意义而存在7。以第一个问题为例,它表明:

7 这里说到“值”,是将数据标识的含义,与该含义的内容——一些具体的性质分开。例如说我们谈到“树”这个名词(或作英文的 tree 这个单词),则标识一个自然中存在的事物,但树的内容——例如高度、树龄等这些“值”并没有被叙述。而确定性,便是指“树”这个标识是否包含了这些“值”的一个确定描述。

复制代码
aNum

这样的声明仅只是标识了该数据,但不存有值;而当我们使用下面的代码来声明时:

复制代码
aNum = 0

才表明了这个aNum是存有值的。

其二,它涉及计算环境如何认识上述值的问题。我们继续以上述问题为例,上面的声明并不表明这个值是否存有变化的可能。因此下面的代码声明:

复制代码
var aNum = 0

表明aNum是可能变成 1(以及其他的任何数值);而以代码:

复制代码
const aNum = 0

来声明时,就表明aNum是确定的,不可能变更为 1 或其他值。

也就是说,程序中有所谓的变量或常量之分,正是计算环境设问数据“确定与否”的种种侧象。

评论

发布