
3.3 程序设计语言
程序设计语言是用于编写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。
程序设计语言取决于三方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即按照各种方法表示的各个记号的特定含义,但不涉及使用者。语用表示程序与使用者的关系。
自20世纪60年代以来,世界上公布的程序设计语言已有上千种之多,但是只有很小一部分得到了广泛的应用。从发展历程来看,程序设计语言可分为四代。
第一代是机器语言。机器语言由二进制的0、1代码指令构成,不同的CPU具有不同的指令系统。机器语言程序难编写、难修改、难维护,需要用户直接对存储空间进行分配,编程效率极低。这种语言已经被逐渐淘汰。
第二代是汇编语言。汇编语言指令是机器指令的符号化,与机器语言指令有着直接的对应关系,所以汇编语言同样存在着难学难用、容易出错、维护困难等缺点。但是汇编语言也有自己的优点:可直接访问系统接口,汇编程序翻译的机器语言程序效率高。从软件工程角度来看,只有在高级语言不能满足设计要求,或不具备支持某种特定功能的技术性能(如特殊的输入/输出)时,才使用汇编语言。
第三代是高级语言。高级语言是面向用户的、基本上独立于计算机种类和结构的语言。其最大的优点是:形式上接近于数学语言和自然语言,概念上接近于人们通常使用的概念。高级语言的一条命令可以代替几条、几十条甚至几百条汇编语言的指令。因此,高级语言易学易用,通用性强,应用广泛。当前软件开发主流的高级语言有Java、C/C++、Python等。
第四代是非过程化语言(4GL),编码时只需说明“做什么”,而不需要描述算法细节。数据库查询和应用程序生成器是4GL的两个典型应用。例如,用户在用数据库查询语言SQL对数据库中的信息进行复杂操作时只需将要查找的内容在什么地方、根据什么条件进行查找等信息告诉SQL,SQL将自动完成查找过程。应用程序生成器则是根据用户的需求“自动生成”满足需求的高级语言程序。
总之,程序设计语言一直是向着智能化、易用化方向发展。根据2019年10月TIOBE调查,全球排名前十的编程语言如表3-1所示。
表3-1 2019年10月编程语言流行度排行榜

注:数据来源TIOBE