1.3程序概念入门1
- 首先我们来说一个计算机设计中一个伟大思想抽象的例子
我们知道计算机中的硬件只能执行极为简单的低级指令。
而一个典型的程序,比如字处理程序或者大型数据库处理系统,可由数百万代码构成,依靠软件库来实现异常复杂的功能。
因此从从复杂的应用程序到简单的指令需要经过几个软件层次来将复杂的高层次逐步解释或翻译成简单的计算机命令。
简化的硬件和软件层次图
这些程序软件的层次结构,外层是应用软件,中心是硬件是硬件,系统软件^system software位于两者之间。
系统软件:提供常用服务的软件,包括操作系统、编译程序、加载程序和汇编程序等。
在复杂的应用中,通常存在多层应用软件层。
例如:
一个数据库系统可运行于系统软件之上,而驻留在该系统上的某应用反过来又运行在该数据库上。
- 我们主要来了解一下系统软件的组成
操作系统(operating system):为了使程序更好地在计算机上运行而管理计算机资源的监控程序。
编译程序(compiler):把高级语言编写的程序翻译成硬件能执行的指令。翻译过程相当复杂,简要介绍。
-
计算机语言
电子硬件传递信号的方式是通过电信号的发送。因此对于计算机来说,最简单的信号就是“通”与“断”,只用2个符号“1”与“0”来表示,每一个符号就是二进制元数字中的一个二进制位[^binary digit]或一位[^bit]。
这里引入一个学术名词指令。
二进制位:基数为2的数字中的0或1,它是信息的基本组成。
指令:计算机硬件所能理解并服从的命令。
由此第一代的程序员就直接使用二进制数与计算机通信,但是这是一项及其枯燥的工作,所以设计人员开发了一种称为汇编程序的软件。
汇编程序:将指令由助记符形式翻译成二进制的程序。
例如:
add A,B
汇编程序会将其翻译成:
1000110010100000
这一种语言即汇编语言。而机器可以理解的二进制语言为机器语言。
汇编语言:以助记符形式表示的机器指令。
机器语言:以二进制元形式表示的机器指令。
但是汇编语言还是要求程序员像计算机一样思考。生产率低。
设计人员开始认识到编写一个程序来将更强大的高级语言翻译成计算机指令,即高级编程语言。
高级语言及其编译程序极大的提高了生产效率。
简单的例子说明之间的关系。
高级编程语言:如C\C++\JAVA\Visual Basic等可移植的语言,由一些单词和代数符号组成,可以由编译器转化为汇编语言。
高级应用程序(使用c语言)
swap(int v[],int k) { int temp; temp=v[k]; v[k]=v[k+1]; v[k+1]=temp; }
编译后
汇编语言程序(MIPS指令集)
swap: multi $2, $5,4 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jw $31
汇编后
二进制机器语言程序(MIPS指令集)
计算机组成与设计软件/硬件接口 ↩︎