计算机科学概论(第13版)
上QQ阅读APP看书,第一时间看更新

今天的计算机有着庞大久远的世系渊源,其中较早的一个计算设备是算盘。历史告诉我们,它可能源于中国古代且曾被用于早期希腊和罗马文明。算盘本身非常简单,一个矩形框里固定着一组细杆,而每个细杆上又各串有一组珠子(见图0-3)。在细杆上,珠子上下移动的位置就表示其所存储的值。这些珠子的位置代表了这台“计算机”表示和存储的数据。这台机器是依靠人的操作来控制算法执行的。因此,算盘自身只算得上一个数据存储系统,它必须在人的配合下才能成为一台完整的计算机器。

图0-3 中国木制算盘(Ekkapon/Shutterstock)

从中世纪到近代,人们一直在探求更复杂的计算机器。一些发明家开始基于齿轮技术设计计算机器。采用这种技术的发明家有法国的布莱斯·帕斯卡(Blaise Pascal,1623—1662)、德国的戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz,1646—1716)和英国的查尔斯·巴贝奇(Charles Babbage,1792—1871)。这些机器利用齿轮的位置来表示数据,要在规定齿轮初始位置的基础上机械地输入数据。帕斯卡和莱布尼茨的机器所计算的结果是通过观察齿轮的最终位置得到的。但巴贝奇构想的机器,则可以把计算的结果打印在纸上,从而消除可能出现的抄写错误。

就执行算法的能力而言,我们可以看到这些机器在灵活性上的进步。帕斯卡的机器只是为了执行加法而设计的,因此必须将正确的步骤序列嵌入机器结构本身。同样,莱布尼茨的机器也把算法嵌入了其机器结构中,但是操作员可以从它提供的各种算术操作中进行选择。巴贝奇设计的差分机(Difference Engine)(只造了一个演示模型)可以通过修改来执行各种计算,但他设计的分析机(Analytical Engine)(从未得到过构造资助)则能够在打孔纸卡片上读取以洞孔形式表示的指令。因此,巴贝奇的分析机是可编程的。事实上,奥古斯塔·艾达·拜伦(Augusta Ada Byron,通称Ada Lovelace)经常被认为是世界上第一位程序员,她曾发表过一篇论文,阐述巴贝奇的分析机是如何通过编程实现各种计算的。

巴贝奇的差分机

查尔斯·巴贝奇设计的这台机器的确是现代计算机设计的先驱。如果能用比较经济的方式制造出这台机器,如果当时商业和政府的数据处理需求达到今天的规模,那么巴贝奇的想法可能在19世纪就引发了计算机革命。然而结果却是,他在有生之年只造出了差分机的演示模型。该机器通过计算“逐次差分”来确定数字值。我们可以通过考虑整数平方的计算问题,深入了解这一技术。我们先从基础知识开始,0的平方是0,1的平方是1,2的平方是4,3的平方是9。据此,我们可以按照下面的方法得到4的平方(见下图)。现在,我们先计算一下已知的平方之间的差:12 - 02 = 1,22 - 12 = 3,32 - 22 = 5。然后,我们计算这些结果的差:3 - 1 = 2,5 - 3 = 2。注意,这些差都是2。假设这个规律能够成立(数学上可以证明它是成立的),那么我们可以得出这样的结论:(42 - 32)和(32 - 22)之间的差也一定是2。因为(42 - 32)一定比(32 - 22)大2,所以42 - 32 = 7,因而42 = 32+7 = 16。现在,我们已经知道了4的平方,那么就可以依据12、22、32和42的值继续计算5的平方。(虽然更深入地讨论逐次差分已经超出了现在的学习范围,但是学过微积分的学生可能已观察到,前面的例子是基于“y = x2的二阶导数是一条直线”这个事实得出的。)

奥古斯塔·艾达·拜伦

奥古斯塔·艾达·拜伦(洛夫莱斯伯爵夫人)是计算界关注的焦点人物。艾达·拜伦的一生近乎悲惨,去世时还不到37岁(1815—1852)。她体弱多病,身处限制妇女从业的社会,是个不墨守成规的人。尽管她对很多科学领域都感兴趣,但最感兴趣的还是数学。1833年,目睹了查尔斯·巴贝奇的差分机样机演示后,她就被这台机器迷住了,从此对“计算科学”产生了兴趣。她把一篇讨论巴贝奇分析机设计的论文从法文翻译为英文,这是她最早对计算机科学做出的贡献。巴贝奇还鼓励她在翻译中增加一个附录,介绍该机器的应用,以及该机器如何编程实现各种任务的示例。巴贝奇对艾达·拜伦的工作十分热情,他希望这篇论文的发表能够帮他得到资金支持,建造他的分析机。(作为拜伦勋爵的女儿,艾达·拜伦具有名人的地位,在生意场上也有一定的关系。)虽然巴贝奇的期望落空了,但是艾达·拜伦的附录保存了下来,人们认为该附录包含了第一批计算机程序的例子。关于巴贝奇对艾达的工作影响有多大,研究计算机历史的历史学家一直争论不休。有些历史学家认为,巴贝奇做出了重大贡献,但另外一些历史学家则认为,巴贝奇并没有帮到艾达,从很大程度上来看反而是一种阻碍。无论如何,奥古斯塔·艾达·拜伦都被认为是世界上第一位程序员,美国国防部为了纪念这位伟大的女性,用她的名字命名了一种杰出的程序设计语言(Ada)。

通过纸卡片上的洞孔来传达算法的想法最初并不是源于巴贝奇。他是从约瑟夫·雅卡尔(Joseph Jacquard,1752—1834)那里得到这个想法的。约瑟夫·雅卡尔于1801年研制出一种织布机,它在织布过程中执行的步骤,是由宽大厚实的木制(或纸板)卡片上的洞孔样式决定的。因此,织布机的算法很容易进行修改,可以得出不同的编织设计。另一个受益于雅卡尔想法的人是赫尔曼·霍尔瑞斯(Herman Hollerith,1860—1929),他灵活运用这一概念——用纸卡片上洞孔的样式来表示信息,加速了美国1890年人口普查中的表格处理。(霍尔瑞斯的这项改造促成了IBM的诞生。)这种卡片最终被称作穿孔卡片,直到20世纪70年代,它仍是与计算机交互的流行工具。

从成本效益上来讲,19世纪的技术无法让帕斯卡、莱布尼茨和巴贝奇设计的复杂齿轮驱动机器付诸生产。但是,随着20世纪初期电子技术的进步,这个障碍被克服了。这种进步的例子包括乔治·斯蒂比兹(George Stibitz)的电子机械机器和马克一号(Mark I),前者由贝尔实验室于1940年建造,后者由霍华德·艾肯(Howard Aiken)和一组IBM工程师于1944年在哈佛大学建造。这些机器使用了大量机械式继电器,通过电流进行控制。从这个意义上说,这些机器几乎是一造出来就过时了,因为其他研究人员已在应用真空管技术建造完全电子化的计算机。第一台真空管机器显然是阿塔纳索夫-贝瑞(Atanasoff-Berry)机器,由约翰·阿塔纳索夫(John Atanasoff)和他的助手克利福德·贝里(Clifford Berry),于1937—1941年在艾奥瓦州立学院(现在的艾奥瓦州立大学)建造。另一台是称为巨人(Colossus)的机器,在汤米·弗劳尔斯(Tommy Flowers)的指导下建造于英国,该机器在第二次世界大战后期曾被用来破解德国的情报。(实际上,这类机器至少造了十余台,但是由于涉及军事机密和国家安全问题而隐瞒它们的存在,未能列入“计算机家谱”。)不久,更为灵活的机器出现了,如ENIAC(Electronic Numerical Integrator And Computer,电子数字积分计算器),它是由约翰·莫奇利(John Mauchly)和普雷斯波·埃克特(J. Presper Eckert)在宾夕法尼亚大学莫尔电子工程学院研制的(见图0-4)。

从那时起,计算机器的历史就开始和技术进步紧密相连,包括晶体管的发明(物理学家威廉·肖克利、约翰·巴丁和沃尔特·布拉顿因此获得了诺贝尔奖)和后来集成电路的开发(杰克·基尔比因此荣获了诺贝尔物理学奖)。由于这些技术,以往20世纪40年代房间大小的机器在数十年间缩小到了单机柜大小。与此同时,计算机器的处理能力每两年便会翻倍(这一趋势一直持续到了今天)。随着集成电路技术的进步,计算机中的许多元件都可封装在玩具大小的塑料块中做成芯片,在电子市场上很容易就可以买到。

图0-4 3个女人在操作莫尔学院的ENIAC主控制板。
这台机器后来搬到了美国陆军弹道研究实验室
(图片来源于美国陆军)

计算机的普及在很大程度上得益于台式计算机的发展。台式计算机的出现是计算机爱好者的功劳,他们通过芯片组合构建了家用计算机。正是在这些计算机爱好者的“地下”活动中,史蒂夫·乔布斯(Steve Jobs)和斯蒂芬·沃兹尼亚克(Stephen Wozniak)制造出了有商业价值的家用计算机,并于1976年成立了苹果计算机公司(现称苹果公司),专门制造和销售他们的产品。其他经销类似产品的公司有Commodore、Heathkit和Radio Shack。虽然这些产品在计算机爱好者中很畅销,但是并没有被商界普遍接受,商界仍然青睐久负盛名的IBM公司及其大型计算机,这些计算机满足了大多数的商用计算需求。

1981年,IBM公司推出了它的第一款台式计算机,称为个人计算机(personal computer),简称PC,其基础软件由一个新成立的称为微软(Microsoft)的公司开发。PC一经推出立即获得了极大的成功,并且奠定了这种台式计算机在商界人士心目中作为日用品的地位。今天,术语PC已被广泛用于指称整个这一类机器(来自各个不同厂商),其设计都是从IBM公司最初的台式计算机演变而来的,而且它们中的大多数还在与微软公司的软件一起销售。不过,有时候,术语PC也能与通用术语台式机(desktop)或笔记本计算机laptop)互换使用。

在20世纪后期,因特网(Internet)的出现大大改变了人们的沟通方式,这种技术将个人计算机连成了一个全球系统。在这个背景下,英国科学家蒂姆·伯纳斯·李(Tim Berners-Lee)提出了一个系统,这个系统可以通过因特网把计算机上存储的文档链接起来形成错综复杂的链接信息网,这便是万维网(World Wide Web),简称Web。为了能够访问Web信息,人们开发了一种叫作搜索引擎(search engine)的软件系统,用于筛选Web上的信息,并对筛选结果进行“归类”,然后利用这个结果帮助用户研究特定的主题。这一领域的主要参与者有谷歌、雅虎和微软。这些公司不断地扩展其与Web相关的活动,而且经常会挑战我们的传统思维方式。

与此同时,台式计算机和笔记本计算机正在被人们所接受,并用于家庭,计算机器的微型化仍在继续。今天,大量的电器和设备中都嵌有微型计算机。现在的汽车可能就包含了几十个小型计算机,用于运行全球定位系统(Global Positioning System,GPS),监控发动机的性能,并提供控制汽车音频和电话通信系统的语音命令服务。

也许,计算机微型化最革命性的应用就是智能手机(smartphone)能力的扩展。智能手机是手持通用计算机,通话应用仅是其众多应用之一。从功能上讲,这种钱包大小的设备比几十年前的超级计算机还要强大,它配备有大量的传感器和接口,包括照相机、麦克风、指南针、触摸屏、加速计(用以检测手机的方向和动作),以及一系列无线技术(以便与其他智能手机和计算机通信)。很多人认为智能手机对全球社会的影响大于PC革命。