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