自从有了计算机,就有了计算机语言。计算机语言又称为程序设计语言,它是人和计算机进行交流的工具,人们利用它写出能被计算机识别并执行的符号代码,指挥计算机工作。
迄今为止,计算机语言经历了机器语言、汇编语言和高级语言(如C语言)3个阶段。
1.1 计算机指令和机器语言
计算机指令是指挥计算机进行工作的命令。由于计算机内部采用二进制,只能识别0和1两个数字,因此,计算机指令也必须是二进制的,以便被计算机识别并执行。
早期的计算机字长是16位的,即一条指令的长度是16位。所以人们用16位二进制数作为一条指令来告诉(命令)计算机进行某种操作。例如,用01000001 00001101来命令它进行加法操作,用01000001 00001110来命令它进行减法操作……这些能被计算机直接识别并执行的二进制序列,就是计算机指令。很显然,对计算机所能做的每一种操作,都必须用唯一的一个二进制序列来表示,即需要对计算机能进行的所有操作都一一进行指令编码。
有了指令,人们便可以直接用计算机指令来编写程序了,即用机器语言编写程序。
1.2 机器语言的优缺点
1.2.1 机器语言可以被计算机直接识别、执行,所以用机器语言写的程序效率最高。
1.2.2 机器语言是用指令编程,而成千上万条指令很难记住,且一旦出错很难找出错误。如下图所示,用机器语言编写的程序,可以想像,在若干页的0和1中找出其中一个错误是多么不易。
1.2.3 不同型号的计算机,指令编码并不相同,因此,针对某一型计算机写的程序移植到另外一种计算机上后,运行结果未必正确,甚至有可能根本不能运行。
2.1 汇编语言及其处理过程
为了解决机器语言难记、难改的问题,人们发明了汇编语言,也称为符号语言。汇编语言是用一些助记符来代替指令进行编程,比如,用ADD表示加法,用SUB表示减法,用MOV表示移动等。
汇编语言虽然避免了机器语言难记、难改的缺点,但是却带来了新的问题,这就是:计算机只能识别0和1,识别不了助记符,怎么办?
人们想出了一个办法:编写一个程序,负责把用汇编语言编写的源程序翻译成二进制的计算机指令,然后再让计算机去执行。这个负责翻译的程序称为汇编程序,翻译的过程称为“汇编”,即用汇编程序把汇编语言写的源程序汇编成机器代码。
2.2 汇编语言的优缺点
2.2.1 汇编语言解决了机器语言难记、难改的缺点。
2.2.2 汇编语言可移植性仍然很差。
2.2.3 汇编语言的执行效率比机器语言低。
并非每一条汇编语言的语句都有一条机器指令与之对应。一条汇编语言的语句翻译成机器语言可能会产生好几条指令。一个程序,如果直接用机器语言编写,也许只需要100条指令,但如果用汇编语言编写,然后再翻译成机器语言,可能会多出十几或几十条指令。
3.1 高级语言及其执行方式
由于机器语言和汇编语言的可移植性差,人们发明了高级语言。1957年推出的FORTRAN语言是世界上第一门高级语言。其后,陆续出现了成百上千种高级语言。FORTRAN、BASIC、PASCAL、COBOL、C/C 等都是深受程序员喜爱的高级语言。
之所以称为高级语言,一是因为它们的可移植性好,即在一种计算机上所编的程序移植到另一种计算机上,不用修改或略作修改即可运行;二是因为这些编程语言都接近于人类的自然语言,易懂易学。
同汇编语言一样,用高级语言编写的源程序也不能被计算机直接识别,也需要经过翻译,由此产生了高级语言的两种执行方式。
3.1.1 解释方式
所谓解释方式,就是从源程序的第一条语句开始,对每条语句都先解释(即翻译,由解释程序翻译成计算机指令),然后马上去执行刚解释出的这些指令,再对下一条语句做同样的处理,直到所有语句都处理完。
解释方式有一种特点,就是翻译出来的计算机指令并不存盘(不生成目标代码),执行完这些二进制指令就丢失了。因此,若程序还想执行第二次,只能从头开始重新翻译并执行,故程序的执行效率较低。
3.1.2 编译方式
所谓编译方式,首先通过编译程序把整个源程序中的所有语句都翻译成汇编语言源程序,然后再通过汇率程序(汇编器)把汇编语言源程序翻译成机器语言的机器指令,形成.exe文件(可执行文件),.exe文件是可以直接运行的文件,并且可反复运行若干次。
C语言就是这种编译方式的高级语言。
假设有C语言源程序abc.c,经过编译后形成磁盘文件abc.obj,再经过连接后形成磁盘文件abc.exe。以后需要运行abc程序时,只需要abc.exe就可以了。
上述翻译源程序的工作,是由“编译程序”来完成的,其翻译的过程称为“编译”。
3.2 高级语言的优缺点
3.2.1 高级语言具有易懂、易记、易改和可移植性好等优点。
3.2.2 高级语言要经过解释或编译才能被计算机识别、执行,其效率比汇编语言还低。
在所有高级语言中,C语言效率最高。
汇编程序(汇编器)、解释程序(解释器)、编译程(编译器)序都是厂商提供的、事先编写好的程序。
联系客服