弹道表背后的计算压力
第二次世界大战期间,美国陆军需要大量射表,描述不同条件下弹丸怎样飞行。计算人员用桌式计算器和微分分析机处理方程,但大量重复步骤使工作积压。1943年,陆军支持宾夕法尼亚大学摩尔电气工程学院在费城开展电子数值积分计算机(ENIAC)项目,以高速电子电路替代许多缓慢的机电动作。
约翰·莫奇利提出电子计算的方案,普雷斯珀·埃克特领导关键工程设计,赫尔曼·戈尔德斯坦负责联系军方需求,学院工程师、技术人员及计算人员共同推进建造。机器在1945年完成主要组装并开展计算,1946年2月公开展示与揭幕,使此前的项目进入公众视野。
参考:[3]
数字沿着脉冲线路流动
ENIAC采用十进制,二十个累加器能够保存带符号的十位数字,并参与加减运算;乘法器、除法及开方装置承担更复杂的工作。函数表的开关保存预先安排的数值,穿孔卡片承担部分输入输出。各部分由统一的时序信号协调,数字用电脉冲在部件之间传送。
1946年技术报告把一次加法所需时间列为200微秒,相当于每秒五千次加法的节拍。这是机器内部运算速度,不是从准备问题到拿到答案的总效率。读卡、打孔、设置线路、检查故障以及判断结果是否可信,都需要另外的时间和劳动。
参考:[1]
程序先成为图纸与接线
原始ENIAC没有像后来的计算机那样从统一内存逐条读取完整指令序列。工作人员要先把数学算法拆成可用部件执行的步骤,再设置开关并连接电缆。数据线路负责把数字送到正确位置,控制线路上的脉冲则决定哪个部件何时开始工作;主程序控制器协调重复执行和步骤转换。
例如,把一个累加器里的数加到另一个累加器中,既要安排数字的传输路径,也要让发送方与接收方在正确节拍动作。连续累加一组数,还须安排读取、计数、重复和停止条件。接线并非照着公式机械插线,而是在有限部件和时间约束下组织一套能自行运行的计算流程。
六位女性怎样使方案跑起来
首批六位女性程序员包括凯瑟琳·麦克纳尔蒂、弗朗西丝·比拉斯、贝蒂·琼·詹宁斯、贝蒂·斯奈德、露丝·利希特曼和玛琳·韦斯科夫。她们原先参与人工数值计算,转入ENIAC工作后,结合逻辑图、电路资料和与工程人员的讨论,学习怎样把问题安排到机器上。
弗里茨收集的当事人回忆说明,人员曾分成两人小组研究不同任务。有人整合弹道程序,有人按机器将采用的步骤另算测试轨迹,用来核对中间结果。她们还必须分辨数学安排错误、开关或接线错误以及硬件故障。程序员的知识因此同时涉及方程、时序、机器能力和验证方法。
参考:[2]
公开展示的是一次组织完成的计算
1946年2月的展示中,弹道轨迹计算成为重要项目,詹宁斯和斯奈德参与完成展示所用程序。观众看到机器很快得到结果,背后却是事先设计、设置、测试与排错的积累。一次成功运行所证明的,是电子部件能够在统一安排下连续执行复杂计算,而非机器能自己理解任何交来的数学问题。
阿黛尔·戈尔德斯坦编写的技术说明于同年6月作为ENIAC报告的一部分形成正式文档,另有操作和维护手册。这些材料把运算单元、程序控制和测试方法转化为可传授的知识。报道中的巨型机器与少数设计者之外,程序设计、文档和日常维护同样决定了系统能否真正使用。
从揭幕走向长期使用与改装
1947年,ENIAC迁往马里兰州阿伯丁试验场。机器继续处理不同数值任务,原有设置方法也不断调整。1948年的编程改装利用函数表开关保存编码指令,使执行方式更接近新的顺序指令模式,但指令所在的开关存储并不是可由程序任意写入的现代内存。
这项变化发生在公开展示之后。区分1943年启动、1945年建成并开始计算、1946年揭幕,以及后来的改装,才能看出ENIAC是一套持续被使用者重做的系统。它的历史意义不仅在运算快,也在于展示了通用电子计算需要怎样的分工:工程师建造可靠部件,程序员安排步骤,操作与维护人员让计算持续发生。