第一章 火种 蒸汽动力时代的梦想
我希望蒸汽动力能够进行各种数学计算。
——19世纪发明家查尔斯·巴比杰
个人计算机是刚刚过去的20世纪70年代中期问世的,然而它的起源却可以追溯到50年代的巨型电子“计算装置”,甚至早在19世纪的小说中就提出了“会思考的”机器的说法。难道机器真的能够在程序的控制下进行思考吗?对于一两个世纪前的知识分子来说,这真是个大胆而令人惊叹的设想。
英国诗人拜伦和雪莱非常关注科学技术给人类生活带来的变化。在一个大雨滂沱的夏日,他们在瑞士谈论起人造生命和人造思维的问题,他们想,能不能“人工制造人体的器官,将它们组装在一起,并使之具备生命的活力。”雪莱的夫人玛丽·雪莱根据他们谈话的思路,在她的著名小说《弗兰肯斯坦》中塑造了一个人造生命的怪物,向蒸汽时代的读者展示了一个惊心动魄的寓言故事。19世纪早期引来了一个机械化时代,蒸汽机的发明是机械动力的主要标志。正是在这个时候,蒸汽引擎首次装上了轮子,到了1825年,英国第一条国营铁路投入运营。当时的蒸汽动力与后来的电能和原子能具备的神奇力量的性质是相同的。1833年,英国数学家兼天文学家和发明家查尔斯·巴比杰提出了一个大胆的设想,他要利用蒸汽动力来进行数学计算,后来他真的设计出他声称能够进行计算甚至能够思考的机器,因此许多人将他视为实际生活中的弗兰肯斯坦博士。虽然他的设计方案从未变成实际的产品,但是巴比杰决不是个想入非非的空想家。在他于1871年去世之前,一直凭借他那最先进的逻辑思想和数学头脑,致力于他所谓的“分析机”的研究。巴比杰试图用这种机器使人们从重复性和烦琐的脑力劳动中解放出来,就像当时的新型机器使人们摆脱繁重的体力劳动一样。
拜伦的女儿奥古斯坦·艾达是巴比杰的同事和赞助人,她本人是位作家,又是个业余数学家,她经常撰文向受过高等教育的人士和英国贵族中的科技赞助人介绍巴比杰的科学思想。她还编写了许多能使巴比杰的分析机懂得如何解算数学问题的指令。由于她从事的这些工作,许多人将艾达称为世界上的第一位计算机程序员。美国国防部根据她在提出计算机编程理论方面做出的重大贡献,于20世纪80年代用她的名字命名了Ada编程语言。
由于公众害怕玛丽·雪莱在她的小说《弗兰肯斯坦》中提到的那种神奇技术会给人类带来什么不测,因此艾达认为应该向小说的读者说明巴比杰所说的分析机本身实际上并没有思维能力。这种机器只能按照人的指令进行工作。尽管如此,分析机已经非常接近现代意义上真正的计算机,而“按照人的指令进行工作”则与我们今天所谓的计算机编程的概念十分相似。
巴比杰设计的分析机实际上是一台用钢和铜制成的闪闪发亮的庞然大物,它工作时会发出巨大的声响,而且造价极其昂贵。数字存储在由齿轮组成的寄存器中,数字的输入和移位是通过凸轮和棘轮装置进行的。据说它最多能够存储1000个数字,每个数字最多为50位。这种内部存储能力用今天的术语来说称为计算机的内存容量。按照现代标准,分析机的运行速度实在太慢了,它每秒钟进行加法运算的次数还不到一次,不过它拥有的内存却比20世纪40年代和50年代最早的实用计算机大,甚至比70年代初最早的微型计算机的内存还要大。
虽然巴比杰为它的分析机设计了三个非常详细的不同方案,但是他从来没有造出过这样的机器,也没有制造过比较简单然而功能更强大的差分机。一个多世纪以来,人们认为他当时的机械制造技术还无法制造出这种机器需要的成千上万个精密零部件。后来到了1991年,伦敦科学博物馆负责计算机设备的馆长多伦·斯韦特使用巴比杰当年可以得到的技术、工艺和材料,成功地造出了巴比杰设计的差分机。斯韦特的成功是对巴比杰一生的巨大讽剌。一个世纪前,巴比杰已经成功地设计出计算机,他的机器实际上是能够运行的,并且本来是能够制造成功的。巴比杰未能实现其梦想的原因,完全是因为他无法筹措到足够的资金,而无法筹措到资金,则主要是因为他的工作不合那些能够提供资金的人的口味。
如果巴比杰对当时的权贵们采取迎合奉承的态度,或者拜伦的女儿是个腰缠万贯的富家女子,那么当时很可能出现一台规模庞大的蒸汽引擎计算机,在狄更斯笔下的伦敦喷云吐雾,使现实生活中的某些吝啬鬼的书籍相形见绌,或者与巴比杰的另一位著名朋友查尔斯·达尔文下国际象棋。可惜,正如玛丽·雪莱所预言的那样,电能将是实现会思考的机器的真正动力。
19世纪60年代,美国逻辑学家查尔斯·桑德斯·皮尔斯开始讲授乔治·布尔著作的课程,布尔代数学就是以乔治·布尔的名字命名的。从此,皮尔斯就把符号逻辑学传到了美国,并且在授课过程中大幅度修改和发展了布尔的代数学。布尔以无可争议的方式将逻辑学与数学结合起来,而在19世纪中期,皮尔斯比其他任何人都更加精通布尔代数学。
到了19世纪80年代,皮尔斯发现布尔代数学可以用来模拟电气开关电路。布尔逻辑学的真/假值与流经复杂电路的开/关电流完全吻合。换句话说,逻辑法则可以用电路来表示。因此,从理论上讲,可以制造电动计算机和逻辑计算机。1885年,皮尔斯的学生艾伦·马昆德实际上设计成功了能够进行简单逻辑运算的电动计算机,可惜没有制造成功。
皮尔斯打算用来实现布尔代数运算的开关电路(也叫做开关装置、开关元件或中继元件,多个名字可以通用)是计算机的基本元件之一。这种装置具备的独特功能是它能够对信息进行操作,而不是对电流或机车进行操作。
用开关电路来取代机械开关的好处很多,好处之一是可以大大缩小计算设备的体积。实际上,第一台电动逻辑计算机是本杰明·布拉克在1930年发明的一台便携式设备,它可以装入一个公文包。这台机器能够处理推理形式的语句。例如,假设“所有男人必有一死,索克雷兹是个男人”,因此它可以接受“索克雷兹必有一死”的推理,而拒绝“索克雷兹是个女人”的推理。这种错误推理会关闭电路,并使机器亮起报警指示灯,表示出现了逻辑推理错误。
布拉克的设备属于一种专用计算机,其功能非常有限。当时制造的大多数专用计算设备只能进行数字处理,不能进行逻辑处理。几十年前,特尔曼·霍勒利思设计了一台计算机,用于计算1890年美国人口普查的统计数字。他的公司后来被国际商业机器公司(IBM)兼并。到了1920年底,IBM通过向企业销售专用计算机而大发其财,这些计算机使企业的例行数字计算实现了自动化。当时IBM的机器还称不上是计算机,也不是布拉克制造的那种逻辑计算机,而只是体积庞大外观漂亮的计算器而已。
美国麻省理工学院的克劳德·香农博士提出了一个理论,它说明了如何用电路来模拟布尔逻辑的方法。IBM公司的官员在这个理论的启发下,于20世纪30年代投资开发一种采用机电继电器的大型计算机。虽然他们后来放弃了这个开发计划,但是IBM公司的官员为哈佛大学教授霍华德·艾肯提供了50万美元,这在当时来说是一笔相当可观的费用,用于开发Mark I。Mark I是受巴比杰的分析机的启发而设计的一种计算设备。不过巴比杰设计的纯粹是机械式计算器,而Mark I则是一种机电式计算器,它的继电器用作开关部件,而继电器阵列则作为数字存储空间。计算器运行时噪声很大,继电器不停地接通和断开,发出噼噼啪啪的声响。当Mark I于1944年研制完成时,人们欢欣鼓舞,称它使科学幻想小说中的电脑变成了现实。但是当Mark I亮相时,艾肯却不承认IBM公司在该产品的研制工作中做出的贡献,为此IBM公司的官员很不高兴。更使IBM抱恨的是,在Mark I的研制工作开始之前,其他方面的技术取得了新的进展,从而使MarkⅠ在技术上已经过时了。
电气技术的发展为电子设备的问世创造了条件。正当人们用继电器取代了巴比杰的蒸汽驱动的车轮和齿轮的时候,依阿华州立大学的数学和物理学教授约翰·阿塔纳索夫发现电子元件可以代替继电器。在美国卷入第二次世界大战前不久,阿塔纳索夫在克利福德·贝里的帮助下设计出了阿塔纳索夫-贝里计算机(ABC),它的开关部件采用的是电子管而不是继电器。这种取代实现了一个重大的技术飞跃。从理论上讲,电子管计算机的运算速度和运行效率比采用继电器的计算机要高得多。与巴比杰的分析机一样,ABC计算机也从未制造成功,原因也许是阿塔纳索夫为制造该设备而筹得的经费还不足7000美元。阿塔纳索夫和贝里组装了一台简单的样机,它的线路错综复杂,使用了许多的电子管,与早期的台式计算器十分相似。由于采用电子管作为开关元件,因此阿塔纳索夫使计算机开发技术向前迈进了一大步。电子管的性能大大优于继电器开关,因而使得计算机变成了现实。
电子管是抽掉了空气的玻璃管。爱迪生发现在某些条件下电能够在真空中传播,李·德福雷斯特则运用“爱迪生效应”将电子管变成了电开关。20世纪50年代,从电视机到计算机,电子管在电子设备中的应用非常广泛。今天,我们仍然可以从计算机的显示器和电视显象管中看到电子管的影子。
到了20世纪30年代,计算机的问世已经水到渠成。但是,计算机仍然是一种体积庞大、费用高昂的专用计算设备。后来又花了几十年时间,才使它逐步缩小体积并且变得价格低廉,这时,它才走上了向通用计算机目标发展的轨道。
后来,英国数学家艾伦·图林提出了一种计算机思路,它能够读取编码指令,以便执行任何可以描述的任务,并且能够按照指令来完成该项任务。由于它能够执行用指令描述的任何任务,因此这样的计算机才称得上真正的通用计算设备。图林的思路在10年内变成了现实。指令变成了程序,他的思路经过另一位数学家约翰·冯纽曼之手,变成了通用的计算机。
1943年,在费城的穆尔工程学院,约翰·莫奇莱和普里斯泊·埃克特提出了制造ENIAC计算机的建议,并且着手监造该设备。这是最早的一台全电子数字计算机。除了用于信息输入和输出的外部设备外,ENIAC纯粹是一台电子管计算机,这也许是莫奇莱在拜访约翰·阿塔纳索夫时头脑里产生的一个思路。莫奇莱和埃克特将许多学识渊博的数学家吸引过来,参与ENIAC项目的开发工作,包括约翰·冯纽曼。冯纽曼不仅参与了该项目的开发,对ENIAC计算机的制造做出了多方面的贡献,而且提出了一种更为复杂的计算机EDVAC的设计轮廓。由于冯纽曼的努力,穆尔工程学院将工作的重点从技术领域转向了计算机逻辑的研究上。他认为EDVAC不仅仅是个计算机设备,而且应该能够执行逻辑操作和数学运算,同时能够根据编码符号来运行。根据符号进行运算的指令以及用于符号转换的指令本身,应该是编码后放入计算机的符号,并且是计算机运行时所依据的符号。这是现代计算机技术中最重要的一个基本概念。通过将EDVAC规定为应该用指令进行编程的计算机,而这些指令本身又作为数据送入计算机,冯纽曼建立了存储程序计算机的技术标准。
第二次世界大战后,冯纽曼提出了将ENIAC改造成类似EDVAC的程控计算机的方法,而阿德尔·戈尔斯坦则编写了55种操作的语言,使该计算机更加便于操作。此后,一直没有人再以它的原始运行方式使用ENIAC。
1946年初,ENIAC的研制工作完成时,它的运行速度比机电式计算机快1000倍。但是,不管它是否属于电子计算机,它仍然会产生很大的噪声。除了声音较小的电子电路外,ENIAC配有满满一间屋子的打字机和不断旋转的磁带机。它拥有2万个开关元件,重量达30吨,耗电150千瓦。尽管ENIAC耗费如此大的电能,然而它每次只能处理20个10位数。不过,在ENIAC完成全部制造工作之前,它就已经派上了重要的用场。1945年,ENIAC为在新墨西哥州的洛斯阿拉莫斯进行的原子弹爆炸试验进行了计算工作。
第二次世界大战后出现了一个新兴产业,那就是计算机制造业。由于计算机设备所具有的性质,它逐步形成了一个规模庞大的产业。约翰·莫奇莱和普里斯泊·埃奇特因为ENIAC的成功而春风得意,在他们的帮助下,雷明顿打字机公司变成了斯佩里·尤尼伐克(Sperry Univac)公司。几年之内,“尤尼伐克”成了计算机的同义词,就像Kleenex是面巾纸的同义词一样。斯佩里·尤尼伐克公司遇到了一些强劲的竞争对手。IBM公司的官员从Mark I的失望中重振旗鼓,着手制造通用计算机。两家公司采用完全不同的经营风格,IBM的员工身穿蓝条子服装,而尤尼伐克公司的员工则大多是脚蹬轻便运动鞋的年轻大学生。不知是IBM在经营中的思路活跃还是经营中的远见卓识,没过多久,它就把尤尼伐克公司远远抛在了后面,一跃成为计算机行业的霸主。
不久之后,人们使用的大多数计算机都是IBM制造的产品,公司占有的市场份额直线向上攀升。
与此同时,整个计算机市场的规模不断扩大。新公司在经过IBM或尤尼伐克公司培训的工程师的指导下不断涌现。控制数据公司(Control Data)是从IBM中分离出来的一家公司,不久,霍尼韦尔(Honeywell)、伯劳斯(Burroughs)、通用电气(General Electric)、RCA和NCR等公司纷纷开始生产计算机。10年之中,8家公司开始控制不断扩大的计算机市场,而IBM则在营业额上领先于其他公司,这些公司常常被人们称为白雪公主(IBM)和7个小矮人。不过IBM与另外7家公司吸取了某些自命不凡的暴发户的教训。20世纪60年代,出现了一种新型计算机,它们的体积更小,价格更便宜,与当时流行的超短裙一样,它们被称为微型计算机。生产微型计算机最主要的公司有波士顿的数字设备公司(DEC)和加州的帕洛阿尔托的惠普公司(HP)。
用图林·冯德曼的观点来看,这些公司生产的计算机都属于通用计算机,而且它们已经变得更加精巧,效能更高,功能更强。不久又出现了另一项技术突破,使计算机技术的发展跨上了一个新的台阶。