源于17世纪的数字计算探索
戈特弗里德·威廉·莱布尼茨于1646年出生于莱比锡,15岁就读于莱比锡大学的法律系。莱布尼茨建立的理论认为:我们的宇宙可能是从无穷多个可能的宇宙中选择出来的,经过优化后使得最小量的规律导向最多样的结果。莱布尼茨对心灵本质的反思在他1714年的《单子论》(Monadology)中达到了高潮。《单子论》篇幅短小,描述了一个基本精神粒子(他称为单子,或“微小意识”)的宇宙。这些实体(宇宙意识的局部实现)在它们自己的内在反映了宇宙一体的状态。据莱布尼茨称,关系产生了物质,而不是牛顿所得出的相反结论。1932年,诺伯特·维纳将一篇量子力学方面的文章题目定为《回归莱布尼茨!》(Back to Leibniz!)。“唯物论将灵魂当作一种复杂的物质粒子,唯心论则将物质材料当作一种原始的灵魂,我觉得两者没有本质的区别。”维纳于1934年补充道。
莱布尼茨认为,根据机械规则操纵一套明确的符号表,逻辑、语言和数学相容的系统可以借助这套符号表实现形式化。1675年,他写信给亨利·奥尔登伯格(Henry Oldenburg,英国皇家学会的秘书,也是他和艾萨克·牛顿的中间人)时说:“那个时刻即将到来,我们获得的上帝和思想的知识将与数字和号码一样实在,发明机器将和解决几何学问题的结构一样简单。”想想我们现在所说的软件,他看到了逻辑和机制之间的对应是双向的。1679年,他将《情景几何研究》(Studies inaGeometry of Situation)寄给克里斯蒂安·惠更斯(Christiaan Huygens),并附上了一项发现:“无论一台机器多么复杂,人们都可以使用字符对其进行描述,而这些字符只不过对应于字母表中的字母。因此,认识思想的方法,要做到像了解机器的所有部件那样。”
凭借他的逻辑演算或微积分学,莱布尼茨朝着他的“通用象征性”(其中,推理的所有真理都还原为一种演算)迈出了第一步。他认为可以为人类思想制定一种字母表,通过比较这个字母表中的字母,分析字母组成的单词,就可以发现和判断一切事物。他还提出了通用编码,其中主要概念都用素数表示,从而形成一种数字和思想的完全映射。
“我认为有几个被命运选中的人可以在5年内完成这件事,”莱布尼茨声称,“然而,可能只需要两个人,通过一个可靠的演算,就可以得出对生命最有用的教义,也就是道德和形而上学的教义。”莱布尼茨的探索先于哥德尔和图灵,他承诺:“通过数字计算,人类将有一种新的仪器,它将大大提升思维的力量,且比光学镜片对眼睛的提升效果更显著……只有当推理像现在的算术一样清楚、明确时,它才能消除所有的疑问。”
莱布尼茨把二进制编码看作通用语言的关键,并将这一发明归功于中国人,他在《易经》的卦爻中看到了“二进制算术的遗迹……这是我在几千年之后又重新发现的”。莱布尼茨的笔记展示了十进制和二进制记数法的转换,以及执行基本算术函数(如0和1的字符串的机械迭代运算)这些简单算法的发展。“在二进制算法中,只有两种符号:0和1,使用这两种符号我们可以写出所有数字,”他解释说,“我已经发现,它进一步表达了二分法的逻辑,这才是最有用的。”
1679年,莱布尼茨想象出了一台数字式计算机,其中二进制数由“球形标记”代表,计算机由“门”进行机械控制。“这种二进制计算可以根据下列这种方式,通过一台机器(不带轮子)实现,”他写道,“轻易就能确定,并且毫不费力。预备一个有多个孔的容器,确保孔可以关闭和打开。孔打开时对应的是1,关闭时对应的是0。通过打开的‘门’,小方块或弹珠都落入了轨道中,关闭的‘门’则不允许物体通过。根据需要,它(门阵列)将从一列转移到另外一列。”
莱布尼茨还发明了移位寄存器,比近代的发明早了270年。移位寄存器处于高等研究院的计算机(以及此后所有处理器和微处理器)的核心位置。在这些设备的移位寄存器中,电压梯度和电子脉冲分别取代了重力和弹珠,但在其他方面,它们运作的方式和莱布尼茨1679年设想的一样。只需有二进制标记和左右移位的能力,就有可能执行所有算术函数。但是为了利用这种功能,你必须能够存储和调用结果。
“在选数管中存储特定的字有两种可能的方法,”伯克斯、戈德斯坦和冯·诺依曼解释说,“一种方法是将整个字存储在一根特定的管中,另一种方法是将该字的数位分别存储到40根管中的对应位置。”后来人们发展出了这种思路的通俗解释:将一个40层的旅馆中每层的相似房间号派发给40位旅客。“那么,从本方案的存储器中取出一个字,就需要将机制转换为40根管并联的结构,”他们在《电子计算机逻辑设计初探》一文中继续说道,“在我们看来,这一转换方案似乎比串行系统所需要的技术更为简单,当然,也要快上40倍。这两个系统的本质区别在于执行加法的方法:在并行机中,所有对应的数字对都是同时相加;而在串行机中,这些数字对都是按照时序相加。”
40根选数管构成一个32×32×40比特的矩阵,其中包含1024个40比特的字符串,每个字符串分配唯一的标识号或数字地址。这种方式不禁让人想起1931年,哥德尔将现在所谓的哥德尔数分配到逻辑语句中。通过操纵10比特的数字地址,就有可能操纵基本的40比特字符串。这40比特字符串包含了数据、指令或附加地址的任意组合,它们都可以在该程序的执行进程中进行修改。“机器修改自身指令的这种能力,是不平凡的编码操作的一个方面,我们必须这么看待它。”1946年5月,冯·诺依曼在向他的海军赞助商解释时说道。
“哥德尔的那种思维方式,比如哥德尔编号系统——获得编码信息之类的方法,让你能够在信息形成后进行记录……然后你就可以推断出某些重要的结果,”毕格罗说,“我认为,冯·诺依曼非常熟悉这些想法,他在数理逻辑方面投入了许多时间和努力,他也曾研究哥德尔解决的问题。”
本书评论