计算机语言
计算机语言(英語:computer language)指人与计算机之间沟通的形式语言,是人与计算机之间传递信息的媒介。其概念比通用的编程语言要更广泛。例如,HTML是置标语言,也是计算机语言,但并不是编程语言。[1]
计算机语言涵盖了所有用于人与计算机之间交互的形式化符号系统,包括编程语言、置标语言、查询语言、建模语言、硬件描述语言、规约语言和仿真语言等子类别。与自然语言不同,计算机语言通常具有严格的形式语法和无歧义的语义定义,以确保计算机能够精确解释和执行。[2]
分类
[编辑]计算机语言可按其用途和抽象层次分为多个子类别:
构造语言
[编辑]构造语言(construction languages)用于控制计算机的行为或构造软件系统。
- 编程语言:用于编写计算机程序以控制计算机行为。包括机器语言、汇编语言和高级语言(如C、Java、Python)。[1]
- 命令语言:用于控制计算机任务的执行,例如Unix shell、Windows PowerShell。
- 查询语言:用于从数据库或信息系统中检索数据,如SQL、XQuery。[2]
- 变换语言:用于将一种形式语言的文本转换为符合特定目标的结果,如XSLT。
结构语言
[编辑]结构语言(structural languages)用于描述数据的组织方式或文档的呈现。
- 置标语言:用于在文档中添加结构与语义标注,例如HTML、XML、Markdown。
- 数据交换语言:用于系统之间的数据交换,如JSON、XML、YAML。
- ;样式表语言:用于描述结构化文档的呈现方式,如CSS。
- 页面描述语言:用于描述打印页面的外观,如PostScript、PDF。
- 配置语言:用于编写配置文件,如INI、TOML。
建模语言
[编辑]建模语言(modeling languages)用于对系统进行抽象描述和设计。
规约语言
[编辑]规约语言(specification languages)用于精确描述系统应有的行为和功能,但不涉及具体实现方式,例如Z、VDM。[1]
仿真语言
[编辑]仿真语言(simulation languages)用于对物理或抽象系统进行仿真建模,如Simula、GPSS。
与自然语言的区别
[编辑]计算机语言与自然语言有本质区别。自然语言(如汉语、英语)是人类在长期交流中自然演化而成的,具有歧义性、语义模糊性和语境依赖性。计算机语言则是人为设计的形式语言,其语法严格定义,语义无歧义,以确保计算机能够唯一地解释和执行每条指令。[3]
自然语言的语法通常用上下文无关文法不足以完整描述(需要上下文相关甚至更复杂的规则),而大多数计算机语言的语法可以完全用上下文无关文法定义,并通过巴科斯范式或扩展巴科斯范式精确表述。[2]
语法与语义
[编辑]计算机语言的定义包含两个层面:语法(syntax)和语义(semantics)。语法规定了符号的组合规则,即哪些字符串是合法的程序;语义规定了合法字符串的含义。语法通常用BNF或EBNF描述,而语义则可以通过操作语义、指称语义或公理语义来定义。[1]
计算机语言的实现通常经过词法分析、语法分析、语义分析等阶段。这些阶段在编译器或解释器中完成,将高级语言代码转换为机器可执行的指令。[2]
历史
[编辑]计算机语言的历史与计算机硬件和软件的发展紧密相关。1940至1950年代,程序员使用机器语言(二进制编码)直接编程,随后汇编语言用助记符代替二进制代码,大幅提高了可读性。1950年代出现了第一批高级语言:FORTRAN(1957年,用于科学计算)和COBOL(1959年,用于商业数据处理)。LISP(1958年)开创了函数式编程范式。[1]
1960至1970年代,ALGOL 60引入了块结构和BNF语法描述,C语言(1972年)成为系统编程的标杆。1980至1990年代,Smalltalk和C++推广了面向对象编程,Java(1995年)引入了虚拟机概念。与此同时,非编程类的计算机语言也在发展:SGML(1986年)成为置标语言的标准,其派生语言HTML和XML成为万维网的基础;SQL(1970年代)成为通用的数据库查询语言。[2]
进入21世纪,领域特定语言在各专业领域广泛兴起,从LaTeX文档排版到VHDL硬件设计,计算机语言的概念从通用的编程语言扩展至几乎所有的形式化人机交互场景。
参见
[编辑]参考文献
[编辑]- ^ 1.0 1.1 1.2 1.3 1.4 Scott, Michael L. Programming Language Pragmatics 4th. Morgan Kaufmann. 2015. ISBN 978-0124104099.
- ^ 2.0 2.1 2.2 2.3 2.4 Aho, Alfred V.; Lam, Monica S.; Sethi, Ravi; Ullman, Jeffrey D. Compilers: Principles, Techniques, and Tools 2nd. Addison-Wesley. 2006. ISBN 978-0321486813.
- ^ Chomsky, Noam. Three Models for the Description of Language. IRE Transactions on Information Theory. 1956, 2 (3): 113–124. doi:10.1109/TIT.1956.1056813.