跳转到内容

计算机系统基础:编程语言分类

来自维基教科书,开放的书籍,开放的世界

论文 2 - ⇑ 计算机系统基础 ⇑

← 操作系统 (OS) 的作用 编程语言分类 程序翻译器类型 →


有很多种编程语言,你可能已经听说过其中的一些,例如:C++、VB.NET、Java、Python、Assembly。我们现在将回顾这些语言的起源历史以及它们仍然适用的领域。在所有情况下,请记住,计算机执行的唯一东西是机器代码或目标代码,这是从一种语言转换为在处理器上运行的代码。

第一 第二 第三 第四
代码示例

10101010011000101
10011010100000010
11111111101000101

LDA 34
ADD #1
STO 34
x = x + 1
body.top { color : red;
           font-style : italic
}
语言 (低级) 机器代码 (低级) 汇编代码 (高级) Visual BasicCpython 等。 (高级) SQLCSSHaskell 等。
与目标代码的关系
(一般来说)
-- 一对一 一对多 一对多

第一代

[编辑 | 编辑源代码]
Colossus Mark 2 是世界上第一台电子数字可编程计算机。操作人员必须通过设置开关直接编写机器代码。

第一代程序语言是纯机器代码,也就是 1 和 0,例如:. 程序员必须手动设计代码,然后使用穿孔卡片、穿孔纸带或拨动开关将其传输到计算机。无需翻译代码,它会立即运行。这听起来可能很古老,但它有一些优势

plus point代码可以快速高效
plus point代码可以利用特定的处理器功能,例如特殊寄存器


当然也有缺点

minus point代码无法移植到其他系统,必须重新编写
minus point代码难以编辑和更新


第二代编程

[编辑 | 编辑源代码]

第二代编程语言是描述汇编代码的一种方式,你可能已经遇到过。

通过使用类似英语的代码,编程变得容易得多。使用这些像LDA 加载和STA 存储这样的助记符代码意味着代码更容易阅读和编写。要将汇编代码程序转换为在计算机上运行的目标代码,需要一个汇编器,并且汇编的每一行都可以被等效的一行目标(机器)代码替换

汇编代码 目标代码
LDA A
ADD #5
STA A
JMP #3

-> 汇编器 ->

000100110100
001000000101
001100110100
010000000011

汇编代码与用机器代码编写具有相似的优势,毕竟它是一种一对一的关系。这意味着汇编代码通常用于为特定硬件编写低级快速代码。直到最近,机器代码还被用于编程手机等设备,但随着C 等语言的速度和性能非常接近汇编,而且 C 能够与处理器寄存器进行通信,汇编的使用正在下降。

正如你所见,第二代语言比第一代语言有优势,此外,还有其他一些使汇编语言很棒的特点

plus point代码可以快速高效
plus point代码可以利用特定的处理器功能,例如特殊寄存器
plus point因为它更接近纯英语,所以与机器代码相比,它更容易阅读和编写


当然也有缺点

minus point代码无法移植到其他系统,必须重新编写


第三代(高级语言)

[编辑 | 编辑源代码]

尽管汇编代码比机器代码更容易阅读,但执行循环和条件语句仍然不直观,编写大型程序会是一个缓慢的过程,并会创建大量的goto 语句和跳转。第三代编程语言为代码带来了许多程序员友好的特性,例如循环、条件语句、类等。这意味着一行第三代代码可以生成许多行目标(机器)代码,在编写程序时节省了大量时间。

命令式语言 - 代码按程序员定义的顺序一行一行地执行

第三代(高级语言)代码是命令式的。命令式意味着代码按顺序一行一行地执行。例如

dim x as integer
x = 3
dim y as integer
y = 5
x = x + y
console.writeline(x)

输出结果为:8

第三代语言可以是平台无关的,这意味着为一个系统编写的代码将在另一个系统上运行。要将第三代程序转换为目标代码,需要一个编译器或一个解释器

总结

plus point硬件无关性,可以轻松移植到其他系统和处理器
优点节省时间,对程序员友好,一行第三代语言代码相当于第一代和第二代语言的许多行代码。


然而

缺点生成的代码可能无法像第一代和第二代语言那样充分利用处理器特定的功能。
扩展:编程范式

在 A2 中,您将更详细地学习几种第三代语言类型,包括:

第四代

[编辑 | 编辑源代码]

第四代 语言旨在减少编程工作量和软件开发时间,从而降低软件开发成本。它们并不总是能成功完成此任务,有时会导致代码不优雅且难以维护。语言的設計旨在满足特定目的,例如用于查询数据库的语言(SQL)、用于生成报告的语言(Oracle Reports)和用于构建用户界面的语言(XUL)。第四代编程类型的一个例子是声明式语言。

--an example of a Structured Query Language (SQL) to select criminal details from a database
SELECT name, height, DoB FROM criminals WHERE numScars = 7;
声明式语言 - 描述应该执行什么计算,而不是如何执行。并非命令式!


声明式语言的一个例子是 CSS,您在完成任何网页设计单元时可能会了解更多关于它的信息。

/*code to change the headings on a page to green and the paragraphs to red and italic*/
h1 { color : #00FF00; }
p { color : #FF0000; font-style : italic }
练习:编程语言的世代

描述命令式语言的含义。

答案

代码逐行执行,按顺序执行。

第二代语言代码行与目标代码行之间有什么关系?

答案

一行第二代语言代码 = 一行目标代码。

目标代码行与第三代语言代码行之间有什么关系?

答案

一行第三代语言代码 = 许多行目标代码。

给出使用第三代语言而不是汇编语言的两个好处。给出其中一个缺点。

答案

  • 编写和维护更快更容易。
  • 硬件独立,编写一次,可以多次使用。
  • 可能缺少低级、处理器特定的功能,这意味着代码运行速度更慢。

给出声明式语言的定义。

答案

描述应该执行什么计算,而不是如何执行。并非命令式!

对于第二代和第三代语言,给出将语言代转换为目标代码所需的程序翻译器。

答案


  • 第二代(汇编)需要汇编器。
  • 第三代需要解释器或编译器。
华夏公益教科书