1.2.3 高级语言

    既然机器语言和汇编语言都是计算机可以理解的语言,用其可以完全控制计算机的行为,那么为什么人们还要创造并使用高级程序设计语言呢?因为机器语言和汇编语言都是低级语言,是面向机器的,与具体的计算机相关。学习起来困难,编程效率也低,可读性、可维护性也差。

    例如,一个说普通话的北京人想要去欧洲旅行,可是他不懂任何一门欧洲语言;恰好,一个说粤语的广东人也去欧洲旅行,而且,他懂得德语、英语、法语及西班牙语等所有欧洲语言,于是他们结伴同行。北京人想要同欧洲人交流,有两种方式:一是学习各种欧洲语言,然后同各个国家的人直接交流;二是让广东人当翻译,将自己的意思讲给欧洲人听,并将欧洲人的回答反馈给自己。如果您是那个北京人,您会选择哪种方式?我想答案是确定的,肯定要请广东人当翻译。虽然普通话和粤语也有一定的差异,但是比起同欧洲语言的差异来,这种差异小了很多。况且,如果直接同欧洲人交流,需要学习很多种语言。

    高级语言和计算机的关系,与北京人的语言和欧洲人的关系相似。高级语言编写的程序借助于编译器就可以在特定的机器上运行,不同的欧洲人相当于不同的计算机,广东人相当于编译器,粤语相当于计算机的高级语言。

    高级语言的优点主要有以下两个。

    ❑高级语言编写的程序是由一系列语句(或函数)组成的,其中每一条语句都对应着几条、几十条甚至上百条机器指令的序列,这样的一条语句,功能显然增强了,所以用它开发程序比用低级语言开发效率高得多。同时,由于高级语言的编写方式更接近人们的思维习惯,这样的程序易读、易懂、易于维护。

    ❑用高级语言编写的程序具有一定的通用性。同样的一句话,广东人根据听众的不同将其翻译成德语、英语和法语等不同形式,达到交流和沟通的目的。高级语言的一条语句,经由不同的编译器加工编译后,生成针对特定的计算机的二进制代码。低级语言涉及计算机硬件细节,所以不具有通用性。要使用高级语言编写的程序在某一台计算机上运行,只要该计算机提供该语言的编译系统即可。

    思考既然高级语言有着低级语言无法比拟的优势,是不是可以完全放弃低级语言呢?回答是否定的。

    首先,机器语言是最终操作计算机硬件的语言,任何高级语言程序想要在计算机上执行,首先必须编译成机器指令,也就是编译成二进制代码的形式。

    其次,虽然高级语言执行速度比不上同样功能的低级语言,并且在对硬件的操作上,也不如低级语言灵活,但是在如实时控制系统这样对程序运行速度要求高的情况下,或者编写某种新硬件的驱动程序时,仍然会用到低级语言(主要是汇编语言)。

    同汇编语言类似,高级语言也需要专门的编译程序(称为编译器或解释器),将其编译成机器语言后,才能运行。