第1章 绪论

1.1 电子计算机的产生与发展

利用工具来放大脑力和体力是人类具有智慧的象征,同时也是人类不懈追求的目标。如果说机械的发明是扩展了人手的功能,交通工具的使用是扩大了人腿的功能,望远镜和显微镜极大地开阔了人们的视野,那么计算工具的发明与利用就是扩展和提高了人脑的功能。

在电子计算机出现以前,人类就曾发明和使用了许多辅助计算工具。例如在远古时期,人们用石头、木棒、刻痕或结绳来延长自己的记忆。在公元前7世纪,算筹开始用于辅助计算。公元8世纪,我们的祖先又发明了算盘,并提出了基于算盘的珠算。

算盘及珠算的发明是人类计算工具史上的一次飞跃,它的科学性和实用性经受住了长期实践的考验。时至今日,珠算仍在使用,这是中华民族对人类文明的一大贡献。15 世纪后,算盘及珠算传至日本,并影响欧洲,激励了各国对计算工具的研究。

在电子计算器或电子计算机普及之前,计算尺也是工程技术人员广泛使用的一种计算工具。计算尺是在木质的尺子形状的材料上,印上各种刻度和数字标记,通过拉动中间可移动的部分,找出不同位置上刻度(数字标记)的对应关系,来完成一次计算过程。

1642年,年仅19岁的法国科学家帕斯卡(Blaise Pascal,1623—1662年)发明了第一台机械计算器Pascaline。这台手摇转动的齿轮进位式计算器是帕斯卡为他担任税收官员的父亲设计的,能够完成6位数字的加、减法运算。Pascaline的最大贡献就是解决了自动进位这个关键问题。

德国科学家莱布尼茨(Baron Gottfried Wilhelm von Leibnitz,1646—1716年)对Pascaline进行了改进,于1673年研制出具有加、减、乘、除功能的手摇式机械计算器,并提出了“可以用机械代替人进行繁琐重复的计算工作”这一重要思想。遗憾的是,由于当时生产技术水平的限制,还不能提供大量廉价而精密的机械零件,使得两个世纪后才出现商品化的手摇计算机。

上述计算工具的特点是:机器要由人按照一定的步骤来操作,每一步运算都要由操作者供给操作数,决定进行什么样的操作并安排计算结果。人们常说的“算盘珠子不拨不动”就是这类计算工具的生动写照。计算工程中频繁的人工干预极大地限制了计算速度的提高,并将人束缚于机器之上。人们期待着一种能够实现自动运算的计算工具,将人从计算过程中解放出来。

最早研究自动计算工具的科学家是英国剑桥大学的数学教授巴贝奇(Charles Babbage, 1792—1871年)。1822年他首先设计制造出一台“差分机(Difference Engine)”。“差分机”是为计算航海数据表而设计的,只能运行一个算法,即用多项式计算有限差分。有趣的是,它的数据输出方法是用钢锥将结果刻在铜板上,这可以看作一次性写存储介质(如穿孔卡片和光盘)的雏形。

虽然“差分机”运行得很好,但巴贝奇还是对它只能完成一种算法很不满意。1833 年,巴贝奇开始研制“差分机”的更新换代产品,并将其命名为“分析机(Analytical Engine)”。按照巴贝奇的设计,“分析机”由“存储部分”、“计算部分”、“输入与控制部分”和“输出部分”等4部分组成。“存储部分”为1000排、每排50个的齿轮阵列。用这些齿轮的不同位置来表示不同十进制数的数据。当时用于提花机上编织复杂图案的穿孔卡片略加修改后被用来向“分析机”输入计算步骤和数据。巴贝奇还希望“分析机”能够排出可供印刷的铅字以便在纸张上输出计算结果。

“分析机”设计蓝图的最大亮点是将自动计算装置在组成上划分成:存储部件、计算部件、输入部件(卡片穿孔设备)、控制部件(穿孔卡片及其阅读设备)、输出部件。

“分析机”的另一个亮点是通用性——从穿孔卡片上读取指令,依据指令进行运算。这样,人们就可以通过在穿孔卡片上编制不同的指令来在同一台计算机器上完成不同的运算。

尽管由于种种原因,“分析机”没有能够最终研制出来,但是“分析机”基本上具有了现代计算机的主要功能,并且奠定了现代计算机的基本组成结构。因此,巴贝奇被誉为“计算机之父”。

1854年,英国数学家布尔(George Boole)出版了《布尔代数》,为计算机采用二进制进行信息的表示与运算奠定了理论基础。19世纪末、20世纪初,一批基于上述研究成果的手摇计算机、电动计算机和卡片式计算机相继被发明出来,如美国国际商业机器(International Business Machine,IBM)公司推出的“插销继电器计算机”。这些辅助计算工具,为人们解决繁琐的数据处理问题提供了很大的帮助。

但是,这些辅助计算工具还是存在诸多不足,难以满足近代科学技术发展对计算能力的需求。

首先,它们的计算速度慢,只有大约3000次运算/小时。例如,要准确预报24小时的天气情况,大约需要200多万次的运算。若使用上述辅助计算工具,大约要费时超过5个月,这就失去预报的意义了。地球物理勘探中测量数据的处理往往需要上亿次的计算,上述辅助计算工具更是无法胜任。

其次,运行可靠性差,容易出现计算错误。这是因为在使用这些辅助计算工具时,操作者要参与整个计算过程,人的主观因素直接影响了计算的正确性。

最后,这些辅助计算工具只具有计算功能,而人们生产实践、科学研究和社会生活中大量需要的是机械控制、信息处理等工作,上述辅助计算工具在这些任务面前就无能为力了。

1937年,致力于研究数学机械化的英国数学家图灵(Alan Mathison Turing,1912—1954年)在“关于可计算的数及其对判定问题的应用”学术论文中提出了一个被后人称为“图灵机(Turing Machine)”的计算模型,这就是现代计算机的理论模型。

鉴于图灵对计算科学的杰出贡献,美国计算机协会(Associative of Computing Machine, ACM)于1966年设立了“图灵奖(A.M. Turing Award)”,以纪念这位杰出的科学巨匠。至今已有50多位科学家荣获了“图灵奖”,这些获奖者的工作代表了计算科学在各个时期最重要的成果,影响着计算科学发展的方向(参见附录A)。

第一位华裔“图灵奖”获得者是美国普林斯顿大学的姚期智(Andrew Chi-Chih Yao)博士,他荣获了2000年度的“图灵奖”。

1938年,德国大学生朱斯(Konrad Zuse)成功地制造出第一台二进制计算机Z-1。此后他又继续研制Z系列计算机,其中Z-3型计算机是世界上第一台通用程序控制机电式计算机,它的开关元件为继电器,采用浮点计数法和带数字存储地址的指令形式。

1944年,美国哈佛大学的研究生艾肯(Howard Aiken)研制成功一台机电式计算机Mark-I。此后又研制出Mark-II。

至此,计算机器走过两条技术道路,一条是机械式(Mechanical),一条是机电式(Electro-mechanical)。后来电子(Electrical)计算机都从这两条道路上吸取了很多思想。

1946年2月14日,世界上第一台通用电子计算机ENIAC(Electronic Numerical Integrator And Computer)诞生了,这是人类文明史上的一个重要里程碑。从此,电子计算机把人类从繁重的脑力计算和繁琐的数据处理工作中解放出来,使人们能够将更多的时间和精力投入到具有创造性的工作中。电子计算机的发明是20世纪最杰出的科学成就之一。

从第一台电子计算机的诞生算起,至今仅60多年的时间,但是就在这短短的60多年里,电子计算机得到了迅速的发展和普及。目前,电子计算机已经深入到我们社会生活的每一个角落,它不仅改变了人类工作和学习的方式,而且还改变着人类的观念和思维。

电子计算机的发展经历了四代,目前正在向着第五代计算机发展。

第一代电子计算机(1946—1958年)是电子管(Vacuum Tube)计算机。它的特征是采用电子管作为逻辑元件,能够处理的数据类型只有定点数,用机器语言或汇编语言来编制程序。第一代电子计算机的应用仅仅局限于科学计算。

第一台电子计算机 ENIAC 是由美国宾夕法尼亚大学莫尔学院的物理教授莫克利(J. W. Mauchley)和工程师埃克特(J. P. Eckert)领导的科研小组研制成功的。它使用了约18800只电子管和1500个继电器,几十万枚电阻和电容,体积460立方米,自重30吨,功耗为140kW,占地面积约170平方米。计算速度只有大约5000次加减运算/秒。然而ENIAC在1946年2月正式试算时就创造了奇迹:用短于炮弹实际飞行的时间,,求出了16英寸海军炮的弹道。

1946年,莫克利和埃克特开始研究“离散变量自动电子计算机EDVAC(Electronic Discrete Variable Automatic Computer)”,但是最终没有研制出来。与此同时,ENIAC项目的顾问、美籍匈牙利科学家冯·诺依曼(von Neumann)与他的同事在普林斯顿大学高等研究院(Institute of Advanced Study,IAS)设计他们自己的EDVAC(即IAS机)。这是一台基于二进制的、存储程序(Stored Program)型电子计算机,这台计算机的设计思想对后来计算机的发展产生了深远的影响。后人称采用该机结构的计算机为“冯·诺依曼计算机”,目前绝大多数电子计算机都是“冯·诺依曼计算机”。因此,冯·诺依曼被誉为“现代计算机之父”。“冯·诺依曼计算机”的特点将在下一章中介绍。

1946年,莫克利和埃克特离开莫尔学院,创办了电子控制公司(Electric Control Corp., ECC),这是世界上第一家计算机公司。1947年,ECC开始研制UNIVAC-I(UNIoVersal Automatic Computer-I)计算机。这台计算机首次采用磁带(Magnetic Tape)作为外存储器,采用奇偶校验和双重运算线路来提高系统可靠性。但是UNIVAC-I的重要意义更在于它是第一款批量生产的计算机,是计算机产业的起点。UNIVAC-I当时的售价为25万美元,共生产了48套系统。从此,计算机的研究不再只是学术机构的技术行为,产业和市场的需求越来越成为计算机技术发展的主要动力。

1954年,第一个高级程序设计语言FORTRAN问世了。FORTRAN语言的问世一举奠定了高级程序设计语言在程序设计中的地位,并成为世界上应用最广泛、最有生命力的高级程序设计语言。FORTRAN语言的设计者巴克斯(John Backus)也因此荣获了1977年度的“图灵奖”。

第二代电子计算机(1958—1965 年)是晶体管(Transistor)计算机。它的特征是采用晶体管代替电子管作为逻辑元件;用磁芯(Magnetic Core)作为主存储器;采用磁带、磁鼓(Magnetic Drums)、纸带(Paper Tape)、卡片穿孔机和阅读机(Card Punch and Readers)作为输入/输出设备。该阶段在软件方面有了很大的发展,相继出现了Algol、COBOL等一系列高级程序设计语言。其中Algol 60语言的诞生更是标志着对计算机程序设计语言的研究正式成为一门专门的学科,它的设计者诺尔(Peter Naur) 荣获了2005年度“图灵奖”。

为了简化程序设计与运行,人们建立了程序库和批处理管理程序。除了科学计算之外,第二代电子计算机开始应用于数据处理和工业过程控制。

第二代电子计算机中,具有代表性的机器有美国IBM公司生产的36位计算机IBM 7094和美国数字设备公司(Digital Equipment Company,DEC)公司生产的18位计算机PDP-1。与第一代电子计算机相比,第二代电子计算机具有体积小、重量轻、耗电低、可靠性高等优点,计算速度可达到几万到几十万次运算/秒。

第三代电子计算机(1965—1970年)是集成电路(Integrated Circuits,IC)计算机。它的特征是采用集成电路代替分立的晶体管元件;半导体存储器逐渐取代磁芯存储器;控制单元设计开始采用微程序控制技术。在软件方面,操作系统(Operating System,OS)日益成熟,功能逐渐强化,这也是第三代电子计算机一个显著的特点。多道程序、并行处理、多处理机、虚拟存储器(Virtual Memory)、系列计算机(Family of Computers)以及图形用户界面 GUI (Graphical User Intelface)等技术的提出,大大推动了计算机科学与技术的发展。

具有代表性的第三代计算机有:美国IBM公司的大型计算机(Mainframe)System 360 系列,美国控制数据公司(Control Data Corporation,CDC)的超级计算机(Supercomputer) CDC-6600、CDC-6700。它们的计算速度可达几百万次运算/秒,甚至几千万次运算/秒。

20世纪60年代中期,计算机技术出现了一个引人注目的新方向——低成本的小型计算机(Mini-Computer)。当32位计算机大行其道时,美国DEC公司推出了比PDP-1更便宜的8位小型计算机 PDP-8。出人意料地是,这款计算机在市场上深受欢迎。其后,DEC 公司又推出了16位小型计算机PDP-11。从此,小型计算机以其成本低廉、适用面广、性能价格比高,成为计算机市场的重要角色。

第四代电子计算机(1971 年以后)的特征是采用大规模集成电路,采用半导体存储器作为主存储器,UNIX操作系统逐渐成为主流。在这一时代,计算机的性能有了迅速提高,由西蒙·克雷(Seymour Cray)创办的美国克雷(CRAY)公司于1976年推出了世界上首台计算速度超过1亿次/秒的超级计算机Cray-1。

第四代计算机的另外一个重要代表是微处理器(Microprocessor)与微型计算机(Microcomputer)/个人计算机(Personal Computer,PC),它们推动了电子计算机的普及。

第三代以后的电子计算机从本质上讲,使用的都是集成电路,只不过集成度越来越高,所以有人就将集成电路的集成度作为划分第三代以后电子计算机代次的依据。把集成度为1~10个等效逻辑门的小规模集成电路(Small Scale Integration,SSI)和集成度为10~100个等效逻辑门的中规模集成电路(Medium Scale Integration,MSI)所构成的电子计算机称为第三代电子计算机;把集成度为100~10000个等效逻辑门的大规模集成电路(Large Scale Integration, LSI)和集成度为10000个以上等效逻辑门的超大规模集成电路(Very Large Scale Integration, VLSI)所构成的电子计算机称为第四代电子计算机。

那么,什么是第五代电子计算机呢?

沿用按集成度划分的思路,有人提出在超大规模集成电路VLSI量纲中,进一步将集成度为1~100万个等效逻辑门的超大规模集成电路VLSI所构成的电子计算机称为第四代电子计算机;将集成度为 100 万~1 亿个等效逻辑门的集成电路定义为巨大规模集成电路(Ultra Large Scale Integration,ULSI),称基于ULSI的电子计算机为第五代电子计算机。

但是这种“第五代电子计算机”的定义并没有得到广泛的认同,更多的人认为,第五代电子计算机应该是具有广泛知识、能推理、会学习的智能计算机。理想的智能计算机拥有各种类型的专家系统组成的知识库,具有理解、联想、推理、学习、判断和决策的能力。智能计算机应能够理解人类的自然语言,能直接接收语言、文字、图形或图像等输入信息,在经过相应处理后,利用知识库中的知识和规则进行推理,从而使问题得到解决。在解决问题的同时,智能计算机的知识库也将进行自动更新或补充。

应该说,人类对自身智能的研究一直在努力地进行着。早在 1949 年,美国科学家维纳(Norbert Wiener)就提出了用开关网络模拟动物神经系统的设想。到了20世纪80年代,该设想发展成为所谓的“神经网络计算机”。但是这种计算机与人的大脑毫无相似之处,所以它只是在有限的应用领域(如非程序化和自适应的数据处理)收到了一些效果。美国科学家西蒙(Herbert Alexander Simon)在20世纪50年代提出了“物理符号系统假说(Physics Symbol System Hypothesis,PSSH)”:人的大脑是一个物理符号系统,计算机也是一个物理符号系统,所以可以用计算机来模拟人的大脑。按照PSSH,人们研制出几台棋艺水平接近国际大师的国际象棋机器人,例如1998年IBM公司研制的“深蓝(Deep Blue)”就战胜了国际象棋世界冠军卡斯帕罗夫。但是“深蓝”的智能仍然是有限的,它与人类的较量还是负多胜少,它的胜利主要得益于计算机处理能力的提高。

总之,由于人类对自身生理功能的特性尚不完全理解,所以智能计算机目前只是一个美好的理想,用电子计算机来模拟、替代人脑思维还有很长的路要走。

日本曾于20世纪80年代初提出了一个“第五代计算机系统(Fifth Generation Computer System,FGCS)”计划,并于1982年4月成立了“新一代计算机技术研究所(Institute for New Generation Computer Technology)”。该研究所当时制定了一个为期十年(1982—1991年)的“智能计算机研究计划”,但是该计划并没有取得预期的成果。

在1992年,日本又提出了一个“RWC(Real World Computing)”计划,后来还研制出当时世界上计算速度最快的计算机——地球模拟器(Earth Simulator)。美国自然亦不会甘居人后,也提出了对“更新一代计算机”的研究设想。所谓“更新一代计算机”将不再只是采用传统的电子器件,而是更多地采用光电子器件、超导器件、生物电子器件、量子器件。

在第五代计算机的研究中,中国也应该占有一席之地,有志于计算机事业的年轻人,应该积极投身到这一领域中去。