计算机刚刚问世时,还未建立“软件”这一概念,随着计算机的发展及应用范围的扩大,逐渐
形成了软件系统。
在早期的计算机中,使用者必须根据机器自身能识别的语言
- 机器语言(机器指令)按解
题要求编写出机器可直接运行的程序。由于机器不同,机器语言也不同,因此人们在不同的机器
上编程,就需熟悉不同机器的机器指令,使用极不方便,写出的程序很难读懂。20世纪50年代
后,逐渐形成了符号语言和汇编语言,这种语言虽然可以不用 0/1 代码编程,改善了程序的可读
性,但它们仍是面向机器的,即不同的机器各自有不同的汇编语言。为了使这种符号语言转变成
机器能识别的语言,人们又创造了汇编程序,用于把汇编语言翻译成机器语言
为了摆脱对具体机器的依赖,在汇编语言之后又出现了面向问题的高级语言。使用高级语
言编程可以不了解机器的结构,高级语言的语句通常是一个或一组英语词汇,词义本身反映出命
令的功能,它比较接近人们习惯用的,自然语言和数学语言,使程序具有很强的可读性。高级语言
的发展经历了几个阶段。第一阶段的代表语言是1954 年问世的 FORTRAN,它主要面向科学计
算和工程计算。第二阶段可视为结构化程序设计阶段,其代表是1968年问世的 PASCAL. 语言,
它定义了一个真正的标准语言,按严谨的结构化程序编程,具有丰富的数据类型,写出的程序易
读懂、易查错。第三阶段是面向对象程序设计阶段,其代表语言是C++。近年来随着网络技术
的不断发展,又出现了更适应网络环境的面向对象的 Java 语言,而且随着Interet 技术的发展和
应用,Java 语言越来越受到人们普遍欢迎。
为了使高级语言描述的算法在机器上执行,同样需要有一个翻译系统,于是产生了编译程序
和解释程序,它们能把高级语言翻译成机器语言。
可见,随着各种语言的出现,汇编程序、编译程序、解释程序的产生,逐渐形成了软件系统
随着计算机应用领域的不断扩大,外部设备的增多,为了使计算机资源让更多用户共享,又出现了操作系统。操作系统能协调管理计算机中各种软件、硬件及其他信息资源,并能调度用户
的的作业程序,使多个用户能有效地共用一套计算机系统。操作系统的出现使计算机的使用效率
成倍地提高,并且为用户提供了方便的使用手段和令人满意的服务质量。例如,DOS、UNIX 和
Windows 等
此外,
一 些服务性程序,如装配程序、调试程序、诊断程序和排错程序等,也逐渐形成。特别
是随着计算机在信息处理、情报检索及各种管理系统中应用的发展,要求大量处理某些数据,建
立和检索大量的表格。这些数据和表格按一定的规律组织起来,使用户使用更方便,于是出现了
数据库。数据库和数据管理软件一起便组成了数据库管理系统。而且随着网络的发展,文产生
了网络软件等。
以上所述的各种软件均属于系统软件,而软件发展的另一个主要内容就是应用软件。应用
软件种类繁多,它是用户在各自的行业中开发和使用的各种程序。如各种财务软件、办公用的文
宇处理和排版软件、帮助管理日常业务工作和图文报表的“电子表格”和“数据库”软件、帮助工
程设计的 CAD 软件以及各种实用的网络通信软件等。
软件发展有以下几个特点。
(1)开发周期长
研制一个软件往往因其规模庞大而需较长的开发周期。例如,美国穿梭号宇宙飞船的软件
包含4000 万行目标代码,倘若一个人一年开发一万行程序,则需集中4 000 人花一年时间才能
完成,市且要做到4000 人的默契配合,涉及种种技术问题的协调,如分析方法、设计方法、形式
说明方法、版本标准等都得有严格的规范,其难度远远超过自动化程度极高的硬件制造。
(2)制作成本昂贵
超大规模集成电路技术给硬件制造业带来巨大利益,使硬件的价格不断下降,使一台普通的
微型计算机的价格与一台彩色电视机的价格相当,而且还在下降。可是软件的开发完全依赖于
人工,致使软件开发成本不断上涨,在美国,软件成本约占计算机系统总成本的90%,己成为司
空见惯的现象。
(3)检测软件产品质量的特殊性
-种软件在刚开始推出时,,主要实现其面向领域所需的核心功能,之后逐步集成大量的附加
功能。也就是说,要完善
一个软件产品,必须在应用过程中不断加以修改、补充。只有使用了-
定时间后,才能对软件产品质量进行确定。
尽管软件技术兴起和发展比硬件晚,而且其发展速度没有硬件快(如微处理器的性能以
Moore 定律所述的几何级数增长),但是仍可以说,如果没有当今的软件技术,计算机系统和应用
的发展也不会有今天这样的成就。客观地说,软件的发展不惭激励着微处理器和存储器性能的
增长。
世界各国当前都十分重视软件人才的培养和软件产业的形成,但实际上它们都很难与当前
计算机应用普及的广度和深度相适应。也正因为如此,有些软件开发商瞄准了特定的市场,一旦
在性能、质量占到上风时,就会很快积聚财富,成为新的世界级富商。