天涯书库 > 创新者:一群技术狂人和鬼才程序员如何改变世界 > ENIAC >

ENIAC

战争会促进科学的发展。纵观历史,无论是古希腊建造的投石车,还是列奥纳多·达·芬奇成为切萨雷·波吉亚(Cesare Borgia)麾下的军事工程师,我们都能从中看出军事需求一直都在推动技术的进步,这点在20世纪中叶体现得尤为明显。这个时代最为顶尖的技术成就(计算机、原子能、雷达和互联网)都是战争催生的产物。

美国在1941年12月正式加入“二战”,战争的需要使得美国有充足的动力为莫奇利和埃克特正在研发的机器提供资助。宾夕法尼亚大学和位于阿伯丁试验场的陆军军械部当时得到了一项军方指派的任务——为美国输送到欧洲的火炮武器制作记录发射角设置的说明书。为了实现精确的瞄准,这些火炮的弹道表需要考虑数百项发射条件,包括温度、湿度、风速、高度和火药的种类等。

仅仅针对一种火炮发射的一种炮弹,它的弹道表制作就需要通过微分方程组计算三千条弹道。这项工作通常会使用万尼瓦尔·布什在麻省理工学院发明的微分分析机来完成。这台机器的计算工作需要超过170个人的协助,这些被称为“计算员”(computer)的工作人员大多数都是女性。为了求解这些方程,他们需要在桌面加法机上进行繁复的操作。这项工作召集了全国各地的女性数学专业学生来完成。尽管如此,仅仅为了计算一个弹道表就要花费超过一个月的时间。到了1942年夏天,这样的计算进度显然已经越来越跟不上战事的需求,导致美军的部分火炮出现了无法使用的情况。

莫奇利在当年8月写了一份备忘录,他在其中提出了一个可以帮助军方解决这个难题的方法。这份将会改变计算机发展历史的备忘录的题目是“高速真空管设备的计算应用”。莫奇利在备忘录中为他和埃克特希望建造的机器请求资助:这是一台使用真空管电路的数字电子计算机,它可以求解微分方程和进行其他的数学计算。他表示,“如果这种机器能够采用电子元件,它们的计算速度将会得到大幅提升。”他预计一个弹道可以在“100秒”之内计算完成。66

虽然宾夕法尼亚大学的院长们没有被莫奇利的备忘录打动,但它确实吸引了这所大学的驻派陆军军官的注意力。时年29岁的赫尔曼·戈德斯坦中尉(Herman Goldstine,不久后被提升为上尉)曾经担任密歇根大学的数学教授。他当时的任务是提升弹道表的制作速度,他已经为此派遣了同为数学家的妻子阿黛尔到全美各地招揽人才,动员更多的女性加入宾夕法尼亚大学的计算员队伍当中。在看到了莫奇利的备忘录之后,他相信这项任务可以有更好的完成方式。

美国陆军部在1943年4月9日正式决定资助建造这台电子计算机。在这个决定达成的前一天晚上,莫奇利和埃克特还在通宵达旦地赶制他们的计划书。虽然这份计划书在第二天早上仍然没有完成,但他们还是坐上了戈德斯坦中尉驾驶的汽车,从宾夕法尼亚大学出发前往位于马里兰州的阿伯丁试验场,那里已经聚集了一批来自陆军军械部的军官。在这段两个小时的车程当中,莫奇利和埃克特坐在后座继续完成计划书剩下的部分。在到达阿伯丁之后,戈德斯坦前往参加评审会议,他们则留在一个小房间里继续工作。这场会议的主持人是普林斯顿大学高等研究院的院长奥斯瓦尔德·维布伦(Oswald Veblen),他当时的职责是为军方的数学项目提供指导。陆军弹道研究实验室的主管莱斯利·西蒙(Leslie Simon)上校也参加了这次会议。戈德斯坦对当时会议情况的回忆是:“在会议上,维布伦用椅子的后脚做支撑不断地前后摇晃。他在听到我的一小段报告之后突然从椅子上摔了下来。他马上站起来喊道:‘西蒙,把钱给戈德斯坦。’他在说完这些之后就走出了会议室,随后整场会议在愉快的气氛下结束了。”67

莫奇利和埃克特将他们之前的备忘录整理成一篇题为《关于电子微分分析机的报告》(Report on an Electronic Diff. Analyzer )的文章。使用缩写“diff.”是一个取巧的做法,因为它既可以表示“不同”(differences),这点反映了这台待建的机器具有数字化的特点;还可以表示“微分”(differential),这点描述的是它可以求解的方程类型。这台机器在不久后就被赋予了一个更容易被记住的名字:ENIAC,即电子数字积分计算机(Electronic Numerical Integrator and Computer)。尽管ENIAC的主要设计用途是求解微分方程,这是计算火炮弹道的关键所在,但是莫奇利在报告中表示它可以配有一个“编程设备”,这样它就可以用于完成其他的任务,成为一台更为通用的计算机。68

ENIAC在1943年6月开始投入建造。莫奇利在维持教职的同时负责这个项目的顾问和设计工作。作为军方代表的戈德斯坦负责监督工程的进度和预算。对细节和完美有强烈追求的埃克特则成了项目的首席工程师。埃克特非常专注地投入到了这个项目当中,以至于有时会直接睡在机器的旁边。有一次他还被另外两位工程师作弄了一把,他们趁他睡着的时候,小心翼翼地把他的帆布床搬到了楼上的一个完全一样的房间。埃克特在醒来之后大吃一惊,以为自己的机器被人偷走了。69

埃克特深知如果没有精确的执行,再伟大的概念也发挥不出应有的价值(这是阿塔纳索夫学习到的教训),因此他会放下身段对项目进行事无巨细的管理。他会在其他工程师之间来回巡察,告诉他们应该在哪个位置进行焊接或者拧紧电线。“我会查看每位工程师的工作,还会仔细检查机器中每个电阻的每项计算,确保所有工作都能准确完成。”他坚定地说道。他对所有不在乎细节的人都没有好感。“人生正是由各种各样的小事组成的,”他曾经说过,“当然计算机也只是一个由细节堆砌而成的庞大整体。”70

埃克特和莫奇利两人之间可以起到互补的作用,这点让他们成为数字时代众多双人领导组合当中的典范。埃克特会以精益求精的要求来鞭策其他人;莫奇利则更擅长于安抚人心,并让他们感受到关爱。“他总是在跟别人开玩笑,”埃克特回忆道,“他是一个很有人缘的人。”专业技术过硬的埃克特有时也会出现精神紧张和注意力不集中的问题,因此他非常需要一个可以跟他交流想法的人,这是莫奇利非常乐意担当的角色。虽然莫奇利不是一个工程师,但他确实有能力以一种启发灵感的方式将科学理论和工程实践联系起来。“这个项目是我们合作完成的,我认为仅凭我们之间的任何一个人都是不可能做到的。”埃克特后来承认道。71

虽然ENIAC是一台数字化的计算机,但它没有采用二进制系统(只使用0和1两个数字),而是选择了十进制系统,它采用的计数器是带有十个数字的。从这点来看,ENIAC还不算是一台现代的计算机。除此之外,它比阿塔纳索夫、楚泽、艾肯和斯蒂比兹制作的机器都要先进。在使用了一项叫作“条件分支”(埃达·洛夫莱斯曾在一个世纪之前描述过的概念)的功能之后,它可以根据临时的计算结果在程序当中进行跳转。它还可以重复执行用于完成常见任务的代码块,这项功能被称为“子程序”。“我们可以使用子程序,以及子程序的子程序。”埃克特解释道。当莫奇利提出这项功能的时候,“我立刻意识到这个想法将会是整台机器的关键”,埃克特回忆道。72

经过了一年的建造工作之后,莫奇利和埃克特在1944年6月的诺曼底登陆日前后开始对ENIAC的前两个组件进行测试,这个部分相当于计划建成机器的六分之一。他们先从一个简单的乘法问题开始测试,在看到它生成了正确的答案之后,他们同时发出了一声欢呼。不过这个建造项目又持续了一年多的时间,ENIAC在1945年11月开始全面投入运作。它当时可以在一秒钟之内进行5 000次加减法运算,这个运算速度要比之前发明的计算机快100倍。它的长度为100英尺,高为8英尺,占地面积相当于一间普通的三居室公寓。它的重量接近30吨,机器内部含有17 468个真空管。相比之下,阿塔纳索夫和贝瑞的计算机当时仍在艾奥瓦州的一个地下室中苟延残喘,它的大小相当于一张书桌,它内含的真空管数量仅为300个,而且每秒只能进行30次加减法运算。