程序原本(四):计算系统——数,以及对数据的性质的思考(我们要操作的数据是什么?)

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

程序原本(四):计算系统——数,以及对数据的性质的思考(我们要操作的数据是什么?)

数据(data),并不是数,而是数的系列。数学概念上的布尔数,是纯粹抽象的,可以是黑白点,也可以是正反面;电子学概念中的布尔数,是逻辑门电路中的高低电平信号。而数据,其内聚的特性表明它由一系列存有相互关系的数构成,其外延的特性表明它可以与其他数的系列建立新的抽象关系。

这里的“系列”,只是对数据的构成元素(例如多个二进制位)之间存在着的关系的一个简单称谓。这种关系是什么呢?例如,我们说“A”字符是一个数据,即是说它是由“1000001”这七个二进制数形成的组合关系。这个组合关系是强约束的,如果换一个组合,则不是“A”字符而是别的字符了。再例如,我们既然说“A”是“1000001”的组合关系,则同时也是说“B”必然是“A”的组合关系的一个外延。但这样的外延存在多种可能性,对于这两个字符以及由此构成的数的系列这一概念来说,其数学描述方式为:

B=f(A)

我们知道,在“ASCII 字符集”这个系统中,f() 所表示的外延关系是inc()4,即B = A+1。而在另外的某个系统(例如密码卡)中,f() 则可能是另外的一个函数。数,与数据之间存有的不确定的函数映射关系,是我在前文中用“数的系列”,而非“数的序列”的真实原因。

4 在 Pascal 语言中的一个常用函数,意为 increase(),递增 1。

我们所面临的硬件系统以及其背后的逻辑基础,都是基于数的概念;而我们的软件系统,例如我们使用某种开发工具、语言,或者操作某个设备的指令集,都是基于数据的概念。因此在软件开发(而非计算机研制)中,第一个要明确的问题是:

我们要操作的数据是什么?

评论

发布