计算机语言
计算机语言
(
也称为程序设计语言
)
是用来书写程序的语言
,
是人命令计算机完成工作
的工具。每一种语言都规定了一组有确定含义的符号和一组规则。根据规则构成的符号串
的总体就是语言。计算机语言分为机器语言、汇编语言、高级语言和第四代语言。
机器语言是机器指令的集合。直接采用机器语言来书写程序是一件非常繁琐而枯燥的
工作
,
而且容错出错
。用各种字母组合或单词缩写代替相应的机器指令更便于程序设计,
于是产生了汇编语言
,
它是符号化的机器语言。例如在以
Intel 8086/8088
为
CPU
的计算机
中
,
把整数
1
存入寄存器
AX
的操作
,
机器指令是
101110000000000100000000
,
而用汇编
指令写出来则是
MOV AX
,
1
。
显然
,
汇编语言比机器语言更直观和容易记忆
,
它用
MOV
表示“
传送”
,
用
ADD
表
示“
相加”
。当然
,
计算机不能直接按照这类符号执行相应的操作
,而需要把它们翻译成
相应的机器指令。
这个翻译工作被交给一个被称为“
汇编程序”
的翻译程序来完成。被翻
译的汇编语言程序称为源程序
,
由汇编程序翻译出的程序称为目标程序
,
而翻译的过程则
称为汇编。源程序经过汇编得到的目标代码较短
,几乎没有多余的指令,程序的
执行效率
较高
,
但使用的符号繁多,编写程序繁琐、费时、容易出错
,
难以维护。图
2.1
表示了汇编
的过程。
图
2.1
汇编和汇编程序
由于汇编语言和机器语言都依赖于具体的机器
,
非专业人员使用很困难
。直到产生
高
级语言以后,程序设计才逐渐大众化。高级语言的表示方法更接近数学方法和自然语言。
源程序
目标
程序
汇编程序
C
语言与程序设计
·
12
·
例如让机器完成求和操作
,并把结果存放到变量
c
中,
用高级语言写作
c=a+b
。用高级语言
书写的程序
,
不用修改或只作少量修改
,
就可适用于各种不同的机器。同样的道理
,
机器
也不能识别高级语言的语句
,
它也必须经过翻译。一般一条高级语言的语句要翻译成一组
机器指令。这里承担翻译工作的程序被称为“
编译程序”
,
被翻译的高级语言程序称为源
程序
,
翻译的结果是一系列机器指令,称为目标程序。图
2.2
表示了编译的过程。
图
2.2
编译和编译程序
早期的源程序规模较小
,
编译系统能直接产生机器可以执行的目标程序。随着程序规
模的不断扩大
,
出现了将程序按结构分段
,
交由多人分别进行设计和编译的方法。这种方
法不仅生成各段程序的目标模块
,
还产生连接装配这些模块的有关信息。
另外
,
一些经常使用、能够完成一定功能的规范化程序段被集中起来存放在“
程序库”
中
,
当设计人员需要用到某种功能时
,
可直接使用相应的程序段
,
而不必重复设计这些代
码。这就需要用到“
连接程序”
,
它能把多个分别编译得到的目标程序
,
以及程序中用到
的程序库中的代码
,
装配成一个完整的可执行程序。
因此
,
一个包括多个程序文件的大项目
,
通常要对这些程序文件分别进行编译
,
然后
把这些分别编译产生的目标文件和系统的程序库进行连接
,
才能最终装配成一个可执行程
序。图
2.3
表示了连接的过程。
源程序
1
源程序
2
源程序
n
目标程序
1
目标程序
2
目标程序
n
连接程序
„„
„„
„„
可执行程序
系统
程序库
编译程序
编译程序
编译程序
图
2.3
连接和连接程序
一般说来
,高级语言程序经过
编译得到的目标代码较为冗长
,
执行程序的时间较长,
效率较低。尽管如此
,
由于高级语言与自然语言和数学语言较为接近
,
容易被人理解
,
因
而得到了广泛的应用。目前已经出现了数百甚至上千种高级语言
,
它们的语法规则各不相
同
,
应用范围也不尽相同。
源程序
目标
程序
编译程序