编程语言/简介
一种编程语言是一种人工语言,可用于指示计算机执行特定任务。要被视为通用编程语言,它必须是计算上完备的,或图灵完备的。然而,通常将一些非计算上完备的语言,例如数据库查询语言和其他领域特定语言,也视为编程语言。
低级编程语言是接近机器本地语言的非常基本的语言。可以将低级编程语言视为软件的构建块语言。汇编代码是最常见的低级语言,它只需要很少的转换即可将其组装成机器代码。(构成二进制的 1 和 0。)
高级编程语言更接近人类交流的水平。在这种方法中,编译器为程序员完成了大部分工作。语言越接近我们日常的言语,我们越容易关注更复杂的问题。然而,这可以做得太过分。如果一种语言太像英语(或其他自然语言),则创建复杂程序可能更难。这是因为冗长的语言需要更多时间来阅读,因此需要更多时间来理解。
机器代码是计算机可以直接理解的语言。机器代码由二进制数字序列组成。它几乎从不直接编程,但任何要在普通计算机上运行的东西都必须先转换为机器代码。机器代码对于每种计算机架构都可能不同。
汇编语言是机器代码更易于人类阅读的表示,其中机器指令以助记符而不是二进制数字表示。只要程序不是自修改的,汇编语言就与机器代码具有 1:1 的关系。在计算机程序可以由计算机运行之前,它必须转换为机器代码。执行此转换的程序称为汇编器。在计算的早期,汇编语言被广泛使用,但如今主要用于程序的非常时间关键的部分、操作系统的核心以及非常小的计算机(如智能卡上的芯片)。
机器代码和汇编语言分别被称为第一代和第二代编程语言。具有算术表达式、循环结构、函数和其他结构的编程语言,可以使程序员免于直接处理机器指令,被称为第三代编程语言。
以前,高级的、特定领域的编程语言通常被称为第四代语言,而专家系统被称为第五代编程语言。近年来,这种区分变得模糊,因为出现了许多非常高级的通用编程语言,例如 Python、Haskell 和 Common Lisp。专家系统如今很少使用。
在程序可以在计算机上执行之前,它必须转换为机器代码。或者,它可以通过另一个程序(称为解释器)模拟。编译器是一个程序,它将一种编程语言(称为源编程语言)转换为另一种编程语言(称为目标语言)。通常,源语言是高级语言,而目标语言是机器代码。解释器可能要求源编程语言在解释之前编译成中间形式,称为字节码。这是一种更低级的语言,更容易编写解释器。在 Java 编程语言中,这是一个单独的步骤,而在其他情况下,它作为解释器的一个组成部分执行。此类编程语言的示例包括 Perl 和 Python。CommonLisp 是上述情况的例外:它既被解释又被编译。
类型系统有两个轴:一方面是动态与静态,另一方面是强与弱。
强类型语言不允许对对象进行操作,除非该对象在类型上匹配。示例包括 CommonLisp、Q-base 和 Python。
弱类型语言允许此类操作。示例包括 C 和 C++。
动态类型语言将类型绑定到值。静态类型语言将其绑定到变量。
(有关背景信息,请参见 此处。)
- 手动管理
- 垃圾回收