1.5 数字计算机的通用性
第5节的英文标题是“Universality of Digital Computers”。这里“Universality”如何翻译呢?有几种候选的译法:万能性、全能性、通用性、一般性、普适性。我们经过斟酌,发现用“通用性”可能较为准确。
数字计算机的通用性,重点在于强调“通用性”,与“存储程序”的思想有关。
为什么不翻译为“一般性”呢?因为,数字计算机毕竟是一种具体的离散状态机。
为什么不翻译为“万能性”呢?“万能”本身含义模糊,有时表达“全能”的含义。但是,数字计算机不是全能的(这是很重要的结论)。
为什么不翻译为“普适性”呢?这个容易导致歧义,不宜理解为现在人们常说的“普适计算”中的“普适”。普适计算(Ubiquitous Computing,Pervasive Computing),又称普存计算、普及计算、遍布式计算、泛在计算,是一个强调和环境融为一体的计算概念,而计算机本身则从人们的视线里消失。在普适计算的模式下,人们能够在任何时间、任何地点、以任何方式进行信息的获取与处理。
上一节考虑的数字计算机可以被归类为“离散状态机”(Discrete State Machine),这类机器可以从一个明确的状态通过突然的跳变或点击移动到另一个明确的状态。状态之间有足够的差别,以至于可以忽略混淆这些状态的可能。严格地说,这样的机器是不存在的。一切物体实际上都是连续移动的。但是有许多种机器能够有益地被看作离散状态机。例如在照明系统中的开关,为了简便,我们可以假想把开关看成只有开和关两个状态。它们之间肯定有中间状态,但是在绝大多数情况下可以忽略它们。作为离散状态机的例子,我们可以考虑一个每秒旋转120度的轮子,这个轮子可能因一个可以从外部操纵的杠杆的阻挡而停下来,在轮子上某个位置有一个发光的灯。这个机器可以被抽象地描述为下面的形式。机器的内部状态(通过轮子的位置来描述)可以是q1、q2或q3。输入信号是i0或i1(杠杆的位置)。任何时候的内部状态可以根据上一状态和输入信号由下表确定:
本书第7章关于虚拟化的论文中也提到离散状态机。
我们看过数学家华罗庚关于高等数学的一段宝贵的教学录像,他说“离散与连续”是高等数学特别是微积分要研究的一对基本矛盾。微积分开篇要讲的内容是“极限”,讲“无穷小”这个概念。有了无穷小,就可以把连续和离散统一或者互相转化。华老在那次报告中,提到数与形、离散与连续、抽象与具体、能行性与存在性、必然性与可能性、理论与应用一共六对辩证统一的关系。由此可见数学与哲学存在联系。毛主席在《矛盾论》中引用恩格斯的话“高等数学的主要基础之一,就是矛盾……”“就是初等数学,也充满着矛盾……”。我们需要克服反哲学或忽视哲学的倾向,这样会促进工作,使得我们对相关问题的认识更加深入。哲学不是点缀品,也不是捣乱的空谈,哲学具有具体科学不可替代的加深认识的作用。
上面这段话中提到的轮子上为什么要有一个发光的灯呢?灯是作为参照物。没有灯的轮子是一个中心对称图形,有了灯的轮子就不再是中心对称图形。
输出信号可以用下表描述,它是唯一能够被外部观测的内部状态指示器(指示灯)。
这个例子是一个典型的离散状态机。只要离散状态机的可能状态是有限的,离散状态机就可以用这样的表格描述。
可以看出,只要给出初始状态和输入信号,所有的未来状态都是可以预测的,这让我们想起了拉普拉斯(Laplace)的观点,那就是,从由所有粒子的位置和速度所描述的某一时刻宇宙的完整状态,就能够预测所有的未来状态。但是,我们考虑的预测与拉普拉斯相比更接近实用性。“宇宙作为一个整体”的系统,使得初始条件中的一个非常小的误差,可以在稍后的时间引起系统产生巨大的效应。某个时刻一个电子在位置上亿万分之一厘米的偏移,将决定一个人会在雪崩中死去还是逃脱。我们称为“离散状态机”的机械系统的一个基本特性是,这样的现象不会发生。即使是考虑实际的物理机器而不是理想机器,只要相当准确地知道了某个时刻状态,就可以相当准确地知道任意数量步骤之后的状态。
艾伦·图灵提到了经典物理学中的确定论(Determinism)观点。拉普拉斯(Laplace,1749~1827)是法国分析学家、概率论学家和物理学家。1816年被选为法兰西学院院士,1817年任该院院长,著作有《天体力学》《宇宙系统论》等,发明有“拉普拉斯变换”。他是确定论的支持者,1814年提出科学假设:如果一个智能生物能确定从最大天体到最轻原子的运动的现时状态,那这个智能生物就能按照力学规律推算出整个宇宙的过去状态和未来状态。后人把他所假定的智能生物称为拉普拉斯妖。
正如我们所提到的,数字计算机属于离散状态机。但是这样的机器所能够达到的状态通常是相当大的。例如,现在在曼彻斯特工作的机器可以有2165000个状态,也就是大约1050000个状态。而我们上面描述的轮子仅有三个状态。找到有如此多状态的原因并不困难,计算机具有一个对应于人类计算员的纸存储器。任何能够写入人类计算员所用纸上的符号的组合,都应该能够被写入存储器中。为简单起见,假设仅仅用从0到9的数字作为符号,且忽略手写体的差别。假如计算机具有100张每张50行每行30个数字的存储空间,那么状态的数量就是10100×50×30,即10150000,这大约是三个曼彻斯特机组成的整体的状态的数量。状态数量的底数为2的对数通常被称为机器的“存储容量”(Storage Capacity),因此曼彻斯特机的存储容量是约165 000,而我们例子中轮子的存储容量是约1.6。如果两个机器组成整体,合成的机器的存储容量应该是原来各自的存储容量之和。因此我们可以说“曼彻斯特机具有64个磁带存储器(每个容量是2560),还有8个真空管(每个容量为1280)。杂项(Miscellaneous)存储器的容量大约为300,总共的存储容量大约是174 380。”
英文原文有一句话有两个拼写错误,可能是编辑排版时导致的。
For instance, the number for the machine now working at Manchester it about 2165,000, i.e.about 1050,000.
上句中it应为is,2165,000,的第2个逗号应在下方,全句修改后为:For instance, the number for the machine now working at Manchester is about 2165,000, i.e.about 1050,000.
210等于1024,大约等于103,这是二进制数与十进制数换算时经常用到的关系。
注意艾伦·图灵关于存储容量的定义:
设机器可以具有的状态数量为N,存储容量为n,则有关系式:
log2N=n
或者说
N=2n
为什么“有指示灯的轮子”的存储容量约为1.6?
“有指示灯的轮子”有三种可能的状态,即N=3,所以,n=log23≈1.6。
如何体现“如果两个机器合并在一起,它们的存储容量应该是原来各自的存储容量之和”?
设机器1可以具有的状态数量为N1,存储容量为n1;机器2可以具有的状态数量为N2,存储容量为n2。
两个机器融合在一起之后,状态数量为N1×N2,
log2(N1×N2)=log2N1+log2N2=n1+n2
上式体现了“如果两个机器融合在一起,它们的存储容量应该是原来各自的存储容量之和”,也是为什么要将n而不是N定义为存储容量。
如果将N定义为存储容量,会导致出现“如果两个机器融合在一起,它们的存储容量是原来各自的存储容量之积”的现象。
机器的存储容量大,意味着机器的可能的状态数量很大。
存储容量、自由度,与智能水平的高低密切相关。
根据机械原理,机构具有确定运动时所必须给定的独立运动参数的数目(即为了使机构的位置得以确定,必须给定的独立的广义坐标的数目),称为机构自由度。
上一段中,曼彻斯特机的存储容量为174 380,是如何算出来的?曼彻斯特机分三个部分,第一部分是64个磁带存储器,每个容量是2560;第二部分是8个真空管,每个容量为1280;第三部分是杂项存储器,容量为300。所以2560×64+1280×8+300=174 380。
只要给出对应于离散状态机的表格,就能够预测出机器将会做什么。没有理由这样的计算不能通过数字计算机来完成。只要运行足够快,数字计算机就能够模拟任何离散状态机的行为。这样,模仿游戏就可以在所谈论的机器(B)和进行模仿的数字计算机(A)之间进行,而提问者将不能区分它们。当然,数字计算机除了运行足够快,还必须有足够的存储空间,而且在模仿不同的机器之前必须被重新编程。
这里对进行模仿任务的数字计算机提出了三点要求,一是运行足够快,二是有足够的存储空间,三是在模仿不同的机器之前必须被重新编程。
数字计算机可以模拟任意离散状态机的特殊性质被描述为数字计算机是通用(universal)机器。存在具有这样性质的机器带来的一个重要结果就是,若不考虑速度,就没有必要设计出不同的新机器来执行不同的计算过程,它们都可以用一个根据每一种情况适当地被编程的数字计算机来实现。由此可见,所有的数字计算机在某种意义上是等价的。
所有的数字计算机在考虑功能而不考虑性能的意义上都是等价的。
我们现在可以重新考虑在第3节末尾提出的问题。建议暂时把问题“机器能思考吗”用“是否存在可想象的数字计算机在模仿游戏中表现良好”代替,如果愿意,我们可以让这一问题在表面上更一般化,问“是否存在表现良好的离散状态机”。但是从通用性的角度,我们可以看出这两个问题都等价于“让我们把注意力集中在一个特定的数字计算机C上。如果我们可以让其具有足够大的存储空间,足够快的计算速度,而且对它进行适当的编程,C扮演角色A,人扮演角色B,C能不能在模仿游戏中表现良好?”
从上面可以看出艾伦·图灵对智能采取的是行为主义的观点。