in

霍华德·艾肯

霍华德·艾肯

关键点:
  • 霍华德·艾肯证明了一台机器可以被编程以在预定的操作顺序中执行一系列无误的命令。
  • 艾肯在世界范围内的讲座中阐述了计算机的重要性及其潜在用途,帮助获得了对计算机持续发展的支持。
  • 他的努力将计算机应用扩展到了数据处理领域,超越了数学问题。
  • 霍华德·艾肯在哈佛创办了世界上第一个计算机科学研究生项目。

霍华德·艾肯的mark计算机

在1936年或1937年初,哈佛大学医生霍华德·艾肯(参见霍华德·艾肯传记)开始计划制造一台自动计算机。这个想法产生于他为论文进行研究的过程中。论文的主题是空间电荷。不久之后,他的论文研究主要变成了解决非线性(微分)方程。当时唯一可用于数值解决类似问题的方法是使用电磁桌面计算器,而他所需的计算非常耗时。艾肯意识到计算工作可以机械化和编程化,不需要个人手动完成。他还意识到,计算机在解决科学领域、工程领域甚至社会科学领域的紧迫问题上将非常有用。

由于他充分意识到实现这样一台计算机需要大量金钱支持,他决定去美国最大的机械和电动计算器制造商之一——门罗计算机公司。1937年4月22日,艾肯向门罗公司的首席工程师乔治·查斯展示了他的计划,其中包括:

  • 四则运算的自动计算
  • 预定的顺序控制
  • 已安装或计算值的存储和记忆
  • 可以根据计算结果或符号自动响应的顺序控制,并提供机器内部所有活动的打印记录
  • 记录所有计算结果

查斯对他的项目表示了热情的支持,他向门罗的管理层提出了建议,坚信他们应该继续开发这个项目,尽管这将是一项昂贵的开发。他有远见和前瞻性地认识到,所提议的机器在公司未来的业务中将是无价之宝。但是,尽管首席工程师能够看到这一点,经过几个月的讨论,他的管理层完全拒绝了他的提议。

艾肯并不完全依赖继电器技术。他是查菲的学生,专门研究真空管和真空管电路,对这项技术有所了解。那么为什么mark i不是一个电子设备呢?答案是金钱。艾肯意识到,这将需要大量资金。当他向门罗寻求财务支持时,他准备用机械部件和继电器制造计算机。如果有一家电子公司感兴趣,它可能已经是电子设备了。最终,由于ibm愿意支付账单,它是由制表机部件制成的。

monroe的决定不支持aiken的项目无疑是一个打击,但aiken一定对chase对新机器的热情感到鼓舞。此外,正是chase建议aiken寻求哈佛大学的教授theodore brown的帮助,brown是ibm总裁thomas j. watson的亲密合作伙伴。因此,aiken成功地与ibm建立了联系。brown向ibm的高级工程师bryce推荐了aiken,后者批准了他的项目,并建议建造他的梦想机器。bryce的意见对ibm的决定至关重要,并获得了总裁watson对哈佛计算器项目的支持。

aiken准备了一份正式的提案,题为自动计算机的建议(见aiken的提案)。它占据了22页的双倍行距打印页,开头是对计算辅助工具的简要历史、babbage的引擎的讨论,提到了scheutz、wiberggrant的差分机,还简述了hollerith发明的打孔卡片制表、计数、排序和算术设备。已知,charles babbage的儿子henry babbage为第一台差分机组装了大约6个小型演示装置,其中一个他寄给了哈佛大学,这个aiken知道。后来他写道,看到这台机器时,“他感到babbage在过去亲自向他讲话”。

aiken还观察到,ibm制造的计算机使得全球各个工业企业的会计办公室能够每天完成babbage想要实现的事情。aiken接着谈到了数学和物理科学领域需要更强大的计算方法。

aiken概述了他的计算机的使用领域,包括理论物理、无线电通信和电视、天文学、相对论理论,甚至是快速发展的数学经济学和社会学。

aiken指定了四个设计特点,将普通的打孔卡片会计机和科学所需的计算机区分开来:

1. 用于数学的机器必须能够处理正负数,而会计机几乎完全用于处理正数问题。

2. 用于数学目的的计算机必须能够提供和利用多种超越函数(例如三角函数)、椭圆函数、贝塞尔函数和概率函数。

3. 对于数学来说,一台计算机在建立了一个过程后应该是完全自动化的。在计算一个函数在级数展开、公式求值或数值积分(求解微分方程)中的值时,一旦建立了这个过程,它必须无限期地继续下去,直到独立变量的范围通常通过连续的等步长覆盖。

4. 设计用于数学的计算机应该能够计算线而不是列,因为在数值求解微分方程时,计算一个值的结果将取决于之前的值。这实际上与现有的计算机评估函数的方式相反。

aiken得出结论,这四个特点就是将现有的打孔卡计算机(如ibm制造的计算机)转变为专门适用于科学目的的计算机所需的全部。

在提案的结论中,aiken估计机器将在约3秒钟内将一个三位数乘以一个八位数(不包括零)。将一个八位数乘以另一个八位数将需要约5秒钟。他建议有23个数字位置(小数点左边10位,右边12位,还有一个额外的位置表示正负号)。显然,他考虑的是固定而不是浮动的小数点。据报道,aiken后来说,他之所以有23个数字,是因为他打算重新计算行星轨道。aiken建议将计算结果以表格形式打印出来,然后通过光刻印刷来打印,从而消除手动从机器复制数字以及在打字、排版、校对和印刷类型的各个阶段出现的错误。

1938年初,艾肯开始在ibm进行调查研究,后来ibm与哈佛代表之间开始了正式的联系,但实际上直到1939年3月31日才最终拟定并签署了协议。ibm同意为哈佛建造一座自动计算设施,包括一系列适用于解决科学领域问题的自动数学计算机。这台机器被称为ascc(自动顺序控制计算器),但后来也被称为哈佛mark i。该设施于1939年5月在纽约州恩迪科特的ibm实验室开始建造,预计需要两年完成,但实际上建造过程耗时近五年。mark i于1943年1月在恩迪科特完成并解决了第一个问题。它随后被移至哈佛(见下方照片),并于1944年3月投入使用。1944年8月,ibm正式向哈佛赠送了这台机器。这台机器对ibm的总成本通常被估计为20万美元左右,这在当时是一笔巨额资金。

ibm的高级工程师克莱尔·莱克(clair lake)被指派负责监督该项目。弗朗西斯·汉密尔顿(francis hamilton)负责大部分实际决策,本杰明·德菲(benjamin durfee)负责实际的布线和组装。从1938年开始,艾肯在恩迪科特度过了漫长的周末和两个整个夏天,解释了机器需要执行的操作,并帮助设计了能让它执行命令的电路。在接下来的几年里,他还花了很多天时间在恩迪科特帮助将他的需求转化为机器的组件。很快就显而易见的是,尽管ibm的工程师们在将艾肯的理论规格转化为实际的机器现实方面非常有才华,精通电路和组件,但他们对数学知之甚少。他们实际上无法真正理解这台新机器被设计用来解决什么样的问题。

1941年4月,艾肯作为美国海军后备军官被召集入伍,因此他无法再定期访问恩迪科特。他指定了哈佛物理学研究生罗伯特·坎贝尔(robert campbell)在建造的最后阶段担任他的代理。1944年2月,当这台巨型计算机从恩迪科特拆卸并运送到哈佛时,坎贝尔发挥了重要作用,在物理研究实验室地下室的一间大房间内安装了这台机器。他全权负责机器,直到1944年春天艾肯被海军派往哈佛才接管工作,他还编写并运行了第一个问题。他还负责解决所有最初的错误和不可靠性问题。

新机器的前两个问题是计算一些积分和表格。1944年5月,该机器移交给海军,成为艾肯指挥下船务局的官方部门。到了8月,马克i机器已经开始全面运行,拥有一支庞大的海军人员团队,其中包括一些军官,包括格蕾丝·霍珀和理查德·布洛赫,他们成为了首席程序员。有一个有趣的故事,就是格蕾丝·霍珀发现了第一台计算机的“bug”:一只死蛾子(见霍珀的笔记下方的照片),蛾子进入了马克i机器,并且蛾子的翅膀挡住了纸带上的孔洞的读取。自从1889年以来,“bug”一词已被用来描述缺陷,但霍珀被认为是创造了“debugging”一词,用来描述排除程序错误的工作。

第一个“bug”

1944年和1945年,马克i机器几乎连续运行,每天24小时,每周7天。该机器被要求解决的战时问题包括与保护船只免受磁性地雷损害有关的磁场研究以及雷达设计和使用的数学方面。毫无疑问,最重要的战时问题是由约翰·冯·诺伊曼从洛斯阿拉莫斯带来的计算爆炸问题。一年多后,员工才得知这些计算与原子弹的设计有关。由于计算机的出色性能和积压的工作量,海军在1945年初要求艾肯设计和建造第二台这样的机器。艾肯履行了这个要求。它被称为马克ii。

马克i是巨大的,宏伟的景象,高2.5米,长16米,深近1米。它重达五吨,包含760,000个零件,使用530英里的电线和3,000,000个电线连接,3500个多重继电器,带有35,000个触点,2225个计数器,1484个十极开关。依靠ibm为统计和会计商业机器开发的技术,它使用传统的ibm零件,如电磁继电器、计数器、凸轮接点、打孔卡片机和电动打字机,但也融入了新设计的元素,包括以前从未在ibm机器中使用的继电器和计数器。这些部件更小、更快。输入采用打孔纸带,输出是一系列打孔卡片或来自标准ibm电动打字机的打印输出。

马克i的操作是由一根长而水平的连续旋转轴驱动的,发出的嗡嗡声被形容为巨大缝纫机的声音。轴每秒旋转3次左右。该机器的存储和计算设备的字长为23位小数,第二十四位留给代数符号。计算以固定小数点的十进制数进行。

程序中的典型编码行将指示机器从给定输入寄存器(常量或存储中的数字)中取出数字,并将其输入存储器中的某个指定寄存器。如果该寄存器中已经有一个数字,新数字将被加到其中。程序通过打孔纸带输入到机器中。程序员首先将问题简化为一系列数学步骤,然后使用“代码书”(说明每个位置和每个操作的指定)将每个步骤转换为必要的编码或指令。这些指令本质上是单地址指令。后来为mark i编写程序的人回忆说,这个过程非常像后来使用机器语言编程的计算机。通过代码书准备好程序后,程序员将信息传递给操作员,由操作员打孔适当的纸带。还有一个特殊的接触板,可以改变计算机模块之间的连接,实现一种硬编码的逻辑重编程。

该机器由7个基本模块组成,从左到右排列(参见上图),如下:

1.两个部分,每个部分有60个用于输入数值数据(出现在任何代数或微分方程中的常数)的寄存器,每个寄存器包含24个拨动开关,对应23个数字和1个符号(加/减号)。每个这60个寄存器的位置都分配了一个编号,因此指令可以使用该位置来识别在计算过程中调用的数字。对于任何问题,这些寄存器必须手动设置(见附近的照片)。

2.七个部分,包含72个额外的寄存器(称为累加器,因为它们不仅可以存储数字,还可以进行加法和减法,实际上减法是通过加法来实现的)。每个寄存器由24个电磁计数轮组成,可以容纳23位数字,并预留一位符号位。这第二组面板既包括存储器或存储器,又包括处理单元。加法和减法需要1个机器周期(约330毫秒)。70个累加器是通用的,2个是特殊用途的,最后一个累加器非常有趣,可以执行类似条件运算符(在比较两个数字后)。然而,更强大的条件运算符是在1945年之后添加到mark i上的,当时添加了第二个用于命令的纸带阅读器。

3.三个带有算术(乘法和除法)设备的部分。乘法和除法有单独的设备。

4.两个带有功能计数器的部分。它们维护函数插值和对数、三角函数和打印。

5.三个带有插值器的部分,每个部分都有单独的纸带阅读器(见附近的照片),用于读取函数的数据。

6.一个用于序列控制的部分。它在问题解决过程中维护机器的工作。

7. 在最右边的部分是电动打字机、用于指令的磁带阅读器和打孔机。打字机打印问题的最终解决方案。打孔机自动打孔带有数据的卡片。磁带有24列(即一行上的24个孔)。一行数据需要4行(23个数字位置和每个数字的1个符号,每个位置需要4个孔,24×4=96)。有四个磁带阅读器。其中一个用于将指令输入机器,其他三个保存了函数表格,并在需要时提供值。还可以插入磁带上给定的值。因此,内置了“子程序”(aiken的称呼),可以在输入存储器之前通过某个内置函数(如正弦、指数、对数或乘方)将数字转换为某个数字。

指令的编码需要1行磁带,可以分为3个部分(每个部分8个位置)。第一部分(所谓的“out-field”)指定从哪个寄存器中获取操作数。第二部分(“in-field”)指定结果的去处。第三部分(“op-field”)指定操作码,如果有必要(例如,对于加法和减法,这是不必要的,因为累加器默认是加法的)。8个孔足够(2的8次方=256)用于寻址所有可寻址设备,包括72个累加器、60个常量寄存器、打字机、打孔机等)。

乘法不是像大多数机械计算器那样通过连续加法来执行的,而是使用了巴贝奇很久以前提出的一种机制——当乘法设备读取被乘数时,它立即计算其与1到9的九个乘积,并将它们写入累加器。然后它读取乘数,并逐个从累加器中读取适当的乘积,并进行相加,左移以表示十位、百位等。

虽然在许多方面与后来的机器相似,但mark i具有一项今天的顺序程序计算机所没有的功能:如果您没有明确告诉mark i继续执行下一条指令,它就会停止。程序员必须在每个指令之后输入一个七,以指示计算机继续进行。如果机器没有收到该信号或其他自动信号,它就会停在那里,等待指示。从某些观点来看,这是一个巨大的优势;例如,它对于逐步调试非常有帮助。mark i是唯一一个包含这个功能的顺序程序计算机。

首席程序员dick bloch在一本笔记本中记下已经过验证的并已知为正确的代码片段。他的一个例程计算了10位小于π/4的正角度的正弦值。格蕾丝·霍珀(grace hopper)在知道它符合她的要求时,只需将bloch的例程复制到自己的程序中。这种做法最终使程序员们能够摒弃正弦、对数和指数单元。bloch和bob campbell都有一本本满满的这样的代码片段的笔记本。多年后,程序员们意识到他们正在开创子程序的艺术,并实际上开发了构建编译器的可能性。

二战后,mark i在哈佛大学继续工作了14年,直到1959年最终退役,期间它还在哈佛为学生们提供了帮助,艾肯在哈佛创办了一个先驱性的计算机科学项目,为本科生和研究生提供了硕士学位或博士学位的课程。许多计算机界的重要人物是在harvard mark i上接触这门学科的。

回顾起来,mark i最大的意义可能在于它引人注目的公开演示,表明一台大型机器实际上可以根据程序执行自动的计算序列,而且能够无误地执行。然而,mark i并没有像一台机器那样影响后来的计算机技术,因为它的计算元素是由电磁继电器而不是真空管制成的,而真空管是eniac使用的。因此,它并不符合计算机未来的发展方向。

由于mark i使用的是机械和继电器技术,因此速度非常慢。它的计算速度比传统的计算方法要快,但远不及之后即将推出的机器,比如eniac。加法或减法需要一个机器周期,大约需要0.3秒。乘法需要20个周期,约6秒,而除法可能需要多达51个周期,超过15秒。由于这个原因,后来的模型使用倒数的乘法来处理除法。

虽然mark i的速度很慢,但它不仅是可以编程的,而不是为每个问题进行硬连线,而且也非常灵活。而eniac在最初的设计中受到计算弹道表的限制,而mark i可以适应各种各样的程序。

艾肯在哈佛还建造了另外三台机器。mark ii和mark i一样,使用继电器作为操作部件;mark iii在使用磁鼓存储器和一些固态元件以及真空管方面进行了创新。mark iv具有磁芯存储器,是全电子的,使用硒固态器件和后来的锗制造的器件。

mark iii的一个不寻常的特点是它的自动编码机。这个装置有一个巨大的按键阵列,对应着存储在其中的各种子程序。例如,如果一个程序员需要找到一个数字的正弦值,他或她只需要按下正弦键,整个正弦例程就会自动输入到程序中。正如格雷斯·霍珀回忆说:“换句话说,mark iii拥有今天被称为编译机的东西。通过这个非凡的键盘,你基本上可以按照数学符号非常相似的形式输入你想要运行的程序。”显然这是唯一一台这样的编码机。

然而,这些机器并没有在二战后的计算机体系结构的发展中起到引领的作用。一个原因是艾肯坚决反对将指令和数据放在同一个存储器中,这成为二战后计算机的一个核心特性。

艾肯的重要性和影响是什么?这可以归结为四个主要成就。首先,他证明了可以制造一台机器,可以被编程以按照预定的操作顺序执行一系列命令,而不出错。在mark i的启用仪式上引起了广泛的关注,向世界宣告了计算机时代的开始。

其次,艾肯在全球范围内关于计算机重要性和潜在用途的讲座对于获得计算机发展的支持非常重要。第三,他将计算机应用于数据处理,不仅仅是数学问题,还包括为电力和燃气公司进行计算机计费和会计等。

最后,他在哈佛大学建立了世界上第一个完整的计算机科学研究生项目,这成为其他大学计算机科学项目的模板。艾肯学生的名单令人惊讶。其中包括ibm system/360的两位首席设计师以及一些现任和前任计算机科学系主任。其他在艾肯身下接受培训或见习的人包括编译器和某些计算机语言的先驱格雷斯·霍珀,以及以他的名字命名的计算机公司的创始人汪安等许多欧洲人,他们来到艾肯的哈佛计算机实验室工作,并学习计算机的艺术和科学。

一些计算机历史学家认为,作为大学课程和研究项目中合法且受认可的计算机科学的建立,可能比艾肯所做的任何事情都更加重要。他拉开了计算机时代的序幕,然后用一些最杰出的人物填满了舞台。这样做,他建立了一个比任何单一机器更持久的铜像。他是一位真正的计算机先驱。

Written by 小竞 (编辑)

他们称呼我为小竞, 做作为河小马的助理有5年时间了,作为jingzhengli.com的编辑,我关注每天的科技新闻,帮你归纳一些现有科技以及AI产品来提升你的生产力,拥抱AI,让科技和AI为我们服务!