
其实思考一下图灵机的工作原理,是很有意思的。在图灵机模型里,数据和程序是明显地区分开来的。控制读写头的是程序。这个程序是一个有限状态机或者一个规则表,而在纸带上的是数据。需要注意的是,规则表本身和数据,都可以表达为0/1串。与现代计算机相比,图灵机的"内存"就是纸带,而"微处理器"就是读写头。
1. 比特流打破程序与数据的区别
对于现代机器来说程序和数据是没有区别的,都是一个0/1串,所以可以直接比较两者的体积大小。我们日常所见到的大部分数据都比制造它们的程序体积大。例如在python语言中:"for i>0, i<1001, i++, i = 1"这个程序生成一个包含了一千个1的数据。这个数据显然比制造它的程序体积大。其原因是数据里有很强的规律性(全是1),程序利用了这种规律性来描述/生产数据(在计算机世界里,描述即生产),因此及其简便。随着数据的规律性减少而趋近于随机噪音,数据和程序的体积差别也越来越小。我们可以考虑一个极端情况:假设有一个长度一千的真随机数列"1823706...301",因为它没有任何规律性,所以制造它的程序必须逐一描述它每个位置上的元素,即"i=range[1000];
i[1]=1, i[2]=8..., i[1000]=1"。这样写出来的程序,体积甚至比数列本身还要大。
需要注意的是,一个数据往往对应着多个程序。例如"for i>0,
i<1001, i++, i = 1"我们也可以写成"f...