从问题到程序:C/C++程序设计基础
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.2 程序设计语言及其发展

要想让计算机能够完成一个计算活动,就需要描述清楚该活动的细节,以及计算机运行时应该做的各种动作及其执行顺序,也就是说,需要写出相应的程序并送入计算机。而为了描述程序,需要有一套适当的描述方式。一套完整的描述方式就构成了一个语言

人们在生活和工作中与他人交流使用的是某种自然语言(如汉语等)。为了与计算机交流,指挥它工作,同样需要有与之交流的“语言”。用于描述计算机能够执行的程序所用的语言,就是程序设计语言(或称编程语言,programming language)。程序设计语言是两种活动之间的桥梁:一种是人们的程序设计活动,人们用程序设计语言描述自己希望计算机做什么的设想,写出程序;另一种是计算机的运行,计算机能执行的程序必须是用它能处理和执行的某种语言描述的。

在计算机的发展历程中,人们开发和使用过很多不同类型的程序设计语言。

1. 机器语言

计算机诞生之初,人们只能用计算机可以直接处理的二进制形式的机器语言写程序。下面是在一台假想计算机上计算算术表达式a×b+c的指令系列:

显然,对于人们的使用而言,二进制的机器语言极其不便。用它书写程序非常困难,不但工作效率极低,程序的正确性也难以保证。如果发现程序不能正确工作,也很难找出错误的根源并改正。

2. 汇编语言

随着程序设计经验的积累,人们发展了符号形式的、使用相对容易的汇编语言。用汇编语言写出的程序需要用专门软件(汇编系统)加工,翻译成二进制的机器语言程序后才能送给计算机执行。下面是用某种假想的汇编语言写出的程序,它完成与上面程序同样的工作:

汇编语言的每条指令对应一条机器语言指令,但采用助记的符号名(如上面的load、mult、add和save),存储单元也用符号形式的名字表示。这样,每条指令的意义就更容易理解和把握了。但是,汇编语言的程序仍然是以一条条指令的形式写出的,描述的基础是硬件的低级结构和相关概念。另外,汇编语言的程序本身仍然没有任何结构,就是由许多上面这样的指令排出的长长序列,是一盘散沙。因此,复杂程序作为整体,仍然很难正确写出来,也很难理解。

3. 高级语言

随着对计算机认识的深入和应用的需要,人们希望能在更高的层次上编写程序,并使写出的程序能完全脱离具体计算机硬件的细节。在这个方向上的努力最终导致了高级程序设计语言(high-level programming language,简称高级语言)的诞生。1954年诞生的第一个高级语言FORTRAN宣告了程序设计新时代的开始。FORTRAN是完全符号化的,用类似于数学表达式的形式描述基本计算;提供了有类型的变量,作为存储的抽象模型;还提供了一批控制机制,如循环和子程序等。这些高级机制使编程者可以摆脱计算机硬件的具体细节,方便复杂程序的书写,写出的程序更容易阅读,有错误时也更容易辨认和改正。FORTRAN语言诞生后受到广泛欢迎。

高级语言更接近人们习惯的描述形式,更容易被接受,也使更多的人能够(并乐于)加入程序设计活动中。用高级语言书写程序时的工作效率更高,它使人们能高效地开发出大量规模越来越大的应用系统,这反过来推动了计算机应用的发展。应用的发展又推动了计算机工业的大发展。可以说,高级程序设计语言的诞生和发展,对于计算机的发展起了极其重要的作用。

从FORTRAN语言诞生至今,人们已提出数千种语言,其中大部分是试验性语言,只有少数语言得到了比较广泛的使用。随着时代的发展,今天绝大部分程序都是用高级语言写的,人们也早已习惯用程序设计语言这个术语指代各种高级语言了。

在高级语言(例如C/C++语言)的层面上,描述前面同样的程序片段只需要一行:

这一描述表示,要求计算机计算等号右边的表达式,而后将计算结果存入由d代表的存储单元中。这种表示方式与人们所熟悉的数学形式直接对应,更容易阅读和理解。

高级语言程序采用完全抽象的符号形式,使人们可以完全摆脱难用的二进制形式,也不用关心具体计算机的细节。此外,高级语言中还提供了许多高级的程序结构,供人们在编写程序时组织好复杂的程序。与机器语言和汇编语言的程序相比,情况确实大大改观了。