现代计算机发展史 modern history of (B. Jack Copeland)

首次发表于 2000 年 12 月 18 日星期一;实质性修订于 2006 年 6 月 9 日星期五

在历史上,计算机是按照有效方法进行计算的人类职员。这些人类计算机所做的计算类型,现在由电子计算机执行,其中许多人被雇用在商业、政府和研究机构。从 20 世纪 20 年代开始越来越多地使用的术语“计算机”,指的是任何能够像人类计算机一样工作的机器,即按照有效方法进行计算的机器。在 1940 年代末和 1950 年代初,随着电子计算机的出现,“计算机”这个词逐渐简化为简单的“电脑”,最初通常带有前缀“电子”或“数字”。本文概述了这些机器的历史。


巴贝奇

查尔斯·巴贝奇(Charles Babbage)于 1828 年至 1839 年担任剑桥大学卢卡西安数学教授(该职位曾由艾萨克·牛顿担任)。巴贝奇提出的差分机(Difference Engine)是一种专用的数字计算机,用于自动生成数学表(如对数表、潮汐表和天文表)。差分机完全由机械部件组成,包括黄铜齿轮、杆、棘轮、小齿轮等。数字通过安装在列中的 10 齿金属轮的位置来表示十进制系统中的数值。巴贝奇于 1822 年展示了一个小型工作模型。他从未完成他设计的全尺寸机器,但完成了几个片段。其中最大的——完整计算器的九分之一——展示在伦敦科学博物馆。巴贝奇用它来进行严肃的计算工作,计算各种数学表。1990 年,巴贝奇的差分机 2 号(Difference Engine No. 2)最终根据他的设计建造,并在伦敦科学博物馆展出。

瑞典人乔治和爱德华·舒茨(父子)构建了巴贝奇的差分机的改进版本。总共制造了三台机器,一台原型机和两台商用机型,其中一台被卖给了纽约奥尔巴尼的一个天文台,另一台被卖给了伦敦的人口登记处,用于计算和打印精算表。

巴贝奇提出的分析机比差分机更为雄心勃勃,它本应是一台通用的机械数字计算机。分析机本应具有存储器和中央处理单元(或称“机器”),并且能够根据先前操作的结果选择不同的操作(这种功能现在被称为条件分支)。分析机的行为将由一套指令程序控制,这些指令程序存储在打孔卡片上,用带子连接在一起(这个想法巴贝奇从雅克卡织布机上采用)。巴贝奇强调了分析机的通用性,称“使有限机器能够进行无限计算的条件在分析机中得到满足”(巴贝奇 [1994],第 97 页)。

巴贝奇与拜伦的女儿、现代编程语言 ADA 的名字来源——阿达·洛芙莱斯密切合作。洛芙莱斯预见到利用分析引擎进行非数值计算的可能性,并暗示这台引擎甚至有可能创作出精致的音乐作品。

在巴贝奇于 1871 年去世时,一台分析引擎的大型模型正在建造中,但从未建造过全尺寸版本。巴贝奇关于通用计算引擎的想法从未被遗忘,特别是在剑桥,有时会成为战时政府密码与密码学校——布莱切利公园的用餐时讨论的热门话题,这里是电子数字计算机的诞生地。

模拟计算机

在广泛使用的最早的计算机并非数字化,而是模拟的。在模拟表示中,表示性媒介的属性模拟(或反映或模拟)所表示的事态的属性。(显然,数字表示中使用的二进制数字串并不是通过具有某种物理属性(如长度)来表示的,该属性的大小与所表示的属性的大小成比例变化。)模拟表示形成了一个多样化的类别。一些例子:在道路地图上,一条线越长,表示的道路就越长;在建筑师模型中,透明塑料方块的数量越多,所代表的建筑物中的窗户数量就越多;声纳深度计的音调越高,水就越浅。在模拟计算机中,数值量可以通过轴的旋转角度或电势差等来表示。因此,机器在某一时刻的输出电压可能表示被建模对象的瞬时速度。

正如建筑师模型的案例所表明的那样,模拟表示可能是离散的性质(不存在窗户的分数)。在计算机科学家中,术语“模拟”有时被狭义地使用,表示通过另一个连续值量来表示一个连续值量(例如,通过电压表示速度)。正如布莱恩·坎特韦尔·史密斯所指出的那样:

“‘模拟’应该是一个谓词,作用在一个结构与其所代表的结构相对应的表示上……连续的表示历史上被称为模拟,这可能暗示着在对我们重要的层面上,世界更基本上是连续的,而不是离散的。”(Smith [1991],第 271 页)

詹姆斯·汤姆森(James Thomson),开尔文勋爵的兄弟,发明了机械轮盘积分器,成为模拟计算的基础(Thomson [1876])。这两兄弟构建了一个用于计算两个给定函数乘积的积分器,并且开尔文描述了(尽管没有构建)用于积分任意阶线性微分方程和解决同时线性方程的通用模拟机。开尔文最成功的模拟计算机是他的潮汐预测机,直到 1960 年代仍在利物浦港使用。基于轮盘积分器的机械模拟设备在第一次世界大战期间用于炮击计算。战后,积分器的设计得到了汉尼拔·福特(Hannibal Ford)的大幅改进(Ford [1919])。

Stanley Fifer 报告称,1930 年之前,曼彻斯特的 Metropolitan Vickers 公司在英国建造了第一台半自动机械模拟计算机(Fifer [1961],第 29 页);然而,我迄今为止无法证实这一说法。1931 年,麻省理工学院的 Vannevar Bush 制造了差分分析仪,这是第一台大规模自动通用机械模拟计算机。Bush 的设计基于轮盘积分器。不久,他的机器的副本在世界各地使用(包括英国的剑桥大学和曼彻斯特大学,在那里,用套装 Meccano 组装的差分分析仪,这是曾经流行的工程玩具)。

需要一位熟练的机械师配备一把铅锤来为每个新工作设置布什的机械差分分析仪。随后,布什和他的同事们用电机械设备替换了轮盘积分器和其他机械部件,最终又用电子设备替代了它们。

一个微分分析器可以被概念化为一组连接在一起的“黑匣子”,以允许相当大的反馈。每个匣子执行一个基本过程,例如加法、将变量乘以一个常数和积分。在为特定任务设置机器时,匣子被连接在一起,以执行所需的基本过程集。在电气机器的情况下,通常通过将导线插入面板上的插座来完成这一操作(以这种方式确定功能的计算机器被称为“程序控制的”)。

由于所有的模块都是并行工作的,电子差分分析仪能够非常快速地解决一组方程。然而,必须权衡的是将问题转化为模拟机器所需的形式以及设置硬件来执行所需计算的成本。模拟计算的一个主要缺点是,与数字机器相比,提高精度的成本更高。在 1960 年代和 1970 年代,人们对“混合”机器表现出了相当大的兴趣,其中模拟部分由数字部分控制和编程。然而,这样的机器现在已经很少见了。

通用图灵机

1936 年,在剑桥大学,图灵发明了现代计算机的原理。他描述了一个抽象的数字计算机,由一个无限的存储器和一个扫描器组成,扫描器在存储器中来回移动,逐个符号地读取所找到的内容并写入更多符号(图灵 [1936])。扫描器的动作由存储在存储器中的符号形式的指令程序所控制。这就是图灵的存储程序概念,其中隐含着机器能够操作并修改自己程序的可能性。(1947 年在伦敦,在据所知的最早提到计算机智能的公开讲座中,图灵说,“我们想要的是一台能够从经验中学习的机器”,并补充说“让机器改变自己的指令的可能性提供了这一机制”(图灵 [1947] 第 393 页)。图灵 1936 年的计算机现在被简称为通用图灵机。剑桥数学家马克斯·纽曼指出,从一开始,图灵就对实际构建他所描述的这种计算机感兴趣(纽曼在与克里斯托弗·埃文斯的访谈中提到,见埃文斯 [197?])。

从第二次世界大战开始,图灵是布莱切利园政府密码与密码学校的主要密码分析员。在这里,他熟悉了托马斯·弗拉尔斯(Thomas Flowers)的工作,涉及大规模高速电子开关(如下所述)。然而,直到 1945 年欧洲战事停止,图灵才能着手建造电子存储程序计算机的项目。

在战时年代,图灵确实对机器智能的问题进行了深思。布莱切利园的同事回忆起与他关于这个话题的许多业余讨论,而图灵曾经传阅过一份打字报告(现已遗失),阐述了他的一些想法。其中一位同事唐纳德·米奇(后来在爱丁堡大学创立了机器智能与感知系)记得图灵经常谈论计算机可以从经验中学习,并通过搜索可能解决方案空间的方式解决问题,遵循经验法则指导(米奇在 1995 年接受科普兰采访时提到)。后来对这个想法的现代术语是“启发式搜索”,启发式是指任何经验法则原则,可以减少搜索量,以便找到问题的解决方案。在布莱切利园,图灵通过引用国际象棋来说明他对机器智能的想法。米奇回忆起图灵尝试使用后来在国际象棋编程中普遍使用的启发式方法(特别是极小化和最佳优先)。

关于图灵和计算机的更多信息,包括他在战时破解密码工作以及他对人工智能和人工生命的思考,可以在 Copeland 2004 中找到。

电机与电子计算

除了巴贝奇(Babbage)的纯机械引擎和手动操作的国家会计机(National Accounting Machine)等少数例外,早期的数字计算机都是电机械式的。也就是说,它们的基本组件是称为“继电器”的小型、电动的机械开关。这些继电器运行相对较慢,而电子计算机的基本组件——最初是真空管(电子管)——除了电子之外没有移动部件,因此运行极快。在第二次世界大战之前和期间,霍华德·艾肯(Howard Aiken)在哈佛大学、乔治·斯蒂比茨(George Stibitz)在贝尔实验室、图灵(Turing)在普林斯顿大学和布莱切利公园(Bletchley Park)、以及康拉德·祖斯(Konrad Zuse)在柏林等人建造了电机械式的数字计算机。祖斯因建造了第一台工作的通用程序控制数字计算机而受到赞誉。这台机器后来被称为 Z3,于 1941 年开始运行。(程序控制的计算机与存储程序计算机相对,通过重新连接电线、插头等方式为新任务设置。)

继电器对于大规模通用数字计算来说速度太慢且不可靠(尽管艾肯做出了英勇的努力)。是利用真空管开发高速数字技术使现代计算机成为可能。

对数字数据处理最早广泛使用真空管的工程师似乎是在伦敦的英国邮政研究站 Dollis Hill 工作的 Thomas Flowers。 Flowers 于 1934 年设计的电子设备用于控制电话交换之间的连接,于 1939 年投入运行,涉及三到四千只真空管持续运行。 1938 年至 1939 年,Flowers 致力于一种实验性的电子数字数据处理系统,涉及高速数据存储。 战后,Flowers 的目标是电子设备应取代现有的、不太可靠的继电器系统,并用于电话交换中。 Flowers 没有研究使用电子设备进行数值计算的想法,但他曾指出,在 1939 年与德国爆发战争时,他可能是英国唯一一个意识到真空管可以大规模用于高速数字计算的人。(有关 Flowers 工作的更多信息,请参见 Copeland 2006。)

阿塔纳索夫

美国最早使用真空管进行类似比较的似乎是由约翰·阿塔纳索夫在当时的爱荷华州立学院(现为大学)进行的。在 1937 年至 1942 年期间,阿塔纳索夫开发了使用真空管进行数字计算的技术。1939 年,在他的学生克利福德·贝里的协助下,阿塔纳索夫开始建造所谓的阿塔纳索夫-贝里计算机,或称为 ABC,这是一个用于解决线性代数方程组的小型专用电子数字机器。该机器包含大约 300 个真空管。尽管机器的电子部分运行成功,但整体计算机从未可靠地工作,因为不满意的二进制卡片阅读器引入了错误。1942 年,阿塔纳索夫离开爱荷华州时,工作被中止。

巨像

第一台完全运作的电子数字计算机是 Colossus,由 Bletchley Park 的密码分析员从 1944 年 2 月开始使用。

从战争的早期开始,政府密码破译学校(GC&CS)成功解密了通过恩尼格玛系统编码的德国无线电通信,到 1942 年初,每月约有 39,000 条拦截的消息得以解码,这要归功于图灵和戈登·韦尔奇曼设计的电机械机器,也被称为“炸弹机”。这些机器是在波兰密码分析员的早期工作基础上设计的。

在 1941 年下半年,开始拦截用一种完全不同的方法编码的消息。这台新的密码机,由布莱切利园区代号为“Tunny”,于 1942 年 4 月被破译,当年 7 月首次读取了当前的通信内容。基于二进制电传打字机代码,Tunny 被用于替代基于摩尔斯密码的恩尼格玛,用于加密高级信号,例如来自希特勒和德国高级指挥部成员的消息。

需要尽快解密这一重要情报的需求促使马克斯·纽曼于 1942 年 11 月提出(在从剑桥大学被招募到 GC&CS 之后不久),解密过程的关键部分应通过高速电子计数设备自动化。根据纽曼的规格设计和建造的第一台机器被称为希思·罗宾逊,采用继电器为基础,配备用于计数的电子电路。(电子计数器是由 C.E.温-威廉姆斯设计的,自 1932 年以来一直在剑桥卡文迪许实验室使用晶体管进行计数电路 [Wynn-Williams 1932]。)希思·罗宾逊于 1943 年 6 月安装,不稳定且速度缓慢,其高速纸带不断断裂,但证明了纽曼的想法的价值。弗拉尔斯建议改为建造一台全电子机器,但他未得到 GC&CS 的官方鼓励。在多利斯希尔的邮政研究站独立工作,弗拉尔斯默默地着手建造世界上第一台大规模可编程电子数字计算机。Colossus I 于 1943 年 1 月交付给布莱切利园。

在战争结束时,布莱切利园有十台 Colossi 机器日夜工作。从密码分析的角度来看,原型 Colossus I 和后来的机器之间的一个主要区别是所谓的特殊附件的添加,这是由密码分析家 Donald Michie 和 Jack Good 发现的关键。这扩大了 Colossus 的功能,从“轮子设置” — 即确定 Tunny 机器的编码轮子在特定消息中的设置,给定轮子的“模式” — 到“破解轮子”,即确定轮子的模式本身。轮子的模式最终由德国人每天在德国陆军总司令部和野战军集团指挥官之间的众多联系中更改。到 1945 年,总共有多达 30 个联系。其中约有十个被定期破解和阅读。

Colossus I 包含大约 1600 个真空管,而后续的每台机器大约有 2400 个真空管。与较小的 ABC 一样,Colossus 缺乏现代计算机的两个重要特征。首先,它没有内部存储程序。为了为新任务设置它,操作员必须改变机器的物理布线,使用插头和开关。其次,Colossus 不是一台通用机器,而是为特定的密码分析任务设计的,涉及计数和布尔运算。

F.H. Hinsley, GC&CS 的官方历史学家,估计欧洲战争由于在 Bletchley Park 进行的信号情报行动而缩短了至少两年,其中 Colossus 发挥了重要作用。大多数 Colossi 在敌对行动结束后被摧毁。一些电子面板最终被送到曼彻斯特的纽曼计算机实验室(见下文),所有关于它们原始用途的痕迹都已被清除。两台 Colossi 被 GC&CS(战争结束后更名为 GCHQ)保留。最后一台 Colossus 据信在 1960 年停止运行。

那些了解 Colossus 的人根据《官方机密法》被禁止分享他们的知识。直到 1970 年代,很少有人知道电子计算在第二次世界大战期间已成功使用。分别在 1970 年和 1975 年,Good 和 Michie 发表了关于 Colossus 的最基本概述的笔记。到 1983 年,Flowers 已经获得了英国政府的许可,发表了 Colossus I 硬件的部分描述。关于后来的机器、特殊附件的细节,以及 Colossi 的用途和它们运行的密码分析算法,直到最近才被解密。(有关 Colossus 的完整描述和对 Tunny 的攻击,请参见 Copeland 2006。)

对于熟悉 1936 年的通用图灵机以及相关存储程序概念的人来说,弗拉尔斯的数字电子设备机架证明了使用大量真空管来实现高速通用存储程序计算机的可行性。战争结束后,纽曼立即在曼彻斯特大学建立了皇家学会计算机实验室,就是为了这个目的。纽曼抵达曼彻斯特几个月后,他写信给普林斯顿数学家约翰·冯·诺伊曼(1946 年 2 月)如下:

我……希望在这里开始一个计算机部门,过去两三年对这类电子设备非常感兴趣。大约十八个月前,我决定尝试在出狱后开始一个机器单元。……我当然与图灵保持密切联系。

图灵的自动计算引擎

图灵(Turing)和纽曼(Newman)的思路相似。1945 年,图灵加入了伦敦国家物理实验室(NPL),他的任务是为科学工作设计和开发一台电子存储程序数字计算机。(人工智能离图灵并不遥远:他自称正在“构建一个大脑”,并在一封信中提到他“对于产生大脑行为模型的可能性更感兴趣,而不是对计算的实际应用感兴趣”)。图灵在 NPL 的直接上级约翰·沃默斯利(John Womersley)将图灵提出的机器命名为自动计算引擎(Automatic Computing Engine,简称 ACE),以向巴贝奇的差分机和分析机致敬。

图灵(Turing)1945 年的报告《拟议的电子计算器》首次相对完整地规定了一台电子存储程序通用数字计算机。该报告全文收录在 Copeland 2005 年的著作中。

美国首次提出的第一台电子存储程序数字计算机是 EDVAC(见下文)。 冯·诺伊曼撰写的《关于 EDVAC 的初稿报告》(1945 年 5 月)几乎没有包含工程细节,特别是关于电子硬件的部分(由于美国的限制)。 另一方面,图灵的《拟议的电子计算器》提供了详细的电路设计和硬件单元规格,机器码中的样本程序,甚至建造该机器的成本估计(11200 英镑)。 ACE 和 EDVAC 在根本上有所不同; 例如,ACE 采用分布式处理,而 EDVAC 具有集中式结构。

图灵看到速度和内存是计算的关键。图灵在 NPL 的同事吉姆·威尔金森观察到,图灵“着迷于机器速度的想法”[Copeland 2005, p. 2]。图灵的设计与今天的 RISC 架构有很多共同之处,并且需要一个与早期麦金塔计算机大致相同容量的高速内存(按当时的标准来看是巨大的)。如果图灵的 ACE 按计划建造,它将远远超越其他早期计算机。然而,由于 NPL 的组织困难,图灵的自动计算引擎的进展缓慢,1948 年,一位“非常沮丧”的图灵(罗宾·甘迪在与 Copeland 的采访中的描述,1995 年)离开 NPL,前往曼彻斯特大学的纽曼计算机实验室。直到 1950 年 5 月,由威尔金森、爱德华·纽曼、迈克·伍德格尔等人建造的自动计算引擎的小型试验机首次执行了程序。作为世界上速度最快的计算机,Pilot Model ACE 在一段时间内拥有 1 MHz 的运行速度。

DEUCE 的销售情况一片看涨,这与 NPL 主任查尔斯·达尔文爵士在 1946 年提出的“很可能……一台机器足以解决整个国家提出的所有问题” [Copeland 2005, p. 4] 的建议相矛盾。图灵 ACE 设计的基本原理被哈里·哈斯基(在底特律韦恩州立大学)应用于本迪克斯 G15 计算机(哈斌在与 Copeland 的访谈中,1998 年)。G15 可以说是第一台个人电脑;全球销量超过 400 台。DEUCE 和 G15 一直使用到约 1970 年。另一台源自图灵 ACE 设计的计算机 MOSAIC,在冷战时期对英国的防空起到了作用;其他衍生产品包括 Packard-Bell PB250(1961 年)。(关于这些早期计算机的更多信息请参阅 [Copeland 2005]。)

曼彻斯特机器

第一台通用存储程序电子数字计算机是在纽曼的曼彻斯特大学计算机实验室建造的。曼彻斯特“Baby”由工程师 F.C. Williams 和 Tom Kilburn 建造,并于 1948 年 6 月 21 日进行了第一次计算。这个微小的程序存储在阴极射线管的表面上,仅有十七条指令。这台机器的一个大型版本,配有图灵设计的编程系统,成为了世界上第一台商用计算机,即 Ferranti Mark I。第一台完工的机器于 1951 年 2 月安装在曼彻斯特大学;总共大约销售了十台,分别在英国、加拿大、荷兰和意大利。

图灵(Turing)和纽曼(Newman)在曼彻斯特的胜利中所作出的基本逻辑数学贡献被忽视了,如今曼彻斯特机器被人们记住的是威廉斯(Williams)和基尔本(Kilburn)的工作。事实上,纽曼在计算机发展中的作用从未得到足够的强调(也许是因为他非常谦逊地描述相关事件的方式)。

是纽曼(Newman)在 1935 年剑桥的一次讲座中向图灵介绍了直接导致图灵机概念的人:纽曼将构造过程定义为机器可以执行的过程(纽曼在与埃文斯的采访中提到)。由于对图灵工作的了解,纽曼对计算机械的可能性产生了兴趣,正如他所说的,“一种相当理论的方式”。直到 1942 年纽曼加入 GC&CS,他对计算机械的兴趣才突然变得实际,他意识到对 Tunny 的攻击可以被机械化。在建造 Colossus 的过程中,纽曼试图让弗拉尔斯(Flowers)对图灵 1936 年的论文产生兴趣——这是存储程序概念的发源地——但弗拉尔斯并没有对图灵晦涩的符号表示出太多兴趣。毫无疑问,到 1943 年,纽曼已经牢记着利用电子技术构建存储程序通用数字计算机的想法。

1946 年 7 月(皇家学会批准纽曼申请资金成立计算机实验室的月份),弗雷迪·威廉姆斯在马尔文的电信研究机构工作,开始了一系列关于阴极射线管存储的实验,这最终导致了威廉姆斯管存储器的诞生。威廉姆斯此前是一名雷达工程师,他解释了自己是如何开始研究计算机存储问题的:

一旦(德国军队)崩溃... 没有人会在意雷达,像我这样的人... 除非我们找到其他事情要做,否则我们将陷入困境。 计算机成为了热门话题。 我对它们一无所知,于是我抓住了存储问题并着手解决。(引自 Bennett,1976 年。)

纽曼了解到威廉姆斯的工作,并在曼彻斯特大学物理学朗沃西教授、也是大学中最有影响力的人物之一帕特里克·布莱克特(Patrick Blackett)的能力帮助下,对 35 岁的威廉姆斯被任命为曼彻斯特大学电工技术主席起到了关键作用。 (两人都是任命委员会的成员(基尔本在 1997 年接受科普兰采访时说)。)威廉姆斯立即让马尔文的助手基尔本调到曼彻斯特。用威廉姆斯自己的话来说,接下来的故事如下:

[Tom Kilburn] 和我在抵达曼彻斯特大学时对计算机一无所知。我们已经听说过足够的内容,以理解存储问题是什么,我们想要存储什么,我们已经实现了这一点,所以现在的关键是我们必须了解计算机的情况... 纽曼向我们解释了计算机的整个工作原理。 (F.C. Williams 在与 Evans 的访谈中 [1976])

在其他地方,Williams 明确提到了 Turing 的作用,并对他和 Kilburn 所接收到的解释进行了一些描述

Tom Kilburn 和我对计算机一无所知,但对电路了解很多。Newman 教授和图灵先生对计算机了解很多,对电子学几乎一无所知。他们牵着我们的手,解释数字如何可以存在于带有地址的房子中,以及如果这样做,它们在计算过程中如何被跟踪。 (Williams [1975], p. 328)

看起来纽曼一定在与威廉姆斯和基尔本的对话中使用了与他在 1948 年 3 月 4 日向皇家学会发表讲话时相同的措辞

Hartree 教授回忆说,现在正在制造的通用计算机的所有基本思想都可以在 Babbage 的分析机计划中找到。在现代,图灵独立引入了通用计算机的概念……现在在美国和这个国家制造的机器在某些一般方面都是相似的。有存储数字的设备,比如按照 2 的比例,使得每个数字在机器的某些位置或“房间”中以一排 40 个 0 和 1 的形式出现。……其中的某些数字或“字”被依次读取作为指令。在一种可能的机器类型中,一个指令由四个数字组成,例如 11、13、27、4。数字 4 表示“加”,当控制转移到这个字时,“房间”H11 和 H13 将连接到加法器作为输入,H27 作为输出。存储在 H11 和 H13 中的数字通过加法器,相加,和总和传递到 H27。然后控制转移到下一个指令。在大多数实际机器中,刚才描述的过程将通过三个单独的指令完成,第一个将 [H11](=H11 的内容)传送到中央累加器,第二个将 [H13] 加入累加器,第三个将结果发送到 H27;因此,每个指令只需要一个地址。……一台带有存储器、具有这种自动电话交换安排以及必要的加法器、减法器等的机器,在某种意义上已经是一台通用机器。(Newman [1948],第 271-272 页)

在解释了图灵的三地址概念之后(来源 1,来源 2,目的地,函数),纽曼继续描述了程序存储(“指令将按照一系列房屋 X1,X2,...的顺序排列”)和条件分支。然后,他总结道:

从这个高度简化的描述中,可以看出机器的基本内部部件首先是用于存储数字(也可以是指令)的存储器。其次是加法器、乘法器等。第三是用于选择“房屋”、将它们连接到算术器,并将答案写入其他指定房屋的“自动电话交换机”。最后,在任何阶段将控制移动到任何选择的指令,如果满足某种条件,则转移到正常顺序中的下一个指令。除此之外,必须有方法在开始时设置机器,并以可用形式提取最终答案。 (Newman [1948],第 273-4 页)

在 1972 年写的一封信中,Williams 详细描述了他和 Kilburn 从 Newman 那里听到的内容:

关于 1946 年中期左右,曼彻斯特大学的任命可能性出现了,我与已经对发展计算机可能性感兴趣并从皇家学会获得了 30,000 英镑资助的纽曼教授进行了交谈。由于他了解计算机而我了解电子学,合作的可能性是显而易见的。我记得纽曼给我们做了几次讲座,概述了计算机的组织方式,即通过房屋地址来识别数字,并将数字从这个地址逐个转移到累加器,其中每个输入的数字都会被加到已有的数字上。在任何时候,累加器中的数字都可以转移到存储器中的一个指定地址,然后清空累加器以供进一步使用。这些转移将通过一个存储程序来实现,该程序会按顺序执行一系列指令。列表中的有序进展可以被一个测试指令中断,该指令会检查累加器中数字的符号。之后,操作将从指令列表中的新点开始。这是我第一次了解计算机组织的信息。...我们的第一台计算机是这些原则的最简单体现,唯一的区别是它使用减法累加器而不是加法累加器。(Williams 写给 Randell 的信,1972 年;见 Randell [1972],第 9 页)

图灵在曼彻斯特的发展早期输入,由威廉姆斯在他上面引用图灵的参考中暗示,可能是通过图灵和威尔金森在 1946 年 12 月至 1947 年 2 月期间在伦敦举行的关于计算机设计的讲座(图灵和威尔金森 [1946-7])而进行的。这些讲座是由各种计划使用或建造电子计算机的组织的代表参加的。基尔本在观众席上(鲍克和乔尔达诺 [1993])。(基尔本通常说,当被问及他从哪里获得计算机的基本知识时,他记不得了(布赖恩·纳珀写给科普兰的信,2002 年);例如,在 1992 年的一次采访中,他说:“在 1945 年初到 1947 年初之间,在那段时间里,不知何故我知道什么是数字计算机……我从哪里获得这些知识,我毫无头绪”(鲍克和乔尔达诺 [1993],第 19 页)。)

无论图灵的讲座在启发基尔本方面起到了什么作用,可以肯定的是,曼彻斯特计算机的功劳——在当代文件中被称为“纽曼-威廉姆斯机”(Huskey,1947 年)——不仅归功于威廉姆斯和基尔本,还归功于纽曼,而图灵 1936 年的论文对纽曼的影响至关重要,同样重要的是 Flowers 的 Colossus 对他的影响。

第一个工作的人工智能程序是由克里斯托弗·斯特拉奇编写的跳棋程序,在曼彻斯特计算机机器实验室的 Ferranti Mark I 上运行。斯特拉奇(当时是哈罗学校的一名教师和业余程序员)在图灵的鼓励下编写了这个程序,并利用了后者最近完成的 Ferranti 程序员手册。(斯特拉奇后来成为牛津大学编程研究小组的主任。)到了 1952 年夏天,据斯特拉奇报道,这个程序可以“以合理的速度玩完整个跳棋游戏”。(斯特拉奇的程序为亚瑟·塞缪尔著名的跳棋程序奠定了基础。)第一个下棋程序也是由迪特里希·普林兹为曼彻斯特的 Ferranti 编写的;该程序于 1951 年 11 月首次运行。该程序旨在解决简单的两步将死问题,程序会检查每一种可能的走法,直到找到解决方案。图灵开始在 Ferranti Mark I 上编写他的“Turochamp”下棋程序,但从未完成任务。与普林兹的程序不同,Turochamp 可以玩完整的游戏(在手动模拟时),并且不是通过穷举搜索,而是在启发式指导下运行。

ENIAC 和 EDVAC

美国第一台完全运作的电子数字计算机是 ENIAC,由 J. Presper Eckert 和 John Mauchly 在宾夕法尼亚大学摩尔电气工程学院为陆军军械部门建造。ENIAC 于 1945 年完工,与早期的 Colossus 有些相似,但规模更大、更灵活(尽管远非通用)。ENIAC 的主要设计功能是用于计算炮兵瞄准所使用的表格。ENIAC 不是一台存储程序计算机,为了进行新的工作,需要通过插头和开关重新配置机器。多年来,人们一直认为 ENIAC 是第一台运作的电子数字计算机,只有少数人知道 Colossus 的存在。

1944 年,John von Neumann 加入了 ENIAC 小组。他在 1936 年至 1938 年间,图灵在普林斯顿大学期间,对图灵的通用机器产生了“兴趣”(Goldstine 的话,[1972],第 275 页)。在摩尔学校,冯·诺伊曼强调了存储程序概念对电子计算的重要性,包括让机器在运行时以有用的方式修改自己的程序的可能性(例如,为了控制循环和分支)。图灵 1936 年的论文(“论可计算数,及对判定问题的应用”)是普林斯顿大学高级研究院战后计算机项目成员的必读内容(Julian Bigelow 致 Copeland 的信,2002 年;另见 Copeland [2004],第 23 页)。Eckert 似乎在冯·诺伊曼加入 ENIAC 小组之前独立意识到,以及在之前,利用电子电路处理数据的速度的方法是将适当编码的指令放置在同样高速存储设备中,这些设备保存数据本身(见 Copeland [2004],第 26-27 页)。1945 年,当 ENIAC 仍在建设中时,冯·诺伊曼撰写了一份草案报告,前面提到过,阐明了 ENIAC 小组关于一种电子存储程序通用数字计算机 EDVAC 的想法(von Neuman [1945])。六年后,EDVAC 完成,但并非由其发起者完成,他们离开摩尔学校去其他地方建造计算机。1946 年在摩尔学校举办的关于拟议的 EDVAC 的讲座受到广泛关注,并极大地促进了新思想的传播。

冯·诺伊曼是一位备受尊敬的人物,通过他的著作和公开演讲,使高速存储程序数字计算机的概念广为人知。由于他在该领域的高知名度,人们习惯性地将电子存储程序数字计算机称为“冯·诺伊曼机”,尽管这在历史上是不恰当的。

洛斯阿拉莫斯物理学家 Stanley Frankel,与冯·诺伊曼和其他人一起负责机械化涉及原子弹设计的大规模计算,他在一封信中描述了冯·诺伊曼对图灵 1936 年论文重要性的看法

我知道约在 1943 或 1944 年,冯·诺伊曼非常清楚图灵 1936 年的论文的基本重要性...冯·诺伊曼向我介绍了那篇论文,并在他的敦促下,我仔细研究了它。许多人称赞冯·诺伊曼为计算机的“之父”(在现代意义上),但我确信他自己永远不会犯那个错误。也许他可以被称为助产士,但他坚定地向我强调,我相信也向其他人强调,这个基本概念归功于图灵,至少在巴贝奇没有预见到的情况下...当然,图灵和冯·诺伊曼也对这些概念的“实践归纳”做出了重要贡献,但我认为这些贡献在重要性上不可与引入和阐释计算机能够在其内存中存储其活动程序并在这些活动过程中修改该程序的概念相提并论。(引自 Randell [1972],第 10 页)

其他值得注意的早期计算机

其他值得注意的早期存储程序电子数字计算机包括:

  • EDSAC, 1949 年,在剑桥大学由莫里斯·威尔克斯建造

  • BINAC, 1949 年由埃克特和莫克利的电子控制公司在费城建造(关于 BINAC 是否真正运作存在不同意见).

  • Whirlwind I, 1949, 数字计算机实验室, 麻省理工学院, Jay Forrester

  • SEAC, 1950, 美国标准局东部分部,华盛顿特区,Samuel Alexander, Ralph Slutz

  • SWAC, 1950 年,美国标准局西部分部,加州大学洛杉矶分校数值分析研究所,Harry Huskey

  • UNIVAC,1951 年,Eckert-Mauchly Computer Corporation,费城(美国第一台商用计算机)。

  • IAS 计算机,1952 年,普林斯顿大学高等研究院,Julian Bigelow,Arthur Burks,Herman Goldstine,冯·诺伊曼等人(由于冯·诺伊曼发布了 IAS 机器的规格,它成为了一组被称为普林斯顿级计算机的机器的模型;IAS 计算机也对 IBM 701 产生了重要影响)

  • IBM 701, 1952, 国际商用机器公司的第一台大规模生产的电子存储程序计算机。

高速内存

EDVAC 和 ACE 提案都主张使用充满汞的管子,称为“延迟线”,用于高速内存。这种内存形式被称为声学内存。延迟线最初是为雷达中的回声消除而开发的;将它们用作内存设备的想法起源于摩尔学校的埃克特。这里是图灵的描述:

建议建立由汞…管组成的“延迟线”单元,每根长约 5 英尺,直径 1 英寸,与每端的石英晶体接触。在…汞中声速的情况下,延迟将为 1.024 毫秒。要存储的信息可以被视为 1024 个“数字”(0 或 1)的序列…这些数字将由相应的脉冲序列表示。数字 0…将由适当时间处的脉冲缺席来表示,数字 1…则由其存在来表示。这一系列脉冲由一个压电晶体印在线的末端,以超声波的形式传输下线,并由远端的晶体重新转换为变化的电压。这电压被放大到足以产生峰峰值约 10 伏特的输出,并用于对由时钟生成的标准脉冲进行门控。这个脉冲可以通过传输晶体再次馈送到线中,或者我们可以馈送一些完全不同的信号。我们还有可能将门控脉冲引导到计算器的其他部分,如果我们在那时需要该信息。当然,利用信息并不排除保留它的可能性。 (图灵 [1945],第 375 页)

汞延迟线存储器曾用于 EDSAC、BINAC、SEAC、Pilot Model ACE、EDVAC、DEUCE 和全尺寸 ACE(1958 年)。延迟线作为存储介质的主要优势是,正如图灵所说,延迟线已经是“一个正在运作的问题”(Turing [1947],第 380 页)。延迟线的基本缺点是随机访问是不可能的,而且,指令或数字从延迟线中出现所需的时间取决于它恰好位于线路中的位置。

为了最小化等待时间,图灵安排指令不是按照延迟线中的连续位置存储,而是按照程序员选择的相对位置存储,以便每条指令在所需的确切时间出现,只要可能的话。每条指令包含下一条指令位置的规范。这个系统后来被称为“最佳编码”。它是 ACE 设计的每个版本的一个重要特征。最佳编码使得编程变得困难且混乱,但在速度方面的优势是相当大的。由于最佳编码,Pilot Model ACE 能够在 3 毫秒内完成一个浮点乘法(Wilkes 的 EDSAC 需要 4.5 毫秒来执行一个固定点乘法)。

在前面提到的 Williams 管或静电存储器中,二维矩形二进制数字阵列存储在一种商用阴极射线管的表面上。数据访问是即时的。Williams 管存储器被应用于曼彻斯特系列机器、SWAC、IAS 计算机和 IBM 701,以及 Whirlwind I 中的一种改进形式的 Williams 管(直到 1953 年被磁芯替代)。

在大西洋两岸都开发了鼓式存储器,其中数据被磁性地存储在金属圆柱体的表面上。最初的想法似乎是埃克特提出的。鼓式存储器提供了相当大量的中速存储器,并用于补充高速声学或静电存储器。1949 年,曼彻斯特计算机成功地配备了鼓式存储器;这是由曼彻斯特工程师按照伦敦伯贝克学院的安德鲁·布斯开发的鼓模型构建的。

在电子计算早期历史中的最后一个重要事件是磁心存储器的发展。杰伊·福雷斯特(Jay Forrester)意识到磁心的磁滞特性(通常用于变压器)适合于实现一个三维固态阵列,其中包含随机访问存储点。1949 年,在麻省理工学院,他开始从经验上研究这个想法。福雷斯特早期对金属磁心的实验很快使他发展出了更优越的铁氧体磁心存储器。数字设备公司决定建造一台类似于旋风 I 的计算机,作为铁氧体磁心存储器的测试载具。内存测试计算机于 1953 年完成。(这台计算机在 1954 年被用于第一次神经网络模拟,由麻省理工学院林肯实验室的贝尔蒙特·法利(Belmont Farley)和韦斯利·克拉克(Wesley Clark)进行(参见 Copeland 和 Proudfoot [1996])。

一旦铁氧体磁芯存储器的绝对可靠性、相对廉价、高容量和长期寿命变得明显,磁芯很快取代了其他形式的高速存储器。IBM 704 和 705 计算机(分别于 1954 年 5 月和 10 月宣布)使磁芯存储器得到广泛应用。

Bibliography

Works Cited

  • Babbage, C. (ed. by Campbell-Kelly, M.), 1994, Passages from the Life of a Philosopher, New Brunswick: Rutgers University Press

  • Bennett, S., 1976, ‘F.C. Williams: his contribution to the development of automatic control’, National Archive for the History of Computing, University of Manchester, England. (This is a typescript based on interviews with Williams in 1976.)

  • Bowker, G., and Giordano, R., 1993, ‘Interview with Tom Kilburn’, Annals of the History of Computing, 15: 17–32.

  • Copeland, B.J. (ed.), 2004, The Essential Turing Oxford University Press

  • Copeland, B.J. (ed.), 2005, Alan Turing's Automatic Computing Engine: The Master Codebreaker's Struggle to Build the Modern Computer Oxford University Press

  • Copeland, B.J. and others, 2006, Colossus: The Secrets of Bletchley Park's Codebreaking Computers Oxford University Press

  • Copeland, B.J., and Proudfoot, D., 1996, ‘On Alan Turing's Anticipation of Connectionism’ Synthese, 108: 361–377

  • Evans, C., 197?, interview with M.H.A. Newman in ‘The Pioneers of Computing: an Oral History of Computing’, London: Science Museum

  • Fifer, S., 1961, Analog Computation: Theory, Techniques, Applications New York: McGraw-Hill

  • Ford, H., 1919, ‘Mechanical Movement’, Official Gazette of the United States Patent Office, October 7, 1919: 48

  • Goldstine, H., 1972, The Computer from Pascal to von Neumann Princeton University Press

  • Huskey, H.D., 1947, ‘The State of the Art in Electronic Digital Computing in Britain and the United States’, in [Copeland 2005]

  • Newman, M.H.A., 1948, ‘General Principles of the Design of All-Purpose Computing Machines’ Proceedings of the Royal Society of London, series A, 195 (1948): 271–274

  • Randell, B., 1972, ‘On Alan Turing and the Origins of Digital Computers’, in Meltzer, B., Michie, D. (eds), Machine Intelligence 7, Edinburgh: Edinburgh University Press, 1972

  • Smith, B.C., 1991, ‘The Owl and the Electric Encyclopaedia’, Artificial Intelligence, 47: 251–288

  • Thomson, J., 1876, ‘On an Integrating Machine Having a New Kinematic Principle’ Proceedings of the Royal Society of London, 24: 262–5

  • Turing, A.M., 1936, ‘On Computable Numbers, with an Application to the Entscheidungsproblem’ Proceedings of the London Mathematical Society, Series 2, 42 (1936–37): 230–265. Reprinted in The Essential Turing (Copeland [2004]).

  • Turing, A.M, 1945, ‘Proposed Electronic Calculator’, in Alan Turing's Automatic Computing Engine (Copeland [2005])

  • Turing, A.M., 1947, ‘Lecture on the Automatic Computing Engine’, in The Essential Turing (Copeland [2004])

  • Turing, A.M., and Wilkinson, J.H., 1946–7, ‘The Turing-Wilkinson Lecture Series (1946-7)’, in Alan Turing's Automatic Computing Engine (Copeland [2005])

  • von Neumann, J., 1945, ‘First Draft of a Report on the EDVAC’, in Stern, N. From ENIAC to UNIVAC: An Appraisal of the Eckert-Mauchly Computers Bedford, Mass.: Digital Press (1981), pp. 181–246

  • Williams, F.C., 1975, ‘Early Computers at Manchester University’ The Radio and Electronic Engineer, 45 (1975): 237–331

  • Wynn-Williams, C.E., 1932, ‘A Thyratron "Scale of Two" Automatic Counter’ Proceedings of the Royal Society of London, series A, 136: 312–324

Further Reading

  • Copeland, B.J., 2004, ‘Colossus — Its Origins and Originators’ Annals of the History of Computing, 26: 38–45

  • Metropolis, N., Howlett, J., Rota, G.C. (eds), 1980, A History of Computing in the Twentieth Century New York: Academic Press

  • Randell, B. (ed.), 1982, The Origins of Digital Computers: Selected Papers Berlin: Springer-Verlag

  • Williams, M.R., 1997, A History of Computing Technology Los Alamitos: IEEE Computer Society Press

Academic Tools

Other Internet Resources

computability and complexity | recursive functions | Turing, Alan | Turing machines

Copyright © 2006 by B. Jack Copeland <jack.copeland@canterbury.ac.nz>

最后更新于

Logo

道长哲学研讨会 2024