
1.1 计算机概述
1.1.1 什么是计算机
广义来讲,计算机是指能够进行数据处理的设备,如算盘、计算器(包括机械和电子计算器),也包括电子计算机、生物计算机等。狭义来讲,一般指电子计算机。目前,如不特别说明,计算机是指狭义上的电子计算机。
电子计算机是一种自动、快速、精确地完成信息存储、数值计算、数据处理和过程控制等多种功能的电子机器,简称为计算机。又因为它的工作方式与人的思维过程十分相似,所以也被叫做“电脑”。电子逻辑器件是计算机的物质基础,其基本功能是进行数字化信息处理。
计算机进行数据处理,主要包括两个重要环节:一是计算机能够存储要处理的数据;二是要有一个数据处理的算法(所谓算法可以理解为数据处理的若干步骤),并且将算法编写成程序,然后计算机存储程序并自动执行程序。
1.1.2 计算机的发展历史
1.早期的计算设备
计算设备有着悠久的历史,其中较早的一个计算设备是算盘。算盘起源于中国,最早可以追溯到公元前600年,曾被用于早期希腊和罗马文明。算盘本身非常简单,一个矩形框里固定着一组小棍,每个小棍上串有一组珠子,如图1-1所示。在小棍上,珠子上下移动的位置表示所存储的值。正是这些珠子代表了这台“计算机”所表示和存储的数据。这台机器是依靠人的操作来控制算法执行的。因此,算盘自身只算得上一个数据存储系统,它必须在人的配合下才成为一台完整的计算机器。至今,我国有些人还在使用算盘进行数据处理。

图1-1 算盘
17世纪初,西方国家的计算工具有了较大的发展,英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数、指数函数和对数函数。这些计算工具不仅带动了计算机器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。
2.机械计算器
这一阶段大约在1930年以前。人们发明了一些用来计算的机器。
1642年,年仅19岁的法国数学家和物理学家布莱斯·帕斯卡(Blaise Pascal)发明了第一部机械式计算器Pascsline,这是一个用来进行加减运算的机器。20世纪60年代末,瑞士尼克劳斯·沃斯(Niklaus Wirth)发明了一种结构化程序设计语言,将其命名为Pascal语言,用来纪念这位发明首台机械计算器的科学家。
1694年,德国数学家戈特弗里德·莱布尼茨(Gottfried Leibnitz)发明了能够进行加减乘除运算的计算器,这台机器被称为莱布尼茨之轮(Leibnitz’s Wheel)。
1801年,法国发明家约瑟夫·玛丽·雅卡尔(Joseph Marie Jacquard)发明了第一台用于存储和编程概念的提花织布机。这种织布机利用穿孔卡(类似于存储程序)来控制织布过程中经线的提升。
1823年,查尔斯·巴贝奇(Charles Babbage)发明了一种差分引擎(Difference Engine,也叫差分机),它不仅能够很容易地进行简单数学运算,还可以解多项式方程。1834年,巴贝奇又发明了一种分析引擎(Analytical Engine,也叫分析机),在某种程度上和现代计算机的概念类似。该机器有4个组成部分:一个制造场(现在的算术/逻辑单元)、一个存储单元(存储器)、一个操作者(控制单元)和一个输出单元(输入/输出)。
1884年,美国人口调查局职员赫尔曼·霍列瑞斯(Herman Hollerith)设计并制造出具有编程能力的机器,该机器可以自动阅读、计数和排列存储在穿孔卡上的数据(该机器也称为制表机)。
3.电子计算机
(1)早期的电子计算机
这一阶段大约在1930—1950年期间。这一时期的计算机都是在外部编程的。有以下5台比较杰出的计算机:
①世界上第一台真正意义上的电子数字计算机实际上是1934—1939年由美国衣阿华州立大学物理系副教授约翰·文森特·阿塔纳索夫(John Vincent Atanasoff)和其助手克利福特·贝瑞(Clifford Berry)研制成功的,用了300个电子管,取名为ABC(Atanasoff-Berry Computer)。不过这台机器还只是个样机,并没有完全实现阿塔那索夫的构想。1942年,太平洋战争爆发,阿塔那索夫应征入伍,ABC的研制工作也被迫中断。但是ABC计算机的逻辑结构和电子电路的新颖设计思想却为后来电子计算机的研制工作提供了极大的启发。
②1939年,德国数学家康拉德·楚泽(Konrad Zuse)设计出了首台采用继电器工作的计算机Z1。1939年,Zuse和Schreyer开始在Z1计算机的基础上发展Z2计算机,并用继电器改进存储和计算单元。但这个项目因为Zuse服兵役被中断了一年。
③1937年,在美国海军部和IBM公司的支持下,哈佛大学应用数学教授霍华德·阿肯领导设计了MarkⅠ计算机(该机由IBM承建)。该机既使用了电子部件,也使用了机械部件,由开关、继电器、转轴以及离合器构成。
④第二次世界大战爆发后不久,图灵带领200多位密码专家,研制出名为“邦比”的密码破译机,后又研制出效率更高、功能更强大的密码破译机“巨人”,为破译德国Enigma密码做出了巨大贡献。
⑤1946年2月14日,美国宾夕法尼亚大学宣布“世界上第一台电子多用途数字计算机”ENIAC(Electronic Numerical Integrator And Computer,电子数字积分计算机)诞生,由普雷斯波·埃克特(J. Presper Eckert)和约翰·莫奇利(John Mauchly)领导设计。ENIAC长30.48m,宽6m,占地面积约170m2,有30个操作台,重达30t,功率为150kW。
从技术专利上讲,世界上第一台电子数字计算机应该是ABC计算机,ENIAC是第二台计算机。但从计算机制造实现上来讲,ABC是样机没有形成真正的实用产品,而ENIAC被真实地制造出来,并在实际问题解决中得到应用,所以后来很多学者也是从这个角度认为ENIAC是世界上第一台电子数字计算机。
(2)基于冯·诺依曼模型的计算机
上面介绍的5台计算机的存储单元仅仅用来存储数据,它们利用配线或开关进行外部编程。冯·诺依曼提出了数据和程序都应该存储在存储器中。按照这种方法,当重新运行程序时,就不用重新布线或者调节成百上千的开关。第一台基于冯·诺依曼思想的计算机于1949年在宾夕法尼亚大学诞生,命名为EDVAC(Electronic Discrete Variable Automatic Computer,离散变量自动电子计算机),也由普雷斯波·埃克特和约翰·莫奇利建造设计。1949年,由英国剑桥大学莫里斯·文森特·威尔克斯(Maurice Vincent Wilkes)领导、设计和制造了EDSAC(Electronic Delay Storage Automatic Calculator,电子延迟存储自动计算机),该机使用了汞延迟线作存储器,利用穿孔纸带输入和电传打字机输出。
1950年以后出现的计算机基本上都基于冯·诺依曼模型。
(3)计算机的发展历程
人们按照计算机所使用的电子器件生产工艺的更替来描述计算机的发展过程,从ENIAC诞生算起,对计算机(电子计算机)的发展进行划分。
①第1代计算机(1946—1957年)。特征是:采用电子管作为计算机逻辑元件;计算机体积庞大,可靠性差,输入/输出设备有限;主存容量小;计算速度慢(1000~10000次/秒);主要以单机方式完成科学计算;用机器语言或汇编语言编写程序;确立了计算机的基本结构为冯·诺依曼模型。这一时期的计算机除ENIAC外,其他计算机都是基于冯·诺依曼模型设计制造的。代表机器有IBM-701和美国兰德公司制造的UNIVAC-1等。
②第2代计算机(1958—1964年)。特征是:逻辑元件采用晶体管;用磁心和磁盘做存储器;在体积、重量和功耗方面都比电子管计算机小很多;运算速度得到提高,达几万次/秒到几十万次/秒;主存容量进一步扩大;程序设计语言出现了如FORTRAN、COBOL、ALGOL等高级语言,简化了程序设计;计算机不仅用于科学计算,而且用于数据处理,并开始用于工业控制。代表机器有IBM-7094和CDC1604计算机。
③第3代计算机(1965—1970年)。特征是:采用集成电路(Integrated Circuit,IC)代替了分立元件;半导体存储器逐渐取代了磁心存储器;采用了微程序控制技术;终端设备和远程终端迅速发展,并与通信设备、通信技术相结合,为计算机网络的出现打下了基础;在软件方面,操作系统日益成熟;多处理机、虚拟存储系统以及面向用户软件的发展,丰富了计算机软件资源;计算机体系结构走向系列化、通用化和标准化。代表机器是IBM公司的IBM 360计算机。
④第4代计算机(1970年至今)。特征是:以大规模集成电路(Large-Scale Integration,LSI)或超大规模集成电路(VLSI)为计算机主要功能部件;主存储器采用集成度很高的半导体存储器;在软件方面,发展了数据库系统、分布式操作系统等。第4代计算机的另一个重要分支是以LSI为基础发展起来的微处理器和微型计算机。
⑤第5代计算机。电子计算机经历了4个发展阶段后,目前朝着智能化、网络化、巨型化和微型化等方面展开,智能化的第5代计算机发展成为主要目标。人们希望第5代计算机从“信息处理”转向“知识处理”,真正实现人类大脑功能的延伸。智能计算机的主要特征是具备人工智能,能像人一样思维,并且运算速度极快,其硬件系统支持高度并行和推理,其软件系统能够处理知识信息。神经网络计算机(也称神经元计算机)是智能计算机的重要代表。目前,第5代计算机正在研究和发展之中。
⑥第6代计算机。半导体硅晶片的电路密集,散热问题难以彻底解决,影响了计算机性能的进一步发挥与突破。研究人员发现,脱氧核糖核酸(DNA)的双螺旋结构能容纳巨量信息,其存储量相当于半导体芯片的数百万倍。一个蛋白质分子就是一个存储体,而且阻抗低、能耗小、发热量极低。基于此,利用蛋白质分子制造出基因芯片,研制生物计算机(也称分子计算机、基因计算机),已成为当今计算机技术的最前沿。生物计算机比硅晶片计算机在速度、性能上有质的飞跃,被视为极具发展潜力的“第6代计算机”。目前,生物计算机正在研究中。
(4)我国计算机的发展
我国计算机起步于1956年。1958年研制成功了第一台电子数字计算机103机,1965年5月研制成第一台晶体管计算机109乙机,1971年研制成功第一台集成电路计算机TQ-16,之后相继研制成功各种巨、大、中、小型计算机和微机。
其中,我国自主研制的巨型计算机在世界上处于国际先进行列。1983年12月,由国防科技大学研制成功每秒可进行1亿次运算的“银河Ⅰ号”;1992年,在国防科技大学研制成功运算速度达每秒10亿次的“银河Ⅱ号”;1995年,中科院计算所国家智能计算机研究开发中心研制成功运算速度达每秒25亿次的“曙光1000”大规模并行计算机系统;1997年,国防科技大学又研制成功运算速度达每秒百亿次的“银河Ⅲ号”新一代巨型计算机;1999年,由国家并行计算机工程技术研究中心牵头研制成功的“神威I”的峰值运算速度为每秒3840亿次;2008年8月曙光5000研制成功,标志着中国成为世界上继美国后第二个成功研制浮点速度在每秒百万亿次的超级计算机;2010年,“天河一号”让中国第一次拥有了当时全球最快的超级计算机,该计算机每秒可进行4700万亿次浮点运算、持续速度每秒2566万亿次;2012年9月,神威蓝光高效能计算机由国家并行计算中心研制,按照MPP万亿次架构设计,处理器采用的8704片16核的神威1600,峰值计算速度达到每秒1100万亿次浮点计算,持续计算能力为738万亿次;2013年11月18日,国际TOP500组织公布了最新全球超级计算机500强排行榜榜单,中国国防科学技术大学研制的“天河二号”以峰值计算速度每秒5.49亿亿次、持续计算速度每秒3.39亿亿次双精度浮点运算的优异性能位居榜首,成为全球最快超级计算机。2015年7月13日,国际TOP500组织在德国举行的第45届国际超级计算机大会上发布全球超级计算机500强最新榜单,中国“天河二号”以每秒33.86千万亿次的浮点运算速度第5次蝉联冠军。排名第二的依然为美国能源部下属橡树岭国家实验室的“泰坦”超级计算机(简称“超算”),浮点运算速度为每秒17.59千万亿次;第3~5名分别为美国劳伦斯-利弗莫尔国家实验室的超算“红杉”(每秒运算17.17千万亿次)、日本理化研究所的“京”(每秒运算10.51千万亿次)和美国阿尔贡国家实验室的“米拉”(每秒8.59千万亿次)。
1.1.3 计算机的特点
计算机具有自动连续计算、运算速度快、运算精度高、记忆力强、具有逻辑判断能力、可靠性高、通用性强等特点。具体说明如下:
(1)自动连续计算。由于采用存储程序控制方式,一旦输入编制好的程序,程序启动后,它就能自动地连续执行下去,直到遇到程序内部结束运行的命令为止。
(2)运算速度快。由于计算机是采用高速电子器件组成的,因此能以极高的速度工作,现在普通的微型计算机每秒可执行几百万条指令甚至更多,巨型机每秒则可以执行数亿亿次运算。随着新技术的开发,计算机的运算速度将会不断得到提高。
(3)运算精度高。由于计算机采用二进制数字表示数据,数据的精度取决于这个数的二进制码的位数。可以通过增加计算机能够处理的二进制位数来提高精度,位数越多精度就越高。
(4)记忆力强。计算机存储器具有存储、记忆大量信息的功能,并能进行快速读取。记忆的内容可以是大量数据和计算机程序,需要时,可以快速运行程序和处理数据。
(5)具有逻辑判断能力。计算机具有逻辑判断能力,即在计算机程序执行的过程中,根据上一步程序执行的结果以及逻辑判断条件自动选择下一步要执行的程序命令或方法程序。这一功能不仅使计算机可以解决数值计算问题,也可以解决非数值计算问题,如信息检索、图像识别、逻辑推理等问题,大大扩大了计算机的应用范围。
(6)可靠性高。计算机可靠性包括硬件可靠性和软件可靠性。由于计算机采用大规模集成电路和超大规模集成电路,这些电路经过了严格测试,因此,计算机在硬件上可靠性非常高。在软件上,计算机采用了经过严格测试的指令系统,有严密的数学理论做基础,很多应用程序经过软件工程方法进行严格测试,因此,软件可靠性也非常高。近年来,随着分布式计算、云计算技术的发展,进一步提升了计算机系统的容错能力,使计算机系统的可靠性进一步增强。
(7)通用性强。利用计算机解题时,对于不同的问题,只是执行的程序不同。因此,通过在计算机上运行不同的程序,同一台计算机就能够解决各式各样的问题,应用于不同的领域。例如,现在普通的个人计算机可以进行文档处理、图像处理、音视频处理、办公自动化处理、模拟与仿真计算等问题。
1.1.4 计算机的应用
目前,计算机应用已经深入到社会的各个领域,具体体现在如下几个方面:
(1)科学计算。在科学技术和工程设计中,存在大量的各类数学计算的问题。其特点是数据量不是很大,但计算的工作量很大、很复杂,如解几百个线性联立方程组、大型矩阵计算、高阶微分方程组等,用其他计算工具是难以解决的。
(2)数据处理。数据处理现在常用来泛指在计算机上加工那些非科技工程方面的计算、管理和操作任何形式的数据资料。数据处理应用领域十分广泛,如企业管理、飞机订票、银行业务、证券数据处理、会计电算化、办公自动化等。据统计,数据处理在所有计算机应用中所占比重最大。数据处理的特点是要处理的原始数据量很大,而运算比较简单,处理结果往往以表格或文件的形式存储或输出。
(3)过程控制。采用计算机对连续的工业过程进行控制,称为过程控制。在电力、冶金、石油化工、机械等工业部门采用过程控制,可以提高劳动效率,提高产品质量,降低生产成本,缩短生产周期。
(4)计算机辅助设计、制造和教育。计算机辅助设计(Computer Aided Design,CAD)使用计算机来帮助设计人员进行产品设计,在船舶、飞机、建筑工程、大规模集成电路、机械等方面都在广泛使用CAD。计算机辅助制造(Computer Aided Manufacturing,CAM)帮助产品制造人员进行生产设备的管理、控制和操作,在电子、机械、造船、炼钢、航空、化工等领域广泛利用CAM。计算机辅助教育(Computer Aided Instruction,CAI)是利用计算机程序把教学内容变成软件,以便让学生利用计算机开展学习,使教学内容多样化、形象化,获得更好的教学效果。
(5)人工智能。人工智能是计算机理论科学研究的一个重要领域,是利用计算机软硬件系统模拟人类某些智能行为(如感知、推理、学习、理解等)的理论和技术。其中,最具代表性的两个领域是专家系统和机器人。
(6)多媒体应用。多媒体技术融计算机、声音、文本、图像、动画、视频和通信等多种功能于一体,为人和计算机之间提供了传递自然信息的途径,已用于教育、训练、演示、咨询、管理、出版、办公自动化等多个方面。
(7)计算机网络与通信。随着计算机网络技术、通信技术的发展,计算机在网络与通信中的应用越来越广泛。目前,互联网、移动互联网已把全球大多数用户通过计算机、移动终端联系在一起,物联网的发展与应用将进一步把人与人、人与物、物与物连接起来。人类社会的许多活动,如教育、医疗、购物、政府办公等都可以通过网络完成。未来,计算机网络与通信必然会进一步深入影响到人类社会的方方面面。