回首辉煌:计算机的诞生与发展_互动科普

使用社交账号登录

购买价格:
付款方式:

互动科普

主页 > 科普纵览 > 信息 • 能源

回首辉煌:计算机的诞生与发展

admin  发表于 2017年12月03日

按照正统说法,电脑创造了一段简短而辉煌的历史。二战时期,实验室里的一些庞然大物堪称最早的计算机。微芯片使它们迅速瘦身,可以放在桌面上。摩尔定律(Moore’s Law)预言了电脑能力将变得多强,微软则凭借软件“统治”全球。最终,我们看到的就是无数小巧便宜,既能炒股、又可把视频发送到全球任意角落的装置。这是看待计算史的一种方式,但它反映的,仅仅是过去60年间固态电子学(solid-state electronics)的发展史。

早在晶体管(transistor)问世之前,计算术的概念就已经存在了。古代天文学家研究出了种种方法来预测天体的运动。希腊人则推算出了地球的形状和大小。统计捐税,测绘距离,都离不开计算。不过,计算始终是人从事的活动。正是算术这种跟读书写字并列的本领,帮助我们解读周围的世界。

摆脱人工计算的局限性之后,人类便进入了计算时代。首先亮相的是加法机 (adding machine)和现金出纳机(cash register);但是,如何运用“程序”来组织安排数学计算,这方面的探索同样具有重要的意义。“程序”的概念诞生于19世纪30年代,这比传统观念中电脑诞生的日期早了一个世纪。二战中脱颖而出的现代电子计算机带来了通用计算机的构想,这种机器能够进行任何一种信息处理工作,包括处理它自己的程序。它们就是今天在世界上大显神威的各种电脑。不过,即便计算机技术看上去已经无处不在、无所不能,研究人员仍在尝试运用从人类思维、生物系统及量子力学获得的各种新认识,来打造全新的计算机。

 

差分机

回首辉煌:计算机的诞生与发展 (1).png

18世纪90年代,拿破仑(Napoleon Bonaparte)就提出法国需要一套新地图用于建立公平的财产税征收制度。此后,他还下令放弃英制度量衡,改用新的公制度量衡。为了帮助工程师和数学家适应这一转变,测绘部门还请人编制了一套新的数学用表。

然而,在18世纪,计算是用手工进行的。60~80名计算员聚集在一个“车间”里不停地对数字加来减去,把结果一行一行地填进测绘部门“土地测量与估价表编写工程”(Tables du Cadastre Project)的表格中。这是一项简单而枯燥的工作,只要会识数认字,有最起码的计算能力就干得下来,无须任何专业技能。其实,大多数计算员都是丢了饭碗的美发师——在大革命时期的法国,想弄个时髦的贵族发式,可是要冒生命危险的。

这项工程持续了10年左右才告完成。不过到那时,被战争搞得百孔千疮的法国已经没有足够的经费来公布结果了。工程原稿被丢在法国科学院里,无人问津。直到1819年,一位名叫查尔斯·巴比奇(Charles Babbage)的英国青年数学家在一次巴黎之行中看到了这份原稿。那一年巴比奇28岁,而在3年前,他当选为英国最高水平的科学团体——皇家学会的会员。巴比奇对“人工计算机”的情况也了如指掌,因为他曾数次亲自主管天文和保险制表工作。

回到英国后,巴比奇决定仿效法国搞一项工程,但不是靠计算员,而是靠机器。当时,工业革命已经给英国社会带来了巨大的变革,高效的机器大量取代了人力或畜力。目睹了机械化的神通,巴比奇意识到机器不但可以代替人的体力,还能代替人去干智力活儿。

回首辉煌:计算机的诞生与发展 (2).png

1822年,他提议建造“计算机器”(Calculating Engine),并于1824年获得政府资助。接下来的10年里,他完全沉浸在机械制造的世界中,努力寻求用最好的技术来建造他的机器。

1833年是巴比奇的奇迹之年。这一年他不仅制出了一台可以工作的计算机(他称为“差分机”,即Difference Engine),还发表了《机械和制造工业经济学》(Economy of Machinery and Manufactures)这部经典著作,确立了工业经济学界领军人物的地位。周末他常在伦敦多塞特街的家中举办沙龙,邀请社会各界精英参加。在这些聚会上,原型差分机常被拿出来展示,成为大家议论的话题。

一年后,巴比奇放弃了差分机,转而投身于一项更宏大的梦想——打造他所谓的“分析机”(Analytical Engine)。差分机仅限于完成单一的表格编制任务,而分析机却是个多面手,能够搞定任何数学计算。与今天的电脑一样,分析机也有一个执行算术运算的处理器(即“机关”,mill)和一个保存数字的存储器(即“仓库”,store),还能够通过用户的输入(在当时,用户通过穿孔卡完成输入)改变功能。简而言之,它堪称“维多利亚时代的计算机”。

但巴比奇不待差分机完成就将它淘汰出局的决定,却不被大家看好,政府也不愿继续为他出钱了。不过巴比奇却知难而进,编写了几千页的详尽说明和机器图纸,期望政府有朝一日会为机器的建造提供赞助。但直到20世纪70年代,人类已经进入电脑时代多年后,才有若干学者首次仔细研究了这些资料。据其中一位学者说,分析机看起来简直就像外星人设计的现代计算机一样。

 

黑暗时期

回首辉煌:计算机的诞生与发展 (3).png

巴比奇的梦想其实就是数字计算。同今天的电脑相仿,这样的机器根据一系列指令处理数据,并得出精确的数字结果。

在巴比奇铩羽而归之后,计算史进入了所谓的“数字计算的黑暗时期”[英国数学家L·J·科姆里(L. J. Comrie)语],一直持续到第二次世界大战。在这段时期中,机器计算主要是用所谓的模拟计算机来完成的。这类装置通过机械上的类比来模拟一个系统。假定我们想要预测日食的时间。为了用数字方法完成这一任务,就必须通过数值计算求解开普勒运动方程。在数字计算机出现之前,完成这项任务的唯一可行途径便是由计算员手工计算。(从19世纪90年代到20世纪40年代,哈佛天文台便组建了一支女子计算员小组。)当然我们也可以建造一台模拟计算机,即用齿轮和杠杆构建一个太阳系模型,它可以让时间“跑”进未来,从而预测将会发生的日食(参见第52页框图)。

第二次世界大战之前,最重要的模拟计算工具是万尼瓦尔·布什(Vannevar Bush)1929年在美国麻省理工学院研制的微分分析仪(Differential Analyzer)。当时美国正投入巨资推进农村电气化,布什则在研究电力传输的问题。这类问题可以用常微分方程(ordinary differential equation)来归纳,但求解这种方程需要花费太多时间。使用微分分析仪,无须进行任何数字处理便可以得到近似解。此机器体积巨大,占据了整整一间实验室,由众多齿轮和转轴构成,看上去有点小题大做了。为了给这台机器“编程”,研究人员需要用起子、扳手和铅锤等工具把它的各个部件连接起来。虽然初始设置有些麻烦,不过一旦设置好,它便可以在几分钟内解出手工计算需要几天才能搞定的方程。美国和英国曾复制了十几台这种机器。

回首辉煌:计算机的诞生与发展 (4).png

有一台复制品陈列在美国马里兰州的陆军阿伯丁武器试验场,该试验场的任务是准备好野战武器以便随时使用。要瞄准已知距离上的目标,炮兵必须设定炮管在垂直和水平方向上的角度(即仰角与方位角),这样一来,射出的炮弹就将沿着预定的抛物线轨道前进,先是飞向天空,然后落到目标上。炮兵利用射表(firing table)来确定角度,此表根据不同的目标距离和操作条件列出了众多角度值供炮兵选择。

射表内的每一项角度值都需要对一个常微分方程进行积分(integration)。手工计算的计算员需要2~3天才能完成一项计算任务,而用微分分析仪仅需大约20分钟。

 

世事无常

1941年12月7日,日军偷袭美国珍珠港海军基地。美国进入战争状态。战争就意味着军队需要的射表与日俱增,而每张射表内约有3,000项数值。即使有微分分析仪助阵,阿伯丁试验场内积压的计算任务仍有增无减。

回首辉煌:计算机的诞生与发展 (5).png

从阿伯丁试验场往北行驶约130千米,便来到了美国宾夕法尼亚大学莫尔电气工程学院,它也有自己的微分分析仪。1942年春,该学院一位35岁的讲师约翰·W·毛赫利(John W. Mauchly)想出了一条妙计来加快计算速度:建造一台以真空管(vacuum tube)取代机械部件的“电子计算机”。毛赫利是一位偏重理论的人才,他发现他与该校一位干劲十足的青年研究人员J·普雷斯帕·埃克特(J. Presper Eckert,昵称“普雷斯”)正好可以结为一对互补的搭档,因为后者身上已经闪耀出高超精湛的工程技术天赋。

毛赫利提出的立项申请,经过繁琐的审查手续,再加上一些意外的延误,花了一年时间,终于转到了赫尔曼·戈德斯坦中尉(Herman Goldstine)手上。戈德斯坦时年30岁,是一位来自美国芝加哥大学的数学博士,担任阿伯丁试验场与莫尔学院之间的技术联络官。不出几天,他就拿到了这个项目的通行证。此项目被命名为“电子数字积分计算机”(Electronic Numerical Integrator and Computer,ENIAC),建造工作始于1943年4月9日,而这一天恰好是埃克特的23岁生日。

许多工程师严重质疑ENIAC的前景。按传统观点来看,一只真空管的寿命约为3,000小时,而ENIAC最初的设计要用5,000只真空管。按这样的故障率计算,ENIAC启动之后要不了几分钟,就会因真空管故障而停止工作。但是埃克特明白,真空管在反复开关的情况下才更容易出故障。他知道,正是由于这一原因,无线电台从来不关掉发射管。如果真空管在远低于额定值的电压下工作,它们的寿命还会更长。(到ENIAC竣工时,真空管总数已增加到18,000只之多。)

埃克特的团队在两年半的时间里完成了ENIAC的建造工作。ENIAC堪称一件工程技术杰作,这个庞然大物重达30吨,耗电量为150千瓦。它每秒可进行5,000次加法运算,计算出一条弹道所用的时间比炮弹从发射到击中目标所用时间还少。ENIAC的例子也充分说明,运气对于技术发明往往起着关键作用:虽然莫尔学院当时算不上顶尖的计算学研究机构,但它集天时、地利、人和于一身,因而大功得成。

不过,ENIAC直到1945年才告建成,未能在战场上助美国一臂之力。它的性能也相当有限,比如一次最多只能存储20个数字。研究人员为ENIAC编程要花好几天的时间,还要进行复杂的布线工作,各种颜色的线缆仿佛让人觉得置身于一间忙得不可开交的电话交换机房。此外,ENIAC的设计用途是求解常微分方程,而有些问题,特别是曼哈顿计划(Manhattan Project,参见环球科学小词典)所需的计算,却是求解偏微分方程(partial differential equation)。

1944年夏,担任曼哈顿计划顾问的约翰·冯·诺依曼(John von Neumann)在造访阿伯丁试验场时听说了ENIAC的事情。冯·诺依曼于1903年生于一个富有的匈牙利银行家家庭。这位数学神童很短时间内就完成了学业,23岁时便已成为柏林大学有史以来最年轻的编外讲师 (大致相当于副教授)。1930年,冯·诺依曼移居美国,与爱因斯坦、库尔特·哥德尔(Kurt Godel)等人一起,成为新泽西州普林斯顿高级研究所的首批研究人员。1937年加入美国国籍。

冯·诺依曼很快意识到了电子计算的威力。在阿伯丁之行后的几个月内,他与埃克特、毛赫利、戈德斯坦以及亚瑟·伯克斯(Arthur Burks,也是莫尔学院的讲师)多次会晤,敲定了后继计算机的设计方案,取名为“电子离散变量自动计算机”(Electronic Discrete Variable Automatic Computer,EDVAC)。

与ENIAC相比,EDVAC有了巨大改进。冯·诺依曼引入了沃伦·麦卡洛克(Warren McCulloch)以及沃尔特·皮茨(Walter Pitts)所开创的概念和术语[这两位神经科学家建立了大脑逻辑运算的理论,电脑“存储器”(memory)这个术语也源于此。] 同冯·诺依曼相仿,麦卡洛克和皮茨也曾受英国数学家阿兰·图灵(Alan Turing)在20世纪30年代后期所做理论研究工作的影响。图灵证明,一台简单的机器就可以完成众多复杂任务。在这一时期,计算学界出现了一次集体性的观念革命——计算机不再被视为单纯的数学工具,而是可以完成各种信息处理任务的全能型机器。

冯·诺依曼认为,计算机应该有5大核心部分:存储器(它不仅保存数据,而且也保存运算指令)、运算单元(负责执行计算)、输入系统(负责把程序和数据传送到存储器中)和输出系统(负责记录计算结果),最后是控制单元(负责协调计算机的运行)。

有了这种布局(或架构),我们无须调整计算机的物理结构,也能改变计算机的程序。此外,程序还能处理它自己的指令。这一特性不仅使冯·诺依曼能够求解他的偏微分方程,也赋予了计算机极大的灵活变通的空间,而这正是计算机科学的核心所在。

1945年6月,冯·诺依曼代表团队起草了《关于EDVAC的报告初稿》(First Draft of a Report on the EDVAC)这篇经典文献。虽然还不是定稿,但这篇文章迅速在计算学家中流传开来,于是就有了下面两个结果:第一,只有初稿,没有二稿;第二,大部分功劳最终归于冯·诺依曼。

 

机器革命

随后的60年里,计算机在全球普及开来。这段故事就说来话长了,得另外写篇文章。这其中最值得注意的进展或许就是,当初只是用来进行数学计算的电脑原来无所不能——无论是商务数据处理还是个人计算,再到全球信息网络的建立,处处离不开电脑。

我们可以认为电脑的进化是沿着三个方向展开的——硬件、软件和架构。过去60年间硬件领域的进展堪称传奇。20世纪50年代后期,笨重的电子管让位于离散式晶体管,也就是一个一个分别焊接到位的晶体管。20世纪60年代中期问世的微电路是在一块硅芯片上集成几个晶体管,后来一块芯片可以集成数百个晶体管,甚至成千上万个晶体管。20世纪70年代初研制出来的微处理器在一块芯片上集成了完整的计算机处理单元。有了微处理器,个人电脑(PC)便诞生了。如今,小到喷洒灭火系统,大到弹道导弹,数不胜数的装置都靠微处理器来控制。

软件的挑战则更为棘手。1947到1948年间,冯·诺依曼和戈德斯坦撰写了一份系列报告,题为《用电子计算仪器求解问题的规划与编码》(Planning and Coding of Problems for an Electronic Computing Instrument)。在这些报告中,他们制定了几十个数学计算的求解规程,期望有某种低级的“编码器”能把它们转换为实用程序。但事情并不如他们所愿。编写程序并使之正常运行的难度之大,令人不寒而栗。最先意识到这一点的,是英国剑桥大学的计算机科学家、世界上第一台实用型存储程序式计算机EDSAC(参见第54页框图)的发明者莫里斯·威尔克斯(Maurice Wilkes)。在他的回忆录中,威尔克斯沮丧地提到了1949年他突生异想的那一瞬间:“我强烈地意识到,我余生中的好多日子,都将耗费在给自己的程序找错误上面。”

威尔克斯和剑桥大学的其他学者开发了一套以符号形式来编写计算机指令的方法,使整个工作变得更加简便,并且不易出错。计算机在接受这种符号语言后,将它转换为二进制代码。IBM在1957年推出了程序设计语言Fortran,它大大简化了科学与数学程序的编写。1964年,英国达特茅斯学院教育学家约翰·G·凯梅尼(John G. Kemeny)和计算机科学家托马斯·K·库尔茨(Thomas E. Kurtz)发明了Basic这种简单但功能强大的程序设计语言,意在促进计算科技的平民化,并把它推广到整个大学生群体中。有了Basic,甚至连中小学生也可以着手编写自己的程序,当年的比尔·盖茨便是其中之一。

相比之下,计算机架构(即构成计算机各子系统的逻辑布局)则鲜有进展。我们今天正在使用的电脑,基本逻辑架构都与1945年的存储程序型计算机如出一辙。这与烧汽油的汽车有异曲同工之妙,多年来它们都有无数技术改进,效率也在不断提高,但基本设计框架却大致不变。而且,尽管我们有可能对某款产品的性能做出里程碑式的提升,但电脑和汽车均已达到了技术史家们所谓的“封闭”状态:既然过去数十年中的投资已经带来了非常丰厚的收益,那么,谁还能提出令人信服的理由去投资开发一种替代产品呢?(参见第79页《内燃机》一文。)

不过,根本性的变革机遇却相当多。20世纪80年代,所谓的“大规模并行计算机”一度颇受青睐。这种计算机由数千个同时运行的计算单元构成,它的基本架构现今仍用于天气预报和核武器研究等计算密集型任务。计算机科学家也一直在研究人脑,希望从中获得启示。现在我们知道,大脑中有许多专门的处理中心,各自负责不同处理任务,例如面部识别和语音解读等。科学家正尝试把其中某些构想运用到“神经网络”中,以解决车牌辨认和虹膜识别等问题。

更天马行空的探索性研究则集中于用DNA之类的生命物质来建造计算机(参见《环球科学》2006年第6期《DNA计算机 深入细胞的医生》),以及把不可思议的量子现象运用到计算机中(参见《环球科学》2008年第4期 《量子计算机的极限》) 等等。50年后,电脑将变成什么样子,我们不得而知。说不定它们将神通广大得连创造它们的人类智力都望尘莫及。


全部评论

你的评论