1、计算工具的发展简史现在我们所说的计算机,其全称是通用电子数字计算机,“通用” 是指计算机可服务于多种用途,“电子 ”是指计算机是一种电子设备, “数字”是指在计算机内部一切信息均用 0和 1 的编码来表示。计算机的出现是 20 世纪最卓越的成就之一,计算机的广泛应用极大地促进了生产力的发展。自古以来,人类就在不断地发明和改进计算工具,从古老的“结绳记事” ,到算盘、计算尺、差分机,直到 1946 年第一台电子计算机诞生,计算工具经历了从简单到复杂、从低级到高级、从手动到自动的发展过程,而且还在不断发展。回顾计算工具的发展历史,从中可以得到许多有益的启示。1. 手动式计算工具人类最初用手指进行计
2、算。人有两只手,十个手指头,所以,自然而然地习惯用手指记数并采用十进制记数法。用手指进行计算虽然很方便,但计算范围有限,计算结果也无法存储。于是人们用绳子、石子等作为工具来延长手指的计算能力,如中国古书中记载的“上古结绳而治” ,拉丁文中“Calculus”的本意是用于计算的小石子。最原始的人造计算工具是算筹,我国古代劳动人民最先创造和使用了这种简单的计算工具。算筹最早出现在何时,现在已经无法考证,但在春秋战国时期,算筹使用的已经非常普遍了。根据史书的记载,算筹是一根根同样长短和粗细的小棍子,一般长为 1314cm,径粗 0.20.3cm,多用竹子制成,也有用木头、兽骨、象牙、金属等材料制成的
3、,如图 1 所示。算筹采用十进制记数法,有纵式和横式两种摆法,这两种摆法都可以表示 1、2、3 、4、5 、6 、7 、8 、9 九个数字,数字 0 用空位表示,如图 2 所示。算筹的记数方法为:个位用纵式,十位用横式,百位用纵式,千位用横式,这样从右到左,纵横相间,就可以表示任意大的自然数了。图 1 算筹 图 2 算筹的摆法图 3 算盘 图 4 纳皮尔算筹计算工具发展史上的第一次重大改革是算盘,也是我国古代劳动人民首先创造和使用的。算盘由算筹演变而来,并且和算筹并存竞争了一个时期,终于在元代后期取代了算筹。算盘轻巧灵活、携带方便,应用极为广泛,先后流传到日本、朝鲜和东南亚等国家,后来又传入西
4、方。算盘采用十进制记数法并有一整套计算口诀,例如“三下五除二” 、“七上八下” 等,这是最早的体系化算法。算盘能够进行基本的算术运算,是公认的最早使用的计算工具。1617 年,英国数学家约翰纳皮尔(John Napier)发明了 Napier 乘除器,也称 Napier 算筹,如图 4 所示。Napier 算筹由十根长条状的木棍组成,每根木棍的表面雕刻着一位数字的乘法表,右边第一根木棍是固定的,其余木棍可以根据计算的需要进行拼合和调换位置。Napier 算筹可以用加法和一位数乘法代替多位数乘法,也可以用除数为一位数的除法和减法代替多位数除法,从而大大简化了数值计算过程。1621 年,英国数学家
5、威廉奥特雷德( William Oughtred)根据对数原理发明了圆形计算尺,也称对数计算尺。对数计算尺在两个圆盘的边缘标注对数刻度,然后让它们相对转动,就可以基于对数原理用加减运算来实现乘除运算。17 世纪中期,对数计算尺改进为尺座和在尺座内部移动的滑尺。18 世纪末,发明蒸汽机的瓦特独具匠心,在尺座上添置了一个滑标,用来存储计算的中间结果。对数计算尺不仅能进行加、减、乘、除、乘方、开方运算,甚至可以计算三角函数、指数函数和对数函数,它一直使用到袖珍电子计算器面世。即使在 20 世纪 60 年代,对数计算尺仍然是理工科大学生必须掌握的基本功,是工程师身份的一种象征。图 5 所示是 1968
6、 年由上海计算尺厂生产的对数计算尺。图 5 对数计算尺2. 机械式计算工具17 世纪,欧洲出现了利用齿轮技术的计算工具。1642 年,法国数学家帕斯卡(Blaise Pascal)发明了帕斯卡加法器,这是人类历史上第一台机械式计算工具,其原理对后来的计算工具产生了持久的影响。如图 6 所示,帕斯卡加法器是由齿轮组成、以发条为动力、通过转动齿轮来实现加减运算、用连杆实现进位的计算装置。帕斯卡从加法器的成功中得出结论:人的某些思维过程与机械过程没有差别,因此可以设想用机械来模拟人的思维活动。德国数学家莱布尼茨(G .W .Leibnitz)发现了帕斯卡一篇关于“ 帕斯卡加法器”的论文,激发了他强烈
7、的发明欲望,决心把这种机器的功能扩大为乘除运算。1673 年,莱布尼茨研制了一台能进行四则运算的机械式计算器,称为莱布尼兹四则运算器,如图 7 所示。这台机器在进行乘法运算时采用进位-加(shift-add)的方法,后来演化为二进制,被现代计算机采用。图 6 帕斯卡加法器 图 7 莱布尼茨四则运算器莱布尼茨四则运算器在计算工具的发展史上是一个小高潮,此后的一百多年中,虽有不少类似的计算工具出现,但除了在灵活性上有所改进外,都没有突破手动机械的框架,使用齿轮、连杆组装起来的计算设备限制了它的功能、速度以及可靠性。1804 年,法国机械师约瑟夫 雅各(Joseph Jacquard)发明了可编程织
8、布机,通过读取穿孔卡片上的编码信息来自动控制织布机的编织图案,引起法国纺织工业革命。雅各织布机虽然不是计算工具,但是它第一次使用了穿孔卡片这种输入方式。如果找不到输入信息和控制操作的机械方法,那么真正意义上的机械式计算工具是不可能出现的。直到 20世纪 70 年代,穿孔卡片这种输入方式还在普遍使用。19 世纪初,英国数学家查尔斯 巴贝奇(Charles Babbage)取得了突破性进展。巴贝奇在剑桥大学求学期间,正是英国工业革命兴起之时,为了解决航海、工业生产和科学研究中的复杂计算,许多数学表(如对数表、函数表)应运而生。这些数学表虽然带来了一定的方便,但由于采用人工计算,其中的错误很多。巴贝
9、奇决心研制新的计算工具,用机器取代人工来计算这些实用价值很高的数学表。1822 年,巴贝奇开始研制差分机,专门用于航海和天文计算,在英国政府的支持下,差分机历时 10 年研制成功,这是最早采用寄存器来存储数据的计算工具,体现了早期程序设计思想的萌芽,使计算工具从手动机械跃入自动机械的新时代。1832 年,巴贝奇开始进行分析机的研究。在分析机的设计中,巴贝奇采用了三个具有现代意义的装置: 存储装置:采用齿轮式装置的寄存器保存数据,既能存储运算数据,又能存储运算结果; 运算装置:从寄存器取出数据进行加、减、乘、除运算,并且乘法是以累次加法来实现,还能根据运算结果的状态改变计算的进程,用现代术语来说
10、,就是条件转移; 控制装置:使用指令自动控制操作顺序、选择所需处理的数据以及输出结果。巴贝奇的分析机是可编程计算机的设计蓝图,实际上,我们今天使用的每一台计算机都遵循着巴贝奇的基本设计方案。但是巴贝奇先进的设计思想超越了当时的客观现实,由于当时的机械加工技术还达不到所要求的精度,使得这部以齿轮为元件、以蒸汽为动力的分析机一直到巴贝奇去世也没有完成。图 8 巴贝奇差分机3. 机电式计算机1886 年,美国统计学家赫尔曼 霍勒瑞斯(Herman Hollerith)借鉴了雅各织布机的穿孔卡原理,用穿孔卡片存储数据,采用机电技术取代了纯机械装置,制造了第一台可以自动进行加减四则运算、累计存档、制作报
11、表的制表机,这台制表机参与了美国 1890 年的人口普查工作,使预计 10 年的统计工作仅用 1 年零 7 个月就完成了,是人类历史上第一次利用计算机进行大规模的数据处理。霍勒瑞斯于 1896 年创建了制表机公司 TMC 公司,1911 年,TMC 与另外两家公司合并,成立了 CTR 公司。1924 年,CTR 公司改名为国际商业机器公司(International Business Machines Corporation),这就是赫赫有名的 IBM 公司。1938 年,德国工程师朱斯( K.Zuse)研制出 Z-1 计算机,这是第一台采用二进制的计算机。在接下来的四年中,朱斯先后研制出采用
12、继电器的计算机 Z-2、Z-3 、Z-4。Z-3 是世界上第一台真正的通用程序控制计算机,不仅全部采用继电器,同时采用了浮点记数法、二进制运算、带存储地址的指令形式等。这些设计思想虽然在朱斯之前已经提出过,但朱斯第一次将这些设计思想具体实现。在一次空袭中,朱斯的住宅和包括 Z-3 在内的计算机统统被炸毁。德国战败后,朱斯流亡到瑞士一个偏僻的乡村,转向计算机软件理论的研究。图 9 制表机用于美国人口普查 图 10 Z 系列计算机1936 年,美国哈佛大学应用数学教授霍华德艾肯(Howard Aiken)在读过巴贝奇和爱达的笔记后,发现了巴贝奇的设计,并被巴贝奇的远见卓识所震惊。艾肯提出用机电的方
13、法,而不是纯机械的方法来实现巴贝奇的分析机。在 IBM 公司的资助下, 1944 年研制成功了机电式计算机 Mark-I。Mark-I 长 15.5 米,高 2.4 米,由 75 万个零部件组成,使用了大量的继电器作为开关元件,存储容量为 72 个 23 位十进制数,采用了穿孔纸带进行程序控制。它的计算速度很慢,执行一次加法操作需要 0.3 秒,并且噪声很大。尽管它的可靠性不高,仍然在哈佛大学使用了 15 年。Mark-I 只是部分使用了继电器,1947 年研制成功的计算机 Mark-全部使用继电器。图 11 Mark-I艾肯等人制造的机电式计算机,其典型部件是普通的继电器,继电器的开关速度是
14、 1/100 秒,使得机电式计算机的运算速度受到限制。20 世纪 30 年代已经具备了制造电子计算机的技术能力,机电式计算机从一开始就注定要很快被电子计算机替代。事实上,电子计算机和机电式计算机的研制几乎是同时开始的。4. 电子计算机1939 年,美国依阿华州大学数学物理学教授约翰 阿塔纳索夫(John Atanasoff)和他的研究生贝利(Clifford Berry)一起研制了一台称为 ABC(Atanasoff Berry Computer)的电子计算机。由于经费的限制,他们只研制了一个能够求解包含 30 个未知数的线性代数方程组的样机。在阿塔纳索夫的设计方案中,第一次提出采用电子技术来
15、提高计算机的运算速度。第二次世界大战中,美国宾夕法尼亚大学物理学教授约翰“莫克利(John Mauchly)和他的研究生普雷斯帕“埃克特( Presper Eckert)受军械部的委托,为计算弹道和射击表启动了研制 ENIAC(Electronic Numerical Integrator and Computer)的计划,1946 年2 月 15 日,这台标志人类计算工具历史性变革的巨型机器宣告竣工。 ENIAC 是一个庞然大物,共使用了 18 000 多个电子管、1 500 多个继电器、10 000 多个电容和 7 000 多个电阻,占地 167 平方公尺,重达 30 吨。ENIAC 的最
16、大特点就是采用电子器件代替机械齿轮或电动机械来执行算术运算、逻辑运算和存储信息,因此,同以往的计算机相比,ENIAC最突出的优点就是高速度。ENIAC 每秒能完成 5 000 次加法,300 多次乘法,比当时最快的计算工具快 1 000 多倍。ENIAC 是世界上第一台能真正运转的大型电子计算机,ENIAC的出现标志着电子计算机(以下称计算机)时代的到来。虽然 ENIAC 显示了电子元件在进行初等运算速度上的优越性,但没有最大限度地实现电子技术所提供的巨大潜力。ENIAC 的主要缺点是:第一,存储容量小,至多存储 20个 10 位的十进制数;第二,程序是“ 外插型”的,为了进行几分钟的计算,接
17、通各种开关和线路的准备工作就要用几个小时。新生的电子计算机需要人们用千百年来制造计算工具的经验和智慧赋予更合理的结构,从而获得更强的生命力。1945 年 6 月,普林斯顿大学数学教授冯 “诺依曼(Von Neumann)发表了 EDVAC(Electronic Discrete Variable Computer,离散变量自动电子计算机)方案,确立了现代计算机的基本结构,提出计算机应具有五个基本组成成分:运算器、控制器、存储器、输入设备和输出设备,描述了这五大部分的功能和相互关系,并提出“采用二进制” 和“存储程序”这两个重要的基本思想。迄今为止,大部分计算机仍基本上遵循冯“ 诺依曼结构。需要
18、强调的是,EDVAC 方案是集体智慧的结晶,冯“诺依曼的伟大功绩在于他运用雄厚的数理知识和非凡的分析、综合能力,在 EDVAC 的总体配置和逻辑设计中起到了关键的作用。可以说,现代计算机的发明决不是仅凭杰出科学家的个人努力就能完成的事业,研制电子计算机不仅需要巨大的资金,而且需要数学家、逻辑学家、电子工程师以及组织管理人员的密切合作,需要团队的共同努力。图 12 ENIAC 计算机二、计算机发展简史计算机系统由计算机硬件和计算机软件构成,计算机硬件是指构成计算机系统的所有物理器件(集成电路、电路板以及其他磁性元件和电子元件等)、部件和设备(控制器、运算器、存储器、输入输出设备等)的集合,计算机
19、软件是指用程序设计语言编写的程序,以及运行程序所需的文档、数据的集合。自计算机诞生之日起,人们探索的重点不仅在于建造运算速度更快、处理能力更强的计算机,而且在于开发能让人们更有效地使用这种计算设备的各种软件。1. 计算机硬件的发展简史计算机硬件的发展以用于构建计算机硬件的元器件的发展为主要特征,而元器件的发展与电子技术的发展紧密相关,每当电子技术有突破性的进展,就会导致计算机硬件的一次重大变革。因此,计算机硬件发展史中的“代” 通常以其所使用的主要器件,即电子管、晶体管、集成电路、大规模集成电路和超大规模集成电路来划分。第一代计算机(19461958)第一代计算机以 1946 年 ENIAC
20、的研制成功为标志。这个时期的计算机都是建立在电子管基础上,笨重而且产生很多热量,容易损坏;存储设备比较落后,最初使用延迟线和静电存储器,容量很小,后来采用磁鼓(磁鼓在读/写臂下旋转,当被访问的存储器单元旋转到读/写臂下时,数据被写入这个单元或从这个单元中读出),有了很大改进;输入设备是读卡机,可以读取穿孔卡片上的孔,输出设备是穿孔卡片机和行式打印机,速度很慢。在这个时代将要结束时,出现了磁带驱动器(磁带是顺序存储设备,也就是说,必须按线性顺序访问磁带上的数据),它比读卡机快得多。1949 年 5 月,英国剑桥大学莫里斯 威尔克斯(Maurice Wilkes)教授研制了世界上第一台存储程序式计
21、算机 EDSAC(Electronic Delay Storage Automatic Computer),它使用机器语言编程,可以存储程序和数据并自动处理数据,存储和处理信息的方法开始发生革命性变化。1951 年问世的 UNIVAC 因准确预测了 1952 年美国大选艾森豪威尔的获胜,得到社会各阶层的认识和欢迎。1953 年,IBM 公司生产了第一台商业化的计算机 IBM701,使计算机向商业化迈进。这个时期的计算机非常昂贵,而且不易操作,只有一些大的机构,如政府和一些主要的银行才买得起,这还不算容纳这些计算机所需要的可控制温度的机房和能够进行计算机编程的技术人员。第二代计算机(195919
22、64)第二代计算机以 1959 年美国菲尔克公司研制成功的第一台大型通用晶体管计算机为标志。这个时期的计算机用晶体管取代了电子管,晶体管具有体积小、重量轻、发热少、耗电省、速度快、价格低、寿命长等一系列优点,使计算机的结构与性能都发生了很大改变。20 世纪 50 年代末,内存储器技术的重大革新是麻省理工学院研制的磁芯存储器,这是一种微小的环形设备,每个磁芯可以存储一位信息,若干个磁芯排成一列,构成存储单元。磁芯存储器稳定而且可靠,成为这个时期存储器的工业标准。这个时期的辅助存储设备出现了磁盘,磁盘上的数据都有位置标识符 称为地址,磁盘的读/写头可以直接被送到磁盘上的特定位置,因而比磁带的存取速
23、度快得多。20 世纪 60 年代初,出现了通道和中断装置,解决了主机和外设并行工作的问题。通道和中断的出现在硬件的发展史上是一个飞跃,使得处理器可以从繁忙的控制输入/输出的工作中解脱出来。这个时期的计算机广泛应用在科学研究、商业和工程应用等领域,典型的计算机有 IBM 公司生产的 IBM7094 和 CDC(Control Data Corporation,控制数据公司)生产的 CDC1640 等。但是,第二代计算机的输入输出设备很慢,无法与主机的计算速度相匹配。这个问题在第三代计算机中得到了解决。第三代计算机(19651970)第三代计算机以 IBM 公司研制成功的 360 系列计算机为标志
24、。在第二代计算机中,晶体管和其他元件都是手工集成在印刷电路板上,第三代计算机的特征是集成电路。所谓集成电路是将大量的晶体管和电子线路组合在一块硅片上,故又称其为芯片。制造芯片的原材料相当便宜,硅是地壳里含量第二的常见元素,是海滩沙石的主要成分,因此采用硅材料的计算机芯片可以廉价地批量生产。这个时期的内存储器用半导体存储器淘汰了磁芯存储器,使存储容量和存取速度有了大幅度的提高;输入设备出现了键盘,使用户可以直接访问计算机;输出设备出现了显示器,可以向用户提供立即响应。为了满足中小企业与政府机构日益增多的计算机应用,第三代计算机出现了小型计算机。1965 年,DEC(Digital Equipme
25、nt Corporation,数字设备公司)推出了第一台商业化的以集成电路为主要器件的小型计算机 PDP8。第四代计算机(1971至今)第四代计算机以 Intel 公司研制的第一代微处理器 Intel 4004 为标志,这个时期的计算机最为显著的特征是使用了大规模集成电路和超大规模集成电路。所谓微处理器是将 CPU 集成在一块芯片上,微处理器的发明使计算机在外观、处理能力、价格以及实用性等方面发生了深刻的变化。第四代计算机要算微型计算机最为引人注目了,微型计算机的诞生是超大规模集成电路应用的直接结果。微型计算机的“微” 主要体现在它的体积小、重量轻、功耗低、价格便宜。1977 年苹果计算机公司
26、成立,先后成功开发了 APPLE-I 型和 APPLE-II 型微型计算机。1980 年 IBM 公司与微软公司合作,为微型计算机 IBM PC 配置了专门的操作系统。从 1981 年开始,IBM 连续推出 IBM PC、PC/XT 、PC/AT 等机型。时至今日,奔腾系列微处理器应运而生,使得现在的微型计算机体积越来越小、性能越来越强、可靠性越来越高、价格越来越低。微处理器和微型计算机的出现不仅深刻地影响着计算机技术本身的发展,同时也使计算机技术渗透到了社会生活的各个方面,极大地推动了计算机的普及。尽管微型计算机对人类社会的影响深远,但是微型计算机并没有完全取代大型计算机,大型计算机也在发展
27、。利用大规模集成电路制造出的多种逻辑芯片,组装出大型计算机、巨型计算机,使运算速度更快、存储容量更大、处理能力更强,这些企业级的计算机一般要放到可控制温度的机房里,因此很难被普通公众看到。20 世纪 80 年代,多用户大型机的概念被小型机器连接成的网络所代替,这些小型机器通过连网共享打印机、软件和数据等资源。计算机网络技术使计算机应用从单机走向网络,并逐渐从独立网络走向互联网络。20 世界 80 年代末,出现了新的计算机体系结构 并行体系结构,一种典型的并行结构是所有处理器共享同一个内存。虽然把多个处理器组织在一台计算机中存在巨大的潜能,但是为这种并行计算机进行程序设计的难度也相当高。由于计算
28、机仍然在使用电路板,仍然在使用微处理器,仍然没有突破冯诺伊曼体系结构,所以我们不能为这一代计算机划上休止符。但是,生物计算机、量子计算机等新型计算机已经出现,我们拭目以待第五代计算机的到来。2. 计算机软件的发展简史计算机软件技术发展很快。50 年前,计算机只能被高素质的专家使用,今天,计算机的使用非常普遍,甚至没有上学的小孩都可以灵活操作;40 年前,文件不能方便地在两台计算机之间进行交换,甚至在同一台计算机的两个不同的应用程序之间进行交换也很困难,今天,网络在两个平台和应用程序之间提供了无损的文件传输;30 年前,多个应用程序不能方便地共享相同的数据,今天,数据库技术使得多个用户、多个应用
29、程序可以互相覆盖地共享数据。了解计算机软件的进化过程,对理解计算机软件在计算机系统中的作用至关重要。第一代软件(19461953)第一代软件是用机器语言编写的,机器语言是内置在计算机电路中的指令,由 0 和 1组成。例如计算 2+6 在某种计算机上的机器语言指令如下:10110000 0000011000000100 0000001010100010 01010000第一条指令表示将“6”送到寄存器 AL 中,第二条指令表示将“2”与寄存器 AL 中的内容相加,结果仍在寄存器 AL 中,第三条指令表示将 AL 中的内容送到地址为 5 的单元中。不同的计算机使用不同的机器语言,程序员必须记住每条
30、及其语言指令的二进制数字组合,因此,只有少数专业人员能够为计算机编写程序,这就大大限制了计算机的推广和使用。用机器语言进行程序设计不仅枯燥费时,而且容易出错。想一想如何在一页全是 0和 1 的纸上找一个打错的字符!在这个时代的末期出现了汇编语言,它使用助记符(一种辅助记忆方法,采用字母的缩写来表示指令)表示每条机器语言指令,例如 ADD 表示加,SUB 表示减,MOV 表示移动数据。相对于机器语言,用汇编语言编写程序就容易多了。例如计算 2+6 的汇编语言指令如下:MOV AL,6ADD AL,2MOV #5,AL由于程序最终在计算机上执行时采用的都是机器语言,所以需要用一种称为汇编器的翻译程
31、序,把用汇编语言编写的程序翻译成机器代码。编写汇编器的程序员简化了他人的程序设计,是最初的系统程序员。第二代软件(19541964)当硬件变得更强大时,就需要更强大的软件工具使计算机得到更有效地使用。汇编语言向正确的方向前进了一大步,但是程序员还是必须记住很多汇编指令。第二代软件开始使用高级程序设计语言(简称高级语言,相应地,机器语言和汇编语言称为低级语言)编写,高级语言的指令形式类似于自然语言和数学语言(例如计算 2+6 的高级语言指令就是2+6),不仅容易学习,方便编程,也提高了程序的可读性。IBM 公司从 1954 年开始研制高级语言,同年发明了第一个用于科学与工程计算的 FORTRAN
32、 语言。1958 年,麻省理工学院的麦卡锡(John Macarthy)发明了第一个用于人工智能的 LISP 语言。1959 年,宾州大学的霍普( Grace Hopper)发明了第一个用于商业应用程序设计的 COBOL 语言。1964 年达特茅斯学院的凯梅尼(John Kemeny)和卡茨(Thomas Kurtz)发明了 BASIC 语言。高级语言的出现产生了在多台计算机上运行同一个程序的模式,每种高级语言都有配套的翻译程序(称为编译器),编译器可以把高级语言编写的语句翻译成等价的机器指令。系统程序员的角色变得更加明显,系统程序员编写诸如编译器这样的辅助工具,使用这些工具编写应用程序的人,
33、称为应用程序员。随着包围硬件的软件变得越来越复杂,应用程序员离计算机硬件越来越远了。那些仅仅使用高级语言编程的人不需要懂得机器语言和汇编语言,这就降低了对应用程序员在硬件及机器指令方面的要求。因此,这个时期有更多的计算机应用领域的人员参与程序设计。由于高级语言程序需要转换为机器语言程序来执行,因此,高级语言对软硬件资源的消耗就更多,运行效率也较低。由于汇编语言和机器语言可以利用计算机的所有硬件特性并直接控制硬件,同时,汇编语言和机器语言的运行效率较高,因此,在实时控制、实时检测等领域的许多应用程序仍然使用汇编语言和机器语言来编写。在第一代和第二代软件时期,计算机软件实际上就是规模较小的程序,程
34、序的编写者和使用者往往是同一个(或同一组)人。由于程序规模小,程序编写起来比较容易,也没有什么系统化的方法,对软件的开发过程更没有进行任何管理。这种个体化的软件开发环境使得软件设计往往只是在人们头脑中隐含进行的一个模糊过程,除了程序清单之外,没有其他文档资料。第三代软件(19651970)在这个时期,由于用集成电路取代了晶体管,处理器的运算速度得到了大幅度的提高,处理器在等待运算器准备下一个作业时,无所事事。因此需要编写一种程序,使所有计算机资源处于计算机的控制中,这种程序就是操作系统。用作输入/输出设备的计算机终端的出现,使用户能够直接访问计算机,而不断发展的系统软件则使计算机运转得更快。但
35、是,从键盘和屏幕输入输出数据是个很慢的过程,比在内存中执行指令慢得多,这就导致了如何利用机器越来越强大的能力和速度的问题。解决方法就是分时,即许多用户用各自的终端同时与一台计算机进行通信。控制这一进程的是分时操作系统,它负责组织和安排各个作业。1967 年,塞缪尔(A.L.Samuel)发明了第一个下棋程序,开始了人工智能的研究。1968 年荷兰计算机科学家狄杰斯特拉(Edsgar W.Dijkstra)发表了论文GOTO 语句的害处,指出调试和修改程序的困难与程序中包含 GOTO 语句的数量成正比,从此,各种结构化程序设计理念逐渐确立起来。20 世纪 60 年代以来,计算机用于管理的数据规模
36、更为庞大,应用越来越广泛,同时,多种应用、多种语言互相覆盖地共享数据集合的要求越来越强烈。为解决多用户、多应用共享数据的需求,使数据为尽可能多的应用程序服务,出现了数据库技术,以及统一管理数据的软件系统 数据库管理系统 DBMS。随着计算机应用的日益普及,软件数量急剧膨胀,在计算机软件的开发和维护过程中出现了一系列严重问题,例如:在程序运行时发现的问题必须设法改正;用户有了新的需求必须相应地修改程序;硬件或操作系统更新时,通常需要修改程序以适应新的环境。上述种种软件维护工作,以令人吃惊的比例消耗资源,更严重的是,许多程序的个体化特性使得他们最终成为不可维护的,“软件危机” 就这样开始出现了。
37、1968 年,北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,在这次会议上正式提出并使用了“软件工程 ”这个名词。第四代软件(19711989)20 世纪 70 年代出现了结构化程序设计技术, Pascal 语言和 Modula-2 语言都是采用结构化程序设计规则制定的,Basic 这种为第三代计算机设计的语言也被升级为具有结构化的版本,此外,还出现了灵活且功能强大的 C 语言。更好用、更强大的操作系统被开发了出来。为 IBM PC 开发的 PC-DOS 和为兼容机开发的 MS-DOS 都成了微型计算机的标准操作系统,Macintosh 机的操作系统引入了鼠标的概念和点
38、击式的图形界面,彻底改变了人机交互的方式。20 世纪 80 年代,随着微电子和数字化声像技术的发展,在计算机应用程序中开始使用图像、声音等多媒体信息,出现了多媒体计算机。多媒体技术的发展使计算机的应用进入了一个新阶段。这个时期出现了多用途的应用程序,这些应用程序面向没有任何计算机经验的用户。典型的应用程序是电子制表软件、文字处理软件和数据库管理软件。Lotus1-2-3 是第一个商用电子制表软件,WordPerfect 是第一个商用文字处理软件,dBase III 是第一个实用的数据库管理软件。第五代软件(1990)第五代软件中有三个著名事件:在计算机软件业具有主导地位的 Microsoft
39、公司的崛起、面向对象的程序设计方法的出现以及万维网(World Wide Web)的普及。在这个时期,Microsoft 公司的 Windows 操作系统在 PC 机市场占有显著优势,尽管 WordPerfect 仍在继续改进,但 Microsoft 公司的 Word 成了最常用的文字处理软件。 20 世纪90 年代中期,Microsoft 公司将文字处理软件 Word、电子制表软件 Excel、数据库管理软件 Access 和其他应用程序绑定在一个程序包中,称为办公自动化软件。面向对象的程序设计方法最早是在 20 世纪 70 年代开始使用的,当时主要是用在 Smalltalk 语言中。 20
40、 世纪 90 年代,面向对象的程序设计逐步代替了结构化程序设计,成为目前最流行的程序设计技术。面向对象程序设计尤其适用于规模较大、具有高度交互性、反映现实世界中动态内容的应用程序。Java、C+、C#等都是面向对象程序设计语言。1990 年,英国研究员提姆 柏纳李(Tim Berners-Lee)创建了一个全球 Internet 文档中心,并创建了一套技术规则和创建格式化文档的 HTML 语言,以及能让用户访问全世界站点上信息的浏览器,此时的浏览器还很不成熟,只能显示文本。软件体系结构从集中式的主机模式转变为分布式的客户机/服务器模式(C/S )或浏览器/服务器模式(B/S),专家系统和人工智
41、能软件从实验室走出来进入了实际应用,完善的系统软件、丰富的系统开发工具和商品化的应用程序的大量出现,以及通信技术和计算机网络的飞速发展,使得计算机进入了一个大发展的阶段。在计算机软件的发展史上,需要注意“计算机用户” 这个概念的变化。起初,计算机用户和程序员是一体的,程序员编写程序来解决自己或他人的问题,程序的编写者和使用者是同一个(或同一组)人;在第一代软件末期,编写汇编器等辅助工具的程序员的出现带来了系统程序员和应用程序员的区分,但是,计算机用户仍然是程序员;20 世纪 70 年代早期,应用程序员使用复杂的软件开发工具编写应用程序,这些应用程序由没有计算机背景的从业人员使用,计算机用户不仅
42、是程序员,还包括使用这些应用软件的非专业人员;随着微型计算机、计算机游戏、教育软件以及各种界面友好的软件包的出现,许多人成为计算机用户;万维网的出现,使网上冲浪成为一种娱乐方式,更多的人成为计算机的用户。今天,计算机用户可以是在学习阅读的学龄前儿童,可以是在下载音乐的青少年,可以是在准备毕业论文的大学生,可以是在制定预算的家庭主妇,可以是在安度晚年的退休人员,所有使用计算机的人都是计算机用户。3. 计算机的发展趋势在短短的 60 年里,计算机从像 ENIAC 这样笨重、昂贵、容易出错、仅用于科学计算的机器,发展到今天可信赖的、通用的、遍布现代社会的每一个角落,发明第一台计算机的人并没有预测到计
43、算机技术会如此快速地发展。然而,计算机技术在过去 60 年里的发展与未来 60 年的变化相比将会相形见绌,将来我们会觉得今天最好的计算机很原始,就像我们今天看 60 年前的 ENIAC 一样。计算机的产生是人类追求智慧的心血和结晶,计算机的发展也必将随着人类对智慧的不懈追求而不断发展。计算机的发展趋势可归结在如下几个方面: 超级计算机。发展高速度、大容量、功能强大的超级计算机,用于处理庞大而复杂的问题,例如航天工程、石油勘探、人类遗传基因等现代科学技术和国防尖端技术都需要具有最高速度和最大容量的超级计算机。研制超级计算机的技术水平体现了一个国家的综合国力,因此,超级计算机的研制是各国在高技术领域竞争的热点。 微型计算机。微型化是大规模集成电路出现后发展最迅速的技术之一,计算机的微型化能更好地促进计算机的广泛应用,因此,发展体积小、功能强、价格低、可靠性高、适用范围广的微型计算机是计算机发展的一项重要内容。 智能计算机。到目前为止,计算机在处理过程化的计算工作方面已达到相当高的水平,是人力所不能及的,但在智能性工作方面,计算机还远远不如人脑。如何让计算机具有人脑的智能,模拟人的推理、联想、思维等功能,甚至研制出具有某些情感和智力的计算机,是计算机技术的一个重要的发展方向。