阿塔纳索夫-贝瑞计算机(Atanasoff–Berry Computer,通常简称ABC计算机)是世界上第一台电子数字计算设备。这台计算机在1937年设计,不可编程,仅仅设计用于求解线性方程组,并在1942年成功进行了测试。然而,这台计算机用纸卡片读写器实现的中间结果存储机制是不可靠的。而且,在发明者约翰·文森特·阿塔纳索夫因为二战任务而离开爱荷华州立大学之后,这台计算机的工作就没有继续进行下去。ABC计算机开创了现代计算机的重要元素,包括二进制算术和电子开关。但是因为缺乏通用性、可变性与存储程序的机制,将其与现代计算机区分开来。这台计算机在1990年被认定为IEEE里程碑之一。
阿塔纳索夫和克利福德·贝瑞的计算机工作直到1960年才被发现和广为人知,并且陷入了谁才是第一台计算机的冲突中。那时候,ENIAC普遍被认为是第一台现代意义上的计算机,但是在1973年,美国联邦地方法院注销了ENIAC的专利,并得出结论:ENIAC的发明者从阿塔纳索夫那里继承了电子数字计算机的主要构件思想。因此,ABC被认定为世界上第一台计算机。
根据阿塔纳索夫的讲述,ABC计算机的几个关键概念是在1937-1938年的一次长时间的夜间行驶中突然构想出来的。ABC的创新包括了电子计算、二进制算术、并行处理、蓄热式电容内存,还有存储和计算功能的分离。其机械和逻辑设计都是阿塔纳索夫博士在后面的一年中完成的。一个创建概念验证原型的资金申请在1939年3月提交到了农学部门,农学部门也对提高用于经济和研究分析的计算速度深感兴趣。纽约的非营利研究组织RCSA给予5000美金作为进一步资金支持。
ABC计算机是由阿塔纳索夫博士和研究生克利福德·贝瑞于1939到1942年,在艾奥瓦州立大学的物理楼地下室里建造的。9月获得了初始资金之后,1939年10月完成了11个管件的演示原型。12月的演示为建造一个完整的机器带来了资金支持。接下来的两年里,ABC计算机完成了建设和测试。《得梅因纪事报》()在1941年1月15日声称,ABC计算机是由300多个真空管组成的“电子计算机器”,可以“计算复杂的代数方程”(但没有给出精确的计算机技术说明)。计算机系统的重量超过320千克(700磅),包含了大约1.6公里(1英里)的电线、280个双三极真空管、31个闸流管,大小相当于一个书桌。
ABC不是图灵完全的计算机。图灵完全将其与很多通用计算机区分开来,比如康拉德·楚泽的Z3计算机,或者更晚的计算机,如1946年的ENIAC、1949年的EDVAC、曼彻斯特大学的设计,以及艾伦·图灵于战后在英国国家物理实验室和其他地方的设计。而且,ABC也没有实现存储程序结构。如果实现的话,它将成为真正的全通用、可重新编程的计算机。
然而,这台计算机实现了三个关键思想,这些思想在现代计算机中仍然是一个组成部分:
另外,这套系统开创了对蓄热式电容内存的使用,今天它仍在DRAM中广泛使用。
ABC计算机的存储体是一对转鼓,每个转鼓包含1600个电容器,它们围绕着共同的轴旋转,每秒一圈。每个转鼓上的电容器被分为32个“带”(“band”)(30个是活跃的,另外两个是在有电容器坏掉的时候备用的),每个带上有50个电容器,从而使机器每秒种可完成30次加减操作。数据表示成50位定点二进制数。存储体和运算单元的电子器件能同时存储和操作60个这样的数(3000位)。
60赫兹的交流电频率是最低级别操作的主时钟速率。
算术逻辑单元是用真空管实现的全电子器件。逻辑门系列由不同器件组成,低到变频器,高到两到三个输入门。输入输出水平和工作电压在不同的门之间是兼容的。每个门由一个反向真空管放大器组成,由它前面的电阻分压器输入网络定义逻辑功能。控制逻辑功能是用中继器实现的机电器件,因为带每旋转一圈才需完成一次操作,不需要电子器件那样高的速度。
虽然ABC计算机是早期计算机器发展的重要一步,但是它在解决一整个问题的时候并不能完全自动地运行。需要有一个操作员操作控制开关来设置各种功能,很像当时的机电计算器和单元计算设备。选择要进行的操作、读取、写出、二进制和十进制数的相互转换,或者化简方程组,这些操作都要通过前面面板上的开关来完成,有些情况下需要操作跳线。
输入和输出的形式有两种:主要的用户输入输出和中间结果的输入输出。中间结果的存储机制允许大问题整个存储在存储体中。如果不使用中间结果的输入输出功能,可以解决的最大问题就是求解由两个方程式联立成的方程组。
中间结果是以二进制数的形式写到纸上的,实现方式是用静电修改1500个位置的电阻器来表示50位数(一个方程)中的30位。每张纸可以在一秒钟内完成读或写。这套系统的可靠性限制在了每100000次计算出现一个错误,这主要归因于对纸张的材料性质缺乏控制。根据回忆,解决方案是在写出的每个数上加上一个校验位。这个问题直到阿塔纳索夫离开大学进入战争相关工作的时候都没有得到解决。
主要的用户输入是十进制的,通过标准的IBM80列打孔卡完成;输出也是十进制的,通过前面的一个面板显示出来。
ABC计算机是为特定目的而设计的,就是求解线性方程组。它能求解多达29个方程组成的方程组,而这是当时的一个难题。这种规模的问题在约翰·阿塔纳索夫工作的物理学机构中已经很常见了。这台机器能够利用两个具有29个变量和一个常数项的方程,消掉其中一个变量。这个过程中需要重复地手动操作每个方程,最终得出消掉一个变量的方程组,然后再重复这个过程来消掉另一个变量,依此向下进行。
爱荷华州统计部门的负责人George W. Snedecor很可能是使用这台电子数字计算机解决现实世界数学问题的第一个人。他曾经向阿塔纳索夫提交过很多这种问题。
约翰·皮斯普·埃克特(John Adam Presper "Pres" Eckert)和约翰·莫齐利(John Mauchly)发明ENIAC,是第一个电子计算设备专利的获得者。约翰·莫齐利曾经在1941年测试过ABC计算机,并且莫齐利以前的学生艾萨克·奥尔巴赫指控说,这影响了莫齐利之后关于ENIAC的工作,虽然莫齐利拒绝承认。1967年,霍尼韦尔起诉斯佩里·兰特,试图推翻他们对于ENIAC的专利,声称ABC计算机是在先技术。1973年10月19日,美国明尼苏达地区地方法院宣布裁决,在霍尼韦尔对斯佩里·兰特的诉讼中发现,ENIAC专利是由约翰·阿塔纳索夫的发明所派生的。这个判决没有人提出上诉。
坎贝尔·凯利和Aspray总结说:
莫齐利对阿塔纳索夫的思想吸取到什么程度仍然是未知的,而且证据非常冗杂且相互矛盾。ABC计算机的技术相当温和,并且没有全部实现。至少我们能推断出,莫齐利看到了ABC计算机的潜在意义,导致他提出了一个类似的电子解决方案。
1973年10月19日,案件在法律上得到了解决,美国地方法院法官厄尔·拉尔森认为ENIAC的专利无效,判决说ENIAC从阿塔纳索夫-贝瑞计算机上继承了很多基础思想。法官拉尔森明确表示:“埃克特和莫齐利并非他们自己首先发明了自动电子数字计算机,而是继承了约翰·文森特·阿塔纳索夫的发明。”
当学校将地下室改造成教室的时候,原始的ABC计算机最终被拆掉了,而且所有的零部件(除了一个存储器转鼓)都被丢弃了。1997年,由埃姆斯实验室(位于爱荷华州校园)的约翰·古斯塔夫森领导的研究团队花费了35万美元,建造了一台能工作的ABC计算机复制品。现在,这台ABC计算机复制品永久展览于爱荷华州立大学达勒姆计算和通信中心一楼大厅。