坚守岗位,坚守计算机项目
电子计算机项目中的其余人员分散到了行业里、国家实验室,以及越来越多大学的计算机科学系——在这些地方,高等研究院计算机的衍生品正在被建造。朱利安·毕格罗决心坚守岗位。最后,尽管马斯顿·莫尔斯已经为“我的数学家同事在计算机这个问题上所做的结论”道了歉,但是数学家对工程师的看法从未改变。“基于他们是否愿意与工程师交谈,甚至打交道,你就可以对不同种类的员工及正式员工进行分类。”
毕格罗收到了加利福尼亚大学洛杉矶分校、兰德公司、纽约大学、美国无线电公司、密歇根大学、休斯飞机公司(Hughes Aircraft)、国防部制图局(Defense Mapping Agency),甚至爱因斯坦医学院(Albert Einstein College of Medicine)的邀约,但是他都一一拒绝了。马丁·戴维斯说:“朱利安是一个扎根在一个地方,就一心一意、毫无旁骛的人。如果他不曾在高等研究院任职,而是到公司谋求一个职位,他真的会发财。”研究院不能迫使他离职,却也不会给他涨工资。
他每年靠9000美元度日,偶尔加上一点咨询费用——需要抚养三个孩子,后来还得照料他重病缠身的妻子玛丽。克拉拉曾建议由毕格罗担任冯·诺依曼未出版的计算机和自动机相关论文的编辑,不过这件事后来不了了之。而接下来的40年间,毕格罗发表的论文也很少。虽然对冯·诺依曼关于计算机未来的未尽想法而言,毕格罗依然是最直接相关的人,但是这些想法因为冯·诺依曼的英年早逝,加上他拒绝发布不完全的作品,已经不再那么受关注了,而毕格罗离开高等研究院则进一步让这些想法被压制了。
毕格罗对于未来计算机的洞悉,远不止于将延时功能转向及时从而向前推进。图灵的一维模型不管功能如何强大,冯·诺依曼的二维实现不管多么实用,也许都只是导向某个其他事物的漫漫长征路上的第一步。“如果你真的按照图灵的描述去建造一台这样的机器,”毕格罗解释道,“那么你花在纸带上前后推动以找到正确位置的时间,比你切实进行数值工作或计算的时间还要多。”而冯·诺依曼的模型也存在类似的限制。1946-1951年,情况有了转机,就像任何一个有关核苷酸序列的解读都预计将持续30亿年一样,对计算机恒久维持的期待不应高过它。毕格罗和冯·诺依曼都完全不曾预料到,在真空管和阴极射线管消失那么久之后,数字计算机结构从1946年开始,居然基本上就不曾有改变。
如果高等研究院的计算机创建完成,也许就能回头看看人们为此所做的妥协,以及毕格罗为此所做的奉献。
1965年,在后MANIAC时期,在他为数不多的思想揭幕作品里,“设计这样一台电子计算机……就是在三维空间和一维时间里与互联能力进行了一场让人备感挫败的摔跤比赛。”他这样写道。为什么在接下来的64年里,就没有什么替代品真正地引起人们重视了呢?如果你细看计算机的结构,“你不可能解释它每时每刻的所作所为,”毕格罗解释道,“随着逻辑过程复杂度的提升,结构对逻辑过程运行原理的重要性就会不断减弱。”毕格罗还指出,图灵在1936年所提出的图灵机之所以重要,就是因为“它以一种重大且提示性的方式展示了结构的微不足道”。因为结构经常可以被代码所取代。
毕格罗谈道:“按照时间顺序是目前执行计算的惯用方法,尽管在计算机中形成任何研究的实际过程的模型,为什么一定要从计算时间序列和实际模型的物理时间参数进行配对开始,似乎找不到原因。”自从1941年维纳提出预测飞机躲避路径的问题,以及1946年冯·诺依曼提出预测炸弹爆炸的问题以来,毕格罗一直都在苦苦思索如何将物理学映射到计算中。他说道:“在任何过程的路径表示中,从结果到原因或从原因到结果的正反推导应该都是可能的。”他接着补充道:“时间对应时间的管理之所以普遍应用是因为人类诠释结果。”
“常用的按时间排序的方式和候选单元格等待加入下一轮计算还会造成一种结果,那就是当这些候选单元格加入计算时,计算机会面临一个非常困难的识别问题……因为计算机需要处理一个完全随机的候选单元格,并识别它在机器空间中所处的位置。”毕格罗接着解释了“依赖时间进行排序,为什么会导致计算机在很大程度上由机器空间内部严格独立的要素所构成”。反过来,这就要求计算机的各个独立要素之间,“通过标记计算装置几乎毫不相关的几何特性的标签组成的显式系统”相互沟通——这些标签就是我们常说的“地址”。因此,很大程度上,在一个特定计算装置上实现按时间排序进程的问题,就变成了确定交互项的地址序列的问题。
1951年建立的32×32矩阵提供了1024个不同的存储位置,每个包含一个40比特的字符串。在接下来的60年里,这个地址矩阵呈现爆炸式增长。今天的处理器跟踪数以十亿计的本地地址只需要1纳秒,但是协议分配远程地址的速度却跟不上非本地地址空间的扩展速度。单个地址引用错误就会导致一切都停止运作。
虽然计算机拥有无数个可用的部件,但是不得不集中全部注意力保证地址引用和指令序列完全正确,所以一次只能做一件事。毕格罗指出:“现代高速计算机的性能强大,是从其成就来说的;而从可用逻辑设备充分参与计算的角度来看,其实非常低效。尽管单个部件能够不断高速运作,但是单个部件之间以这样一种方式互相连接:平均而言,几乎所有部件都是在等待另一个部件(或者极少量部件)完成运作。每个单元的平均工作周期非常短。”
为了弥补这些不足,处理器每秒执行数十亿条指令。
编程人员如何才能供应足够多的指令和地址,来跟上这一速度呢?毕格罗将处理器视为吸收代码、产生结果的有机体,处理器消耗指令非常快,所以迭代、递归过程是人类能够保证代码生产速度的唯一方法。“电子计算机执行指令的速度非常快,消耗指令的速度也一样快,因此必须找到大批量有效地生产指令的方式以及对它们进行标记的方式,从而让计算机持续工作,”他解释道,“这看上去也许像描述一个深度的逻辑问题,即如何将计算表述为机器语言的非常滑稽的方式。然而,人们认为它贴近一个重要的核心真理,即使用高度递归、有条件的、重复的程序,是因为它们作为基础流程的描述,从符号上来说表现高效(但不一定独特)。”
毕格罗质疑冯·诺依曼架构体系的持久性,并对数字计算的中心法则(没有程序员,计算机就无法计算)提出挑战。他和冯·诺依曼从一开始就在思索“让位于一个大型阵列(比如存储器)单元中的各种基本信息片段进入计算过程,而不在‘机器空间’中显式地生成对应地址的可能性”。






本书评论