1.2 程序设计语言
1.2.1 程序设计语言概述
程序设计语言是书写计算机程序的语言,它由一组符号及一组语法规则构成,能够实现人类与计算机的交互,让计算机按照人类设计好的指令自动完成各种运算。程序设计语言又称为编程语言,程序员能够通过编写程序准确地定义计算机所需要使用的数据,以及在各种情况下计算机需要采取的行动。
随着计算机技术的发展,编程语言也处于不断的发展与变化之中,从最初的机器语言发展到汇编语言,再到高级语言。有的语言经久不衰,有的语言则是昙花一现。按照编程语言的特性,编程语言的发展可分为低级语言、非面向对象的高级语言和面向对象的高级语言3个阶段。
1.低级语言阶段(1946—1953年)
低级语言主要是机器语言和汇编语言。
(1)机器语言。机器语言是一种二进制语言,计算机只能识别由二进制数0和1组成的指令。用机器语言编写的程序执行效率最高,但是完全由0和1组成的程序代码不方便阅读和修改,也容易出错。难学、难写、难记、难检查、难修改是机器语言的主要缺点。因此,只有极少数计算机专业人员会编写机器语言程序。
(2)汇编语言。人们在机器语言的基础上进一步改进,使用助记符与机器语言中的指令进行一 一对应,于是汇编语言出现了。汇编语言以缩写的英文字符作为标记符进行编写,能够帮助程序员提高编程效率。但汇编语言程序较为冗长,出错率较高。
由于机器语言和汇编语言都是直接操作计算机硬件并基于此来设计的,所以统称为低级语言。
2.非面向对象的高级语言阶段(1954—1982年)
1954年Fortran面世,程序设计语言迈入面向过程的“高级语言程序设计”时代。高级语言是接近自然语言的一种计算机语言。早期的高级语言以描述求解过程为主来编程,这种过程描述与计算机结构无关,在不同计算机上的表达是一致的,可以很好地描述计算问题并利用计算机求解。为了与当前流行的面向对象语言做区分,我们称之为非面向对象的高级语言。
(1)Fortran。Fortran是第一种高级语言,由美国的约翰·贝克斯(Johann Bakes)创建。它很接近人们使用的自然语言(英语)和数学语言,程序中使用算术运算符和算术表达式,很容易理解和使用。Fortran以其特有的功能在数值分析、科学计算和工程计算领域有着重要影响。
(2)ALGOL。ALGOL是第一种结构化编程语言,也是计算机发展史上首批清晰定义的高级语言,由欧美计算机学专家合力于20世纪50年代开发。国际计算机学会将ALGOL模式列为算法描述的标准,由此启发了Pascal、Ada和C语言等的出现。ALGOL语句和普通语言表达式非常接近,适用于数值计算,所以ALGOL多用于科学计算。
(3)Basic。Basic是早期最简单的编程语言之一,于1964年发布。Basic本来是为在校大学生创建的高级语言,目的是使大学生更容易地使用计算机。该语言只有26个变量名、17种基本语句、12个函数和3个命令。由于Basic在当时相对容易学习,因此很快从校园走向社会,成为初学者学习程序设计的首选语言。该语言被誉为“初学者通用符号指令代码”。
(4)Pascal。Pascal是基于ALGOL的编程语言,由瑞士尼古拉斯·沃斯(Niklaus Wirth)教授于20世纪60年代末创建。Pascal具有语法严谨、层次分明等特点。Pascal强调的结构化编程带来了非结构化编程语言(如Fortran)无法比拟的美和乐趣。Pascal被称为“编程语言重要的里程碑”。
(5)C语言。1970年,美国贝尔实验室的肯·汤普森(Ken Thompson)设计出了B语言。在此基础上,1972—1973 年,贝尔实验室的丹尼斯·里奇(Dennis Ritchie)设计出了 C 语言。C语言是一门面向过程的编程语言,设计目标是提供一种能以简易的方式编译、可处理低级存储器、仅产生少量机器码,以及不需要任何特定运行环境支持便能运行的编程语言。使用C语言描述问题比汇编语言迅速,工作量小,可读性好,易于调试、修改和移植,而代码量与汇编语言相当。目前, C语言仍有较高的市场份额,长期占据市场份额前5的位置。
3.面向对象的高级语言阶段(1983年至今)
1983年C++正式诞生,标志着程序设计进入“面向对象程序设计”时代。面向对象程序设计(Object Oriented Programming,OOP)作为一种新方法,可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的非面向对象思想刚好相反:传统的程序设计将程序看作一系列函数的集合,或者直接就是一系列指令;而面向对象程序设计中每一个对象都能够接收消息、处理数据和传递数据。目前主流的编程语言几乎都是面向对象的高级语言,如C++、Java、C#和Python等。
(1)C++。1979年本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)到了贝尔实验室,开始将C语言改进为带有类的语言,1983年该语言正式命名为C++。1985年、1990年和1994年,C++先后进行3次主要修订。1998年,C++国际标准投入使用。C++可以进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++长期位居程序语言排行榜的前5名,目前仍是一种非常重要的编程语言。
(2)Java。Java是美国Sun公司于1995年推出的静态面向对象语言,不仅吸收了C++的各种优点,还摒弃了C++中难以理解的多继承、指针等概念。因此Java语言具有功能强大、简单易用两个特征。Java极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。目前,在移动互联网开发领域,Java占有很大的市场份额。
(3)C#。C#是微软公司于2000年发布的一种由C和C++衍生出的面向对象编程语言。它在继承C和C++强大功能的同时去掉了一些复杂特性,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程,成为.NET平台开发的首选语言。
(4)Python。近几年,得益于人工智能和大数据领域的发展,Python用户数量上升势头迅猛,在 TIOBE 语言排行榜中多次蝉联月度排行榜首。随着数字产业的快速发展,Python 未来的发展空间进一步扩大。关于Python的更多介绍见本书1.3节。