就在这个时候,计算机历史上的另外一位关键人物——约翰·冯·诺依曼再次发挥了他的作用。这位来自匈牙利的数学家曾经是图灵在普林斯顿大学研究期间的导师,他还向图灵提供过一份研究助理的工作。身为一位充满热情的博学大师和温文尔雅的知识分子,他在统计学、集合论、几何学、量子力学、核武器设计、流体力学、博弈论和计算机结构学等领域都做出过重大的贡献。他最终会对存储程序结构(埃克特、莫奇利和他们的同事刚开始思考的技术)进行大幅改进。由于他对存储程序结构的发明居功至伟,这种结构也被称为“冯·诺依曼结构”。40
1903年,冯·诺依曼出生在布达佩斯的一个富裕犹太家庭之中,当时奥匈帝国已经废除了制裁犹太人的法律,所以冯·诺依曼得以在犹太人的辉煌时期成长。1913年,弗朗茨·约瑟夫国王以“在金融领域的卓越功绩”为由向身为银行家的麦克斯·诺依曼(Max Neumann)授予了一个世袭的爵位,此后诺依曼家族的姓氏之前就加上了表示贵族的词缀“margittai”,这个姓氏在德语中则变成了冯·诺依曼(von Neumann)。亚诺什(János,又名Jancsi,他在来到美国之后被称为约翰或约翰尼)是家中三兄弟的老大,在父亲逝世之后,他们三人都皈依了天主教(其中一人承认“这是出于便利的原因”)。41
冯·诺依曼是另外一位站在人文和科学交叉口的创新者。“父亲是一个业余诗人,他认为诗歌不仅可以表达情感,还可以诠释哲学思想,”约翰的弟弟尼古拉斯回忆道,“他将诗歌看成是一种存在于语言当中的语言,这种想法也许引起了约翰后来对计算机和大脑语言的思考。”他对母亲的印象是,“她认为音乐、艺术和其他相关的审美享受都在我们的生活中占据重要的地位,高雅是一种值得推崇的品质。”42
冯·诺依曼从小就展现出了过人的天赋,外界流传着不少关于他童年的故事,其中有些也许是真的。据说他在6岁的时候已经可以用古希腊语和父亲闲谈,他还可以心算出两个8位数的除法。作为一项在聚会上表演的拿手好戏,他会记住电话本其中一页的内容,然后背诵出上面的人名和电话号码。他还能一字不差地回忆起自己读过的5种不同语言的小说或文章。“如果以后进化出了一种超高智商的人类,”氢弹之父爱德华·泰勒(Edward Teller)曾经说过,“那么这个种族的成员应该会像约翰尼·冯·诺依曼那样。”43
除了在学校学习之外,他还有专门的数学和外语家教,他在15岁的时候已经完全掌握了高等微积分。冯·诺依曼在1919年举家搬迁到了维也纳和阿德里亚海沿岸的一个旅游城市,他后来前往位于苏黎世的瑞士联邦理工学院(爱因斯坦曾经就读的大学)攻读化学,同时在柏林和布达佩斯两地攻读数学,并在1926年获得博士学位。1930年,他前往普林斯顿大学教授量子物理学,在被任命为高等研究院的首批成员(其他成员包括爱因斯坦和哥德尔)之后,他继续留在普林斯顿大学任教。44
冯·诺依曼和图灵两人在普林斯顿大学相遇,虽然他们后来都成为通用型计算机的重要理论家,但是他们有着完全对立的个性和气质。图灵的生活非常简朴,他长期居住在宿舍和旅馆当中,而且通常都是独来独往。冯·诺依曼是一个讲究生活享受的人,他每周都会和妻子在普林斯顿大学的大宅中举办一到两次聚会。图灵是一个长跑运动员;虽然冯·诺依曼的兴趣相当广泛,但是长跑(甚至是短跑)显然不在此列。“他在衣着和习惯方面比较不修边幅。”这是图灵的母亲对自己儿子的看法。相比之下,冯·诺依曼几乎在任何时候都会穿着整齐的西装三件套,连在骑驴游览大峡谷的时候也不例外。他在学生时代的衣着已经十分讲究,据说数学家大卫·希尔伯特在第一次看见他的时候只问了一个问题:他的裁缝是谁?45
在自己举办的聚会上,冯·诺依曼喜欢用各种不同的语言来讲笑话和背诵低俗的打油诗。他非常热衷于享受食物,有一次他的妻子甚至说他可以计算除了卡路里之外的任何东西。他在开车的时候总是横冲直撞,所以他时常会把车子撞坏,他还对新款的凯迪拉克轿车情有独钟。“他每年至少都会买一辆新的凯迪拉克,不管之前那一辆有没有被他撞坏。”科学历史学家乔治·戴森(George Dyson)这样写道。46
20世纪30年代后期,身处高等研究院的冯·诺依曼开始将研究兴趣转向利用数学方式建模爆炸的冲击波。凭借这方面的研究经验,他在1943年加入了曼哈顿计划。作为曼哈顿计划的成员,他需要经常前往位于新墨西哥州洛斯阿拉莫斯的秘密设施,参与那里的原子弹研发工作。由于当时可用的铀–235只足够制造一个原子弹,所以洛斯阿拉莫斯的科学家们也在尝试设计一种使用钚–239的原子弹。冯·诺依曼的主要工作是研制能够将钚核装料压缩至临界质量的炸药透镜。[3]
这种内爆式设计的评估需要求解大量的方程,用于计算爆炸产生的空气或其他物质的压缩流速。于是冯·诺依曼开始前往各地了解高速计算机的发展前景。
1944年夏,他来到贝尔实验室观摩多台经过改进的乔治·斯蒂比兹复数计算器。其中最新型的复数计算器有一项令他印象特别深刻的创新:用于为每项任务输入指令的打孔纸带同时会含有数据,也就是说指令和数据会混合在一起。他也在哈佛大学访问了一段时间,研究霍华德·艾肯的马克一号能否帮助原子弹的计算工作。在当年的夏天和秋天,他多次来回穿梭于哈佛大学、普林斯顿大学、贝尔实验室和阿伯丁之间,他就像是一只蜜蜂一样将自己在各个地方采集到的想法传播给不同的团队。约翰·莫奇利曾经利用自己在四处访问期间收集的想法创造了第一台可行的电子计算机,同样,冯·诺依曼也在不同的地方吸收到设计存储程序的计算机结构所需的资料和概念。
哈佛大学的格雷斯·霍珀和她的编程搭档理查德·布洛赫将马克一号旁边的会议室布置成冯·诺依曼的办公室。冯·诺依曼和布洛赫会在黑板上写下公式,将它们输入到机器中,然后霍珀会大声读出机器计算得出的中间结果。霍珀说当这台机器正在“生成数字”的时候,冯·诺依曼经常会从办公室突然冲进来给出自己对计算结果的预测。“我永远都不会忘记他在两个房间来回奔波,然后将预测的结果都写在黑板上的情景,而且令人感到惊叹的是,冯·诺依曼预测的结果可以达到99%的准确率,”霍珀兴奋地说道,“他似乎清楚知道它的计算流程,或者说他能够感受到它是如何运作的。”47
冯·诺依曼的协作能力给哈佛大学的团队留下了深刻的印象。他吸收了他们的想法,也贡献了一些自己的想法,但他明确表示任何概念都不应该被任何人据为己有。在他们需要编写一份工作报告的时候,冯·诺依曼坚持要把布洛赫的名字放在第一位。“我确实觉得自己受之有愧,不过最终的结果就是如此,所以我非常珍视这份报告。”
布洛赫说道。48 艾肯对于分享的想法也同样抱有开放的态度。“不用担心其他人窃取你的想法,”他曾经对一位学生说过,“如果这是原创的想法,你肯定可以让别人接受它。”尽管如此,冯·诺依曼漫不经心地对待想法原创者的态度仍然让艾肯感到惊讶和一丝不快。“他不会在意自己谈论的想法是来自哪里的。”艾肯说道。49
冯·诺依曼在哈佛大学研究期间遇到了一个问题——马克一号采用的机电开关的运作速度非常缓慢。如果要在这台机器上完成原子弹相关的计算工作将需要花费数月的时间。虽然它可以通过纸带输入指令进行重新编程,但是每次调用子程序的时候都需要手动更换纸带。冯·诺依曼开始确信如果要实现他的计算目标,唯一的解决方法是建造一台达到电子速度,并且可以内置存储器保存和调整程序的计算机。
这时他已经准备好投身于推动计算机技术的下一个重大进步:研制一台存储程序计算机。这项研究的契机出现在1944年8月底,他在阿伯丁试验场火车站的月台上迎来了一场意外的相遇。