计算机软件发展四十五年
摘要:通过对计算机软件发展的四十多年历史的回顾,详细论述其发展的三个不同阶段:开创阶段、稳定阶段以及发展阶段的过程与特点,让读者了解计算机软件发展的特性与历史,从而更好地掌握计算机软件的开发与应用。
关键字:计算机软件、计算机语言、软件开发
自软件开发到现在已有四十多年历史了,在整个软件发展历史过程中,已经取得了划时代的成就,为了更好的理解计算机软件是计算机的灵魂并了解她的今天,这里让我们一起来回顾她的昨天。
我们将悠久的计算机软件历史分成三个阶段:
开创阶段:1955年到1965年
稳定阶段:1965年到1985 年
发展阶段:1985 年到现在
开创阶段
计算机在1946年出现时,占地2百余平方米,用电数千瓦,价值百万美元,而运行速度只有每秒千次,但它却为破译密码和武器弹道运算立了大功。六十年代大型计算机已发展到每秒百万次以上,能够进行快速复杂的计算,随着科研、金融和政府部门的需要而逐步形成了较大的计算机市场。
而计算机软件历史真正开始是在美国和欧洲的实验室里,大多数研究结果也产生于实验室。它们多数来自于学术界,其余产生于政府和私人公司。
在1955年到1965年这个期间,运算速度越来越快、价格越来越便宜的新计算机不断涌现,软件工作人员就需要不断针对不同计算机写出新的软件。这种变化速度令软件人员应接不暇。
在此阶段,计算机硬件向着专门用途发展,科学与商业领域需要的是完全不同的机器硬件。商业计算机具有变字长的特性,即有“清字标记”和“置字标记”,指令集为十进制。而科学计算机使用的是固定字长,当时定36位为一个字,而不是采用二进制计算。这种不同用途的机器使用不同字长,这给编程带来难以想象的困难。
频繁重写相同的软件触发了另一思想——软件移植,工业界中的软件研究人员试图将一台机器上汇编语言自动移植到另一台,但是却失败了。原因是60%或80%代码较容易移植,而余下的40%或20%必须人工移植,又是较复杂的代码,因此非常困难。多年来仍然不能完全解决问题,直到高级语言的产生。最早发布的FORTRAN语言在五十年代中期诞生的,五十年代后期出现了第一版COBOL语言,而ALGOL语言产生于六十年代早期。当时,高级语言不能被编制人员所接受,他们认为真正的编程人员应当使用汇编语言。
之后,软件业从计算机工业中独立出来,成为一枝新秀。那时,硬件厂商开放了他们的系统软件(由于没有这种开放,不能进一步推销他们的产品),有几个公司开始提供定制软件的服务,然而那时没有专门经销软件的公司。由于软件免费,用户相互赠送,使软件不断重用与推广,并鼓励共享软件的发展。例如,IBM科学用户组织SHARE提供了软件重用的目录清单,包含了三角函数分类和合并计算的多个数学程序,并对进入了SHARE目录中的软件产品,能给予此领域的最高荣誉。
60年代初期,学术上还没有计算学科、计算机科学和信息系统,然而却在实践中产生了以后称为“软件工程”的萌芽。软件工作者开始学习模块编程的方法,并涵盖了基本数据结构有关的子程序,从而使其易访问。现在,人们称为数据提取,并进一步拓宽到面向目标,但是那时的软件人员就已经意识到它的思想与价值。
此阶段,曾经出现过软件危机。即软件方面投入的资金和人力无法控制,软件开发完成的时间无法确定,软件的可靠性等等。例如,1962年7月22日美国飞往金星的火箭控制系统中的指令,DO 5 I = 1,3 误写成DO 5 I = 1.3,使火箭偏离轨道,被迫炸毁。
此阶段是激动人心的年代,随着计算机硬件以令人生畏和惊奇的快节奏发展,计算机软件在计算机业中越来越占据着重要的地位,她开创了自己的事业,从计算机业中独立出来。
稳定阶段
这期间,出现了IBM等计算机大公司,是大型机硬件导向占主导地位的阶段。此时计算机成为专业人员使用的专门设备,普通老百姓用不了,也用不起。年产量不足数万台,市场有限,这样IBM360计算机将软件工业带入了稳定发展阶段。
IBM360采用了系列机的思想,开创了CISC时代(复杂指令系统计算机),目的能使指令系统兼容。新型机或高档机的指令系统在原有机型上只能扩充而不能减少任何一条指令,以达到软件兼容的目的,这样就导致日趋庞大的指令系统使计算机硬件的研制周期变长、运行速度慢、可靠性差、难以调试和维护。为了改进,提出了RISC(精简指令系统计算机)技术。RISC技术使指令数量大大减少,再加上一些其他措施(如指令系统面向寄存器,使数据能直接存储),从而大大减少指令执行所需要的周期数,极大的提高了计算机的计算速度。同时IBM360机为软件领域带来了重要发展。它使科学与商业应用合二为一,且同时使用十进制和二进制两种算法,它不再有讨厌的变字长。
随后,又产生了笨重的工作控制语言(JCL),使程序员只要把卡片塞进读卡机,然后按“启动”就可以运行程序。JCL要求用全新的语言编写程序,它能告诉计算机和操作系统按人的需求做相应工作。JCL太繁琐,这也许因为它包括了科学和商务所需的一切服务功能。然而JCL是360机上最不受欢迎的程序语言。
随着360机汇集科学和商务应用在一台计算机上,IBM也希望将所有的计算机语言合成一种语言。PL/1就这样诞生了,它不仅包含科学计算FORTARN和商务计算COBOL语言的功能,而且还具有新生语言ALGOL的功能。
除了IBM360带来的软件发展外,在稳定阶段,形成了软件的独立经销。几个敢于冒险的软件商开始销售他们的软件产品。这在当时极其不易,因为硬件厂商为阻碍软件发展,防止软件分离以形成独立行业,故意将软件的价格压得很低,无利润可赚。随着软件领域的稳定发展和新软件产品的问世,它们逐渐成为公司和市场的商品,价值连城。软件维护与更新也成为一项日益重要的工作。从而形成了计算机软件市场经济。
稳定阶段中开始出现了计算机学科的学术讨论。第一个计算机科学程序在六十年代晚期奠基,不久以后又编制了第一个管理信息系统程序。当时计算机软件工程还没有从计算机学科中分离出来,直到微型计算机年代才独立成为一门学科。尽管当时没有形成学科,然而软件工程研究一直在进行,重点聚集在计算机语言的问题上。
在此阶段,一些计算机科学家大力宣传他们引入的新思想。人工智能就是第一个竭力宣扬的学科,即称之为“有知觉”的机器,可以模仿人类大脑的功能,并期望代替人类大脑去做任何事情。
随后又出现了“控制领域”的议题。反控制反垄断的战斗打响了,美国司法部门起诉IBM公司,声称它发展太快,且正在垄断计算机行业。当时,许多人将硬件工业比喻为“白雪公主和七个小矮人”,这里IBM是白雪公主,其他计算机硬件小公司是七个小矮人。例如RGA、GE和Xeroe等等公司。这些小公司逐渐萎缩,直到从计算机行业中消失。标准化组织也成为当时反控制反垄断的急先锋。它坚持只有统一计算机标准,各个公司才能参与并达到公平竞争。
同时,软件商与硬件商也开始竞争。硬件商努力保持软件的低价,以阻碍软件行业的形成。但是无论怎样阻挡,总有一些软件商脱颖而出,成为胜利的娇娇者。
此阶段由于计算机硬件变化节奏缓慢一些,属于较平稳的年代,计算机软件随着平稳发展,并确立软件在市场的重要地位,成为商品并逐渐变得被人们理解和接收。
发展阶段
此阶段是再一次激动人心年代,计算机已经普及和无处不有,同时软件业在计算机行业成为不可缺少部分并取得了辉煌胜利。
这个阶段是软件发展过程中最重要的时期。因为PC机和工作站以半年更新一代的令人目不暇接的速度,势不可挡地入侵小型机、中型机甚至大型机领域,从而使计算机无处不在,计算机走出了象牙塔,走进了平常百姓家庭,走进了普通人办公室。在家里、办公室、银行、邮局等生活工作的周围,处处可见计算机的应用业绩,普及流行速度极快,蓬勃向前。
过去存在的大量问题被解决了。老的JCL问题已经由友好用户、友好程序界面解决。图形用户界面(GUI)普及与流行,业已成为八十年代计算机领域最伟大的功绩。以前的FORTRAN和COBOL语言都没能解决用户界面的友好问题,而可视化软件编程才改变了这一现状。
由于VLSI的迅速发展,RISC的控制器又很简单,这就使RISC能集成在一个芯片上。CISC控制器需占芯片面积50%以上,而RISC的控制器仅占6 - 10%,这使RISC芯片具有极高的性能。到九十年代RISC技术被引入了到PC机内,使同样功能的计算机成本只有CISC的一半不到。随着VLSI进一步发展,已使巨型机上使用的并行处理技术能融入到RISC中。一方面采用新材料、新工艺,进一步提高主频,另一方面采用了超级流水线技术、并行流水线技术和超长指令字VLIM技术,极大地提高了RISC芯片的并行处理能力,使RISC进入了具有划时代的时期。
软件作用和价值牢固地树立起来了。人工智能、知识工程、专家系统以及神经网络领域的研究得以发展与深化。软件市场在世界范围内比较快的速度增长,在美国犹他州已出现以软件为主的第二高技术产业区。目前软件的发展速度已超过硬件产业,占信息产业的主导地位。美国垄断世界软件市场的格局,一时很难发生变化。微软公司软件巨头比尔.盖茨在五年前已成为美国首富,现在又是世界首富。随着市场分割,过去反控制反垄断的竞争也被分解了。IBM公司成为大型机之首;Intel公司是计算机芯片之王,也可以称为计算机硬件之王;Microsoft公司成为微机软件之冠。但是希望成为大型机软件之王的竞争仍然在继续。
软件特性体现为:软件进入结构化生产时期,以结构化分析和设计,结构化评审,结构化程序设计以及结构化测试为特征;从八十年代中期开始,软件生产进入以过程为中心的开发阶段;从1995年开始,逐步进入以软件过程,面向对象和构件重用等技术为基础的软件工业化生产时代。
此阶段软件业绩为:
1)软件重用技术
软件重用的目的是使非结构化、非标准化程序变为结构化、标准化,并形成大量能重用的计算机构件和模块。软件重用技术使软件的开发基本上变成了搭积木,把需要的对象和功能模块拼起来即可。它节省了大量的人力与物力,减少了重复开发。这种技术可以应用在数据库管理和信息系统管理上,Microsoft Access等软件均采用此软件技术,它们集成了大量应用的基本构件和模块便于重用。
只有可维护性软件才有可能最大限度地重用,而重用部分越多,维护成本越低,效率就越高。不可维护性到可维护性软件的重构是维护方法学的关键。最大限度地重用现存软件是软件维护方法学的重要思想原则。可重用是可维护性的基本属性和最大特征。
就软件重用而言,可有四个层次的重用:
(1)开发过程重用
主要指开发规范、开发方法及工具、软件标准等的重用,也称为开发支持环境重用。
(2)软件构件重用
这里软件构件指文档、程序及数据。应该将软件构件可重用性作为主要设计指导思想。
(3)用户业务知识重用
用户现存系统的业务处理过程、特定专业领域的需求特征等知识的重用。
(4)市场知识重用
应用领域标准、行业标准、市场规律知识的重用。
2)面向对象技术
八十年代中期以来,各个领域的发展和变化越来越快,对应用软件不断提出新的功能要求,这就使以功能为基础的软件体系改动较大,甚至推倒重来。八十年代末发现,使用面向对象技术能极大的提高软件的可维护性。而且它还有很多其他的优点,例如提高软件开发率,提高软件的可靠性和安全性等等。面向对象技术获得了极大欢迎,终于成为九十年代软件界最大的热点。随着发展,面向对象技术形成了OOP(面向对象编程)、OOD(面向对象设计)、OOA(面向对象分析),成为完整的软件开发方法学。
现实世界中的事物抽象到问题空间就称为对象。在面向对象技术中,对象被定义为“对一组信息和在其上的操作”,其中的信息就是数据,它反映的是对象的属性状态,操作则是对对象的处理。面向对象系统就是由对象组成的复杂系统,系统中所有对象的状态共同构成系统的状态,对象总是从一个初始状态出发,在对象之间的相互作用过程中不断改变着自身的状态。一个对象请求另一个对象执行某一处理或回答某些信息的要求称为“消息”,对象与对象之间的相互作用就是通过消息来实现的。
面向对象技术的最大优点就是软件的可维护性好。
3)集成工具与CASE技术
今天,已将过去单个的工具集成在一个系统中,用于软件开发,形成了集成工具。例如,我们经常使用的字处理工具,它只有一个工具菜单,但是却包含拼写检查、语法检查、词库和字词计数等功能。我们期待用于软件开发的系统收集了所有必需的工具,它必须支持文本和图像,也含有相关的数据库,能自动移植并进行计算机低层设计等。编程系统不仅含有编译程序,还应该支持编辑、调试与测试,最好能支持程序建立并在建立过程中检测它们的结构。
而CASE技术,即称谓“支持软件工程方法学的计算机辅助手段”。它为实现从软件工程诞生起就面临着如何组织人员进行集体作业和如何逐步代替人进行编程的两大任务。而且首先是解决前者———确定有次序、有效率、科学的工程作业方法,然后才能一步步用计算机取代各工程阶段的人工编程。软件工程的最终目的就在于软件自动化。
CASE技术有两个突出特点,使开发支持工具与开发方法学统一和结合起来,通过实现分析、设计、程序开发与维护的自动化,提高整个软件开发工程的效率。如果方法驱动器理论得以实现,软件自动化将成为现实。尽管目前真正实现的还仅限于方法指导系统,但CASE的迅速发展仍超出了辅助软件工程的范围。
综上所述,CASE的发展有待于软件工程方法的发展。它不仅给传统软件工程方法以新生,也推动着各种软件工程方法的演变、合并和淘汰,为新软件工程方法理论实用化开辟着道路。所以今后的软件工程应是“方法学+CASE技术”,两者共同协助开发人员控制和管理软件。当方法驱动器理论变为现实后,CASE与软件自动化可能会变成同义词。虽然今天的软件自动化尚不完全,但为了区别传统软件工程,我们以更明确的CASE软件工程概念来表述CASE与软件工程方法学的结合。
4)图形用户界面
用户界面一般是由菜单窗口和对话框等元素构成,它为用户提供了一个使用软件交互过程的环境,它提高了软件的使用效率,灵活便捷,并且易于修改维护程序,充分体现了“所见即所得”图形界面的现代软件设计风格,使用户能以简单自然的方式与软件系统交流信息;提供对键盘及鼠标两种输入设备的双重支持;引导用户正确、快速、方便地使用软件系统;易学易懂,尽可能地减少用户必须记忆的信息。
八十年代图形技术有了迅速的发展,出现了不少优秀的图形软件工具,例如,X-Windows、Microsoft Windows 和Macintosh Windows都是建立在图形用户界面的技术上,他们提供了图形交互所需的各种手段与方法。
Auto CAD是又一个优秀的图形软件工具。它提供了图形显示控制、图形编辑和存储以及三维绘图、三维动态显示、阴影与透视等功能。随着图形用户界面的成功,不少高级语言也增加了图形功能,使这种可视化编程日益广泛与流行。
5)多媒体技术
它是曾经被炒得沸沸扬扬的话题,也是计算机科学在九十年代的一个热点。多媒体技术是将文字、声音、图形、视频图象集成在一起的技术。它包括多媒体计算机原理、多媒体数据库、多媒体通信和多媒体表现技术等等。它的一个重要方面是将图像、图形、声音、文字等集成一体,再按1比10或1比30压缩比进行图象数据压缩,最后以高质量再现给用户。
由于多媒体技术提供了更多的交互手段,给人以更多的方便,所以有着极其广阔的应用前景,如电视、电子游戏、电子报刊、电视会议等等。正因为如此,多媒体技术不仅是计算机科学的热点,而且也是国民经济以及社会生活许多领域的热点。
然而在整个计算机发展历史过程中,软件领域仍然存在一些问题,相对于微处理器芯片和内存设备而言,计算机软件只是在不断发展而没有进行大的改革。例如,编程人员都知道,自从第一台IBM和第一个Intel电子芯片问世以来,硬件结构的软件部分──指令集和中断结构就没有发生大的变化。在程序设计语言中也没有大的变革,现在用得最多的语言仍然是十五年前C和C++,甚至是四十年前的FORTRAN和COBOL语言。第四代语言并没有达到某些人预先声称“无需程序员的编程”的功能。整个软件领域发展限制在一个应用领域──数据库上。
不过也有一些希望的象征。面向对象程序设计是一项新的技术,前景看好,它以一种完全不同方法来构造软件;客户/服务器技术和Internet/Intranet技术,它们大大地推动了软件行业的改革。Internet的TCP/IP协议使成千上万个不同的操作系统和应用程序能相互通信,使得网络访问容易,浏览众多的数据库和站点信息,从而产生了较大经济效益和社会效益。当谈起计算机软件的现代历史,Internet/Intranet将作为人- 机通信原理的里程碑,而WWW、HTML、VRM和Java将是这个里程碑的组成部分。
软件行业的成功,尤其是1995年以来的迅速崛起的Internet/Intranet技术为主的网络软件以及数据库挖掘、人工智能、神经网络等软件,为人类进入二十一世纪奠定了坚实的基础。新世纪将是一个更全面的信息化时代,计算机的普及与使用将会更广更宽,从而对计算机软件的需求更高,本世纪的成果与经验,将带入下一世纪,并不断被软件人员发展、完善,以适应新世纪人类的需要,并发扬光大。
结束语
计算机软件的发展如今仍是方兴未艾,尤其是网络软件、HTML和Java语言,这将给人类社会带来翻天覆地的大变化,了解她的昨天,掌握她的今天,就能把握与预测她的明天,并期盼着二十一世纪软件业将会有更美好的发展与未来。
作者简介:
计算机中心主任 副教授 硕士
1998年3月──现在 在中国青年政治学院任教
1998年8月──1999年2月 在美国加州州立大学访问进修
1995年4月──1998年2月 在电子部一所工作
1992年1月──1993年6月 在丹麦哥本哈根大学访问进修
1986年6月──1995元3月 在北京信息工程学院任教