2.2 计算机的软件系统
软件系统是为运行、管理和维护计算机而编制的各种程序、数据和文档的总称。
计算机系统由硬件(Hardware)系统和软件(Software)系统组成。硬件系统也称为裸机,裸机只能识别由0和1组成的机器代码。没有软件系统的计算机是无法工作的,它只是一台机器而已。实际上,用户所面对的是经过若干层软件“包装”的计算机,计算机的功能不仅仅取决于硬件系统,在更大程度上是由所安装的软件系统决定的。硬件系统和软件系统互相依赖,不可分割。图2—14示出了计算机硬件、软件与用户之间的关系,是一种层次结构,其中硬件处于内层,用户在最外层,而软件则是在硬件与用户之间,用户通过软件使用计算机的硬件。本节介绍软件系统的相关概念和组成。
2.2.1软件概念
软件是计算机的灵魂,没有软件的计算机毫无用处。软件是用户与硬件之间的接口,用户通过软件使用计算机硬件资源。
1.程序
程序是按照一定顺序执行的、能够完成某一任务的指令集合。计算机的运行要有时有序、按部就班,需要程序控制计算机的工作流程,实现一定的逻辑功能,完成特定的设计任务。Pascal之父、结构化程序设计的先驱Niklaus Wirth对程序有更深层地剖析,他认为“程序=算法+数据结构”。其中,算法是解决问题的方法,数据结构是数据的组织形式。人在解决问题时一般分为分析问题、设计方法和求出结果三个步骤。相应地,计算机解题也要完成模型抽象、算法分析和程序编写三个过程。不同的是计算机所研究的对象仅限于它能识别和处理的数据。因此,算法和数据的结构直接影响计算机解决问题的正确性和高效性。
然语言,自然语言是由字、词、句、段、篇等构成。而人与计算机之间的“沟通”,或者说人们让计算机完成某项任务,也需用一种语言,这就是计算机语言,也称为程序设计语言,它由单词、语句、函数和程序文件等组成。程序设计语言是软件的基础和组成。随着计算机技术的不断发展,计算机所使用的“语言”也在快速地发展,并形成了体系。
3)高级诺言
汇编语言虽然比机器语言前进了一步,但使用起来仍然很不方便,编程仍然是一种极其烦琐的工作,而且汇编语言的通用性差。人们在继续寻找一种更加方便的编程语言,于是出现了高级语言。
高级语言是最接近人类自然语言和数学公式的程序设计语言,它基本脱离了硬件系统,如Pascal语言中采用“Write”和“Read”表示写入和读出操作,采用“+”、“99、“*”、“÷”表示加、减、乘和除。目前常用的高级语言有c++、C、Java、Visual Basic等。
解释方式是将源程序逐句翻译、逐句执行的方式,解释过程不产生目标程序,基本上是翻译一行执行一行,边翻译边执行。如果在解释过程中发现错误就给出错误信息,并停止解释和执行,如果没有错误就解释执行到最后。常见的解释型语言有Basic语言。
无论是编译程序还是解释程序,其作用都是将高级语言编写的源程序翻译成计算机可以识别和执行的机器指令。它们的区别在于:编译方式是将源程序经编译、链接得到可执行程序文件后,就可脱离源程序和编译程序而单独执行,所以编译方式的效率高,执行速度快。而解释方式在执行时,源程序和解释程序必须同时参与才能运行,由于不产生目标文件和可执行程序文件,解释方式的效率相对较低,执行速度慢。