计算机系统基础:编程语言分类
有很多种编程语言,你可能已经听说过其中的一些,例如:C++、VB.NET、Java、Python、Assembly。我们现在将回顾这些语言的起源历史以及它们仍然适用的领域。在所有情况下,请记住,计算机执行的唯一东西是机器代码或目标代码,这是从一种语言转换为在处理器上运行的代码。
代 | 第一 | 第二 | 第三 | 第四 |
---|---|---|---|---|
代码示例 |
10101010011000101 |
LDA 34
ADD #1
STO 34
|
x = x + 1
|
body.top { color : red;
font-style : italic
}
|
语言 | (低级) 机器代码 | (低级) 汇编代码 | (高级) Visual Basic、C、python 等。 | (高级) SQL、CSS、Haskell 等。 |
与目标代码的关系 (一般来说) |
-- | 一对一 | 一对多 | 一对多 |
第一代程序语言是纯机器代码,也就是 1 和 0,例如:. 程序员必须手动设计代码,然后使用穿孔卡片、穿孔纸带或拨动开关将其传输到计算机。无需翻译代码,它会立即运行。这听起来可能很古老,但它有一些优势
当然也有缺点
第二代编程语言是描述汇编代码的一种方式,你可能已经遇到过。
通过使用类似英语的代码,编程变得容易得多。使用这些像LDA
加载和STA
存储这样的助记符代码意味着代码更容易阅读和编写。要将汇编代码程序转换为在计算机上运行的目标代码,需要一个汇编器,并且汇编的每一行都可以被等效的一行目标(机器)代码替换
汇编代码 | 目标代码 | |
---|---|---|
LDA A
ADD #5
STA A
JMP #3
|
-> 汇编器 -> |
000100110100 |
汇编代码与用机器代码编写具有相似的优势,毕竟它是一种一对一的关系。这意味着汇编代码通常用于为特定硬件编写低级快速代码。直到最近,机器代码还被用于编程手机等设备,但随着C 等语言的速度和性能非常接近汇编,而且 C 能够与处理器寄存器进行通信,汇编的使用正在下降。
正如你所见,第二代语言比第一代语言有优势,此外,还有其他一些使汇编语言很棒的特点
当然也有缺点
尽管汇编代码比机器代码更容易阅读,但执行循环和条件语句仍然不直观,编写大型程序会是一个缓慢的过程,并会创建大量的goto 语句和跳转。第三代编程语言为代码带来了许多程序员友好的特性,例如循环、条件语句、类等。这意味着一行第三代代码可以生成许多行目标(机器)代码,在编写程序时节省了大量时间。
第三代(高级语言)代码是命令式的。命令式意味着代码按顺序一行一行地执行。例如
dim x as integer
x = 3
dim y as integer
y = 5
x = x + y
console.writeline(x)
输出结果为:8
第三代语言可以是平台无关的,这意味着为一个系统编写的代码将在另一个系统上运行。要将第三代程序转换为目标代码,需要一个编译器或一个解释器。
总结
然而
扩展:编程范式
|
第四代 语言旨在减少编程工作量和软件开发时间,从而降低软件开发成本。它们并不总是能成功完成此任务,有时会导致代码不优雅且难以维护。语言的設計旨在满足特定目的,例如用于查询数据库的语言(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 }
练习:编程语言的世代 描述命令式语言的含义。 答案 代码逐行执行,按顺序执行。 第二代语言代码行与目标代码行之间有什么关系? 答案 一行第二代语言代码 = 一行目标代码。 目标代码行与第三代语言代码行之间有什么关系? 答案 一行第三代语言代码 = 许多行目标代码。 给出使用第三代语言而不是汇编语言的两个好处。给出其中一个缺点。 答案
给出声明式语言的定义。 答案 描述应该执行什么计算,而不是如何执行。并非命令式! 对于第二代和第三代语言,给出将语言代转换为目标代码所需的程序翻译器。 答案
|