
ENIAC——电子数字积分器与计算机(Electronic Numerical Integrator and Computer),世界上第一台通用电子计算机。注意「通用」二字,因为第一台电子计算机被认为是爱荷华州立大学在1942年研制的ABC——阿塔纳索夫-贝里计算机(Atanasoff–Berry computer)。但通用计算机并不等同于现代计算机。
ENIAC由宾夕法尼亚大学莫尔电气工程学院研制,为美国陆军的弹道研究实验室为了计算导弹而出资。
在ENIAC的总体设计已经完成并进入硬件实现阶段时,来自曼哈顿计划的冯·诺依曼加入了ENIAC团队,与它的两位主要负责人——普雷斯伯·埃克特和约翰·莫奇利一起讨论对它的改进。
当时的计算机主要使用穿孔卡片和穿孔带存储程序,这种机械式的输入远远跟不上电子运算的节奏了,因此,ENIAC利用旋钮、开关和接插线的不同位置来表示程序,虽然消除了控制与运算之间的速度差距,却使编程成为一件非常复杂的难事。在ENIAC上设置一个实用程序,往往需要几个星期的时间,如非必要,使用者很少愿意修改它。因此,尽管ENIAC是通用的,却总在一段时间内只专用于某个问题(比如弹道计算),它的通用价值被大大削弱。而如果频繁地设置不同程序,机器在很大一部分时间里将无法运行,它的高速性能又被大大浪费。
于是三位大佬就想到:程序能不能像数据一样,通过穿孔介质输入之后长期驻存在机器内部的存储器中呢?这样一来,读取指令就和读取数据一样快了。
1944年,在ENIAC还未建成之际,研制一台可以存储程序的新机器的申请就提交到了导弹实验室。导弹实验室同意了这个项目,并提供10万美元的预算。这台新机器名叫电子离散变量自动计算机(Electronic Discrete Variable Automatic Computer),简称EDVAC。
尽管这个方案主要是埃克特和莫奇利的想法,但冯·诺依曼对EDVAC做了更抽象的提炼。1945年6月,在一趟返回洛斯·阿拉莫斯国家实验室的列车上,冯·诺依曼写出了那篇长达101页,影响计算机历史走向的《EDVAC报告书的第一份草案》。
草案不仅详述了EDVAC的设计,还为现代计算机的发展指明了道路:
这些在现在看来似乎是理所应当的原则,在当时却是一次划时代的总结。这份草案与其说是冯·诺依曼对EDVAC的设计描述,不如说是他对当时全世界计算机建造经验集大成式的高度提炼。这种基于存储程序思想的计算机结构,后来被称为冯·诺依曼结构。
这份草案很快流传开来,并轰动了整个计算机界,全世界都争抢着要做出存储程序的计算机,或者说冯·诺依曼计算机,或者说——现代计算机。
如果你去研究这段历史,会了解到SSEC、ARC2、曼彻斯特小型机等一系列与存储程序有关的计算机。其中完成于1948年5月的ARC2是公认的第一台存储程序计算机,由伦敦大学伯贝克学院建造,但它不是纯电子的。于是有了1948年6月的曼彻斯特小型机,它是第一台存储程序电子计算机。
题主提到的EDSAC——电子延迟存储自动计算器(Electronic delay storage automatic calculator)则是第二台存储程序电子计算机,由英国剑桥大学在1949年5月建成,它除了名字和EDVAC仅一字母之差之外并没有在历史上抢得多少风头,毕竟已经排到第二了。
而最惨的是EDVAC本身,它的草案启发了全世界,自己却由于团队矛盾等原因,到了1949年8月才交付,而且还存在问题,直到1951年才能正常使用,早已被大批存储程序计算机超越。
