编程语言(Programming Language)大致可以分为五个世代。
第一代语言:机器语言第二代语言:汇编语言第三代语言:高阶语言,例如C第四代语言:极高阶语言,例如SQL第五代语言:逻辑导向语言,又称自然语言。1
第一代第一代语言是机器语言,由0和1组成,可以由CPU直接执行。执行速度最快,开发难度高,可读性低。2
机器语言(machine language)是一种指令集的体系。这种指令集称为机器码(machine code),是电脑的CPU可直接解读的数据。1
机器码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库与运行平台相关的部分。3
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。不同种类的计算机其机器语言是不相通的,按某种计算机的机器指令编制的程序不能在另一种计算机上执行。1
要用机器语言编写程序,编程人员需首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员要自己处理每条指令和每一数据的存储分配和输入输出,还需记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,这样编写出的程序完全是0与1的指令代码,可读性差且容易出错。在现今,除了计算机生产厂家的专业人员外,绝大多数程序员已经不再学习机器语言。1
第二代第二代语言是汇编语言,属于低阶语言,但可读性较高。要使用汇编器(Assembler)译成机械码,才可由CPU执行。3
汇编语言(英语:assembly language)是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。3
使用汇编语言编写的源代码,然后通过相应的汇编程序将它们转换成可执行的机器代码。这一过程被称为汇编过程。3
汇编语言使用助记符(Mnemonics)来代替和表示特定低级机器语言的操作。特定的汇编目标指令集可能会包括特定的操作数。许多汇编程序可以识别代表地址和常量的标签(Label)和符号(Symbols),这样就可以用字符来代表操作数而无需采取写死的方式。普遍地说,每一种特定的汇编语言和其特定的机器语言指令集是一一对应的。3
许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。有的汇编语言编写工具经常会提供宏,它们也被称为宏汇编器。3
汇编语言已不像其他大多数的程序设计语言一样被广泛用于程序设计,在今天的实际应用中,它通常被应用在底层硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都会需要汇编语言。3
第三代第三代语言是高阶语言,较易被人类理解,包括常用的C/C++、C#、Objective-C、Java、Pascal和Visual Basic等。3
高阶语言要使用预处理器、编译器和连结器翻译,才可产生执行档。2
高级编程语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示,使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。由于早期电脑业的发展主要在美国,因此一般的高级语言都是以英语为蓝本。在1980年代,当东亚地区开始使用电脑时,在日本、台湾及中国大陆都曾尝试开发用各自地方语言编写的高级语言,当中主要都是改编BASIC或专用于数据库数据访问的语言,但是随着编程者的外语能力提升,现时的有关开发很少。1
第四代第四代语言又称为查询语言、非程序导向语言或极高阶语言,语法较接近人类语言,例如SQL。1
SQL可以使用select, from, order by等等的指令查询和排序数据库内容。如果使用高阶语言排序数据,我们须使用两个for循环。2
查询语言泛指向数据库或信息系统查询的各种编程语言。1
查询语言必须要能表达所有关系代数所能表达的查询,这样才被称为关系完整的(英语:Relational complete)。1
第五代第五代语言又称为自然语言或逻辑导向语言,主要用于人工智能(AI)研究领域。它没有特别语法,能够让电脑直接处理人类语言所写的问题。2
第五代编程语言(5GL)是一种期望计算机能自动化问题求解的意图,基于问题所给定的某些限制,交由程序来处理而不需以程序员再投入人力开发程式。多数基于限制式和逻辑推演的编程语言,以及其它一些宣告式的语言,或可归类为第五代编程语言。2
在20世纪80年代第五代编程语言被认为是未来的方式,有些人预测除了低阶机器组合语言之外,第五代编程语言将取代所有其它高阶语言进行系统开发。值得一提的是从 1982年到了 1993年,日本在第五代计算机系统専案上投入了大量研究和资金,希望能够利用这些工具设计一个庞大的计算机网络。2但是随着更大的専案建立,其中方法的缺陷变得更加明显。事实证明给定一组问题限定的约束,能导出一个有效果和有效率的算法来解决这个问题,本身就是一个非常困难的问题。关键步骤到21世纪初叶还无法完全不需人工介入而自动化,仍需要人类程序员的对问题的理解、以及卓越的洞察力。3
本词条内容贡献者为:
尚轶伦 - 副教授 - 同济大学数学科学学院