第一章,计算机的发明
一、计算机的发展历史
早在17世纪,欧洲一批数学家就已开始设计和制造以数字形式进行基本运算的数字计算机。1642年,法国数学家帕斯卡采用与钟表类似的齿轮传动装置,制成了最早的十进制加法器。1678年,德国数学家莱布尼兹制成的计算机,进一步解决了十进制数的乘、除运算。
英国数学家巴贝奇在1822年制作差分机模型时提出一个设想,每次完成一次算术运算将发展为自动完成某个特定的完整运算过程。1884年,巴贝奇设计了一种程序控制的通用分析机。这台分析机虽然已经描绘出有关程序控制方式计算机的雏型,但限于当时的技术条件而未能实现。
巴贝奇的设想提出以后的一百多年期间,电磁学、电工学、电子学不断取得重大进展,在元件、器件方面接连发明了真空二极管和真空三极管;在系统技术方面,相继发明了无线电报、电视和雷达……。所有这些成就为现代计算机的发展准备了技术和物质条件。
与此同时,数学、物理也相应地蓬勃发展。到了20世纪30年代,物理学的各个领域经历着定量化的阶段,描述各种物理过程的数学方程,其中有的用经典的分析方法已根难解决。于是,数值分析受到了重视,研究出各种数值积分,数值微分,以及微分方程数值解法,把计算过程归结为巨量的基本运算,从而奠定了现代计算机的数值算法基础。
社会上对先进计算工具多方面迫切的需要,是促使现代计算机诞生的根本动力。20世纪以后,各个科学领域和技术部门的计算困难堆积如山,已经阻碍了学科的继续发展。特别是第二次世界大战爆发前后,军事科学技术对高速计算工具的需要尤为迫切。在此期间,德国、美国、英国部在进行计算机的开拓工作,几乎同时开始了机电式计算机和电子计算机的研究。
1936年,英国数学家阿诺·图灵发表了他那篇具有里程碑意义的论文《论数字计算在解决策略问题中的应用》,在文中提出了“图灵机”的构想。图灵机不是一台具体的机器,而是一种抽象计算模型。他证明了任何可计算的函数都存在相应的图灵机,反之,不存在相应图灵机的函数就是不具有可计算其函数值算法的函数。这意味着,任何复杂的可解的问题都可以划归为一些列简单重复的运算。
德国的朱赛最先采用电气元件制造计算机。他在1941年制成的全自动继电器计算机Z-3,已具备浮点记数、二进制运算、数字存储地址的指令形式等现代计算机的特征。在美国,1940~1947年期间也相继制成了继电器计算机MARK-1、MARK-2、Model-1、Model-5等。不过,继电器的开关速度大约为百分之一秒,使计算机的运算速度受到很大限制。
电子计算机的开拓过程,经历了从制作部件到整机从专用机到通用机、从“外加式程序”到“存储程序”的演变。1938年,美籍保加利亚学者阿塔纳索夫首先制成了电子计算机的运算部件。1943年,英国外交部通信处制成了“巨人”电子计算机。这是一种专用的密码分析机,在第二次世界大战中得到了应用。
1946年2月美国宾夕法尼亚大学莫尔学院制成的大型电子数字积分计算机(ENIAC),最初也专门用于火炮弹道计算,后经多次改进而成为能进行各种科学计算的通用计算机。这台完全采用电子线路执行算术运算、逻辑运算和信息存储的计算机,运算速度比继电器计算机快1000倍。这就是人们常常提到的世界上第一台电子计算机。但是,这种计算机的程序仍然是外加式的,存储容量也太小,尚未完全具备现代计算机的主要特征。
新的重大突破是由数学家冯·诺伊曼领导的设计小组完成的。1945年3月他们发表了一个全新的存储程序式通用电子计算机方案—电子离散变量自动计算机(EDVAC)。随后于1946年6月,冯·诺伊曼等人提出了更为完善的设计报告《电子计算机装置逻辑结构初探》。同年7~8月间,他们又在莫尔学院为美国和英国二十多个机构的专家讲授了专门课程《电子计算机设计的理论和技术》,推动了存储程序式计算机的设计与制造。
1949年,英国剑桥大学数学实验室率先制成电子离散时序自动计算机(EDSAC);美国则于1950年制成了东部标准自动计算机(SFAC)等。至此,电子计算机发展的萌芽时期遂告结束,开始了现代计算机的发展时期。
在创制数字计算机的同时,还研制了另一类重要的计算工具——模拟计算机。物理学家在总结自然规律时,常用数学方程描述某一过程;相反,解数学方程的过程,也有可能采用物理过程模拟方法,对数发明以后,1620年制成的计算尺,己把乘法、除法化为加法、减法进行计算。麦克斯韦巧妙地把积分(面积)的计算转变为长度的测量,于1855年制成了积分仪。
19世纪数学物理的另一项重大成就——傅里叶分析,对模拟机的发展起到了直接的推动作用。19世纪后期和20世纪前期,相继制成了多种计算傅里叶系数的分析机和解微分方程的微分分析机等。但是当试图推广微分分析机解偏微分方程和用模拟机解决一般科学计算问题时,人们逐渐认识到模拟机在通用性和精确度等方面的局限性,并将主要精力转向了数字计算机。
电子数字计算机问世以后,模拟计算机仍然继续有所发展,并且与数字计算机相结合而产生了混合式计算机。模拟机和混合机已发展成为现代计算机的特殊品种,即用在特定领域的高效信息处理工具或仿真工具。
20世纪中期以来,计算机一直处于高速度发展时期,计算机由仅包含硬件发展到包含硬件、软件和固件三类子系统的计算机系统。计算机系统的性能—价格比,平均每10年提高两个数量级。计算机种类也一再分化,发展成微型计算机、小型计算机、通用计算机(包括巨型、大型和中型计算机),以及各种专用机(如各种控制计算机、模拟—数字混合计算机)等。
计算机器件从电子管到晶体管,再从分立元件到集成电路以至微处理器,促使计算机的发展出现了三次飞跃。
在电子管计算机时期(1946~1959),计算机主要用于科学计算。主存储器是决定计算机技术面貌的主要因素。当时,主存储器有水银延迟线存储器、阴极射线示波管静电存储器、磁鼓和磁心存储器等类型,通常按此对计算机进行分类。
到了晶体管计算机时期(1959~1964),主存储器均采用磁心存储器,磁鼓和磁盘开始用作主要的辅助存储器。不仅科学计算用计算机继续发展,而且中、小型计算机,特别是廉价的小型数据处理用计算机开始大量生产。
1964年,在集成电路计算机发展的同时,计算机也进入了产品系列化的发展时期。半导体存储器逐步取代了磁心存储器的主存储器地位,磁盘成了不可缺少的辅助存储器,并且开始普遍采用虚拟存储技术。随着各种半导体只读存储器和可改写的只读存储器的迅速发展,以及微程序技术的发展和应用,计算机系统中开始出现固件子系统。
20世纪70年代以后,计算机用集成电路的集成度迅速从中小规模发展到大规模、超大规模的水平,微处理器和微型计算机应运而生,各类计算机的性能迅速提高。随着字长4位、8位、16位、32位和64位的微型计算机相继问世和广泛应用,对小型计算机、通用计算机和专用计算机的需求量也相应增长了。
微型计算机在社会上大量应用后,一座办公楼、一所学校、一个仓库常常拥有数十台以至数百台计算机。实现它们互连的局部网随即兴起,进一步推动了计算机应用系统从集中式系统向分布式系统的发展。
在电子管计算机时期,一些计算机配置了汇编语言和子程序库,科学计算用的高级语言FORTRAN初露头角。在晶体管计算机阶段,事务处理的COBOL语言、科学计算机用的ALGOL语言,和符号处理用的LISP等高级语言开始进入实用阶段。操作系统初步成型,使计算机的使用方式由手工操作改变为自动作业管理。
进入集成电路计算机发展时期以后,在计算机中形成了相当规模的软件子系统,高级语言种类进一步增加,操作系统日趋完善,具备批量处理、分时处理、实时处理等多种功能。数据库管理系统、通信处理程序、网络软件等也不断增添到软件子系统中。软件子系统的功能不断增强,明显地改变了计算机的使用属性,使用效率显著提高。
在现代计算机中,外围设备的价值一般已超过计算机硬件子系统的一半以上,其技术水平在很大程度上决定着计算机的技术面貌。外围设备技术的综合性很强,既依赖于电子学、机械学、光学、磁学等多门学科知识的综合,又取决于精密机械工艺、电气和电子加工工艺以及计量的技术和工艺水平等。
外围设备包括辅助存储器和输入输出设备两大类。辅助存储器包括磁盘、磁鼓、磁带、激光存储器、海量存储器和缩微存储器等;输入输出设备又分为输入、输出、转换、、模式信息处理设备和终端设备。在这些品种繁多的设备中,对计算机技术面貌影响最大的是磁盘、终端设备、模式信息处理设备和转换设备等。
新一代计算机是把信息采集存储处理、通信和人工智能结合在一起的智能计算机系统。它不仅能进行一般信息处理,而且能面向知识处理,具有形式化推理、联想、学习和解释的能力,将能帮助人类开拓未知的领域和获得新的知识。
计算机在各行各业中的广泛应用,常常产生显著的经济效益和社会效益,从而引起产业结构、产品结构、经营管理和服务方式等方面的重大变革。在产业结构中已出观了计算机制造业和计算机服务业,以及知识产业等新的行业。
说计算机是谁发明的,其实有些恰当,因为计算机不是一个人发明,甚至不是一个独立的组织或者机构发明的,后人总是站在前人的肩上继续攀登。计算机不知道是多少代人心血的结晶,人类文明总是伴随着各种各样的工具的发明和改良,应该说计算机是人类文明的产物。另外,我相信文明发展到一定程度也必然会产生计算机,麦克卢汉说媒介是人的延伸,计算机就是人类脑力的延伸,当人类在肢体上的延伸到达一定程度后,人类需要更为高级和高效的延伸。
二、图灵机
- 一条无限长的纸带 TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0,1,2,... ,纸带的右端可以无限伸展。
- 一个读写头 HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
- 一套控制规则 TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。
- 一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。
三、冯诺依曼体系结构
- 计算机处理的数据和指令一律用二进制数表
- 顺序存储程序。计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序存储程序。
- 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成