1.2 程序设计语言
语言在人类的交流中的作用无可取代,要想交流通畅,有共同的语言是首要条件,例如,一个中国人想和一个英国人聊天,光靠比划手势是不行的,有两种方法可以选择,要么学习英语,要么找一个翻译。计算机程序设计同样如此,计算机是无生命、无知觉的机器,不懂人类的语言,不管是汉语还是英语,计算机都不能接受,人类要想与其交流,让计算机完成特定的任务,必须解决“语言”的问题。同样,人类和计算机交流同样有两种方法:要么学习机器语言,要么找一个“翻译”。机器语言是什么?“翻译”又是什么?下面将给出解答。
1.2.1 机器语言
计算机是一种电子设备,计算机处理的是数字信号。数字信号采用0和1记录信息,那么计算机的语言,称为机器语言(Machine Language),自然也就是0和1序列。数字0和1称为二进制数据(Binary Digit),或者称为位(Bit),这种0和1的序列被称为二进制代码。
注意
二进制代码只能由0和1组成,没有其他数据。
即便完成相近的功能,不同的计算机的设计者也可能会采用不同的二进制代码集来表示程序指令,换句话说,不同的计算机使用的机器语言并不一定相同,不过可以肯定的是,现代计算机都是以二进制代码的形式存储和处理数据的。
在早期的开发工作中,程序都是用机器语言编写的,为了方便读者理解用机器语言编写指令的过程,假定要执行下列操作:
1+2=?
计算机处理这个简单的运算要经过以下步骤。
❑将1载入累加器。
❑把1暂存到内存的某个地址ADDR1中。
❑将2载入累加器。
❑将内存ADDR1中的数据和累加器中的数据相加。
❑输出结果(一般是输出到内存的某个地址,如ADDR2中)。
假定在所使用的计算机中,装载操作(将数据载入累加器)用二进制代码00000001表示,加法运算用00000010表示,存储操作(对内存某个位置赋值)用00000011表示,ADDR1为1000,ADDR2为1001,如果用机器语言,需要编写如下的指令序列。
00000001 00000001(将1载入累加器) 00000011 1000(把1暂存到内存中地址为1000的单元) 00000001 00000010(将2载入累加器) 00000010 1000(将内存地址为1000的单元中的数据和累加器中的数据相加) 00000011 1001(将运算结果输出到内存中地址为1001的单元中)
可见,为了使用机器语言编写程序,程序员需要记住各种操作的二进制代码,还要记住所有数据在内存中的位置,这种编码方式难度很大,极易出错,编写程序的工作效率很低。
注意
现在程序员已经很少使用机器语言编写程序,而是采用下面介绍的汇编语言。