Skip to content

第3章 程序设计语言 ​

🎯 本章学习目标 ​

学完本章,你将能够:

  • ✅ 说出程序设计语言的三大分类(机器语言、汇编语言、高级语言)
  • ✅ 理解机器语言是计算机唯一能直接执行的语言
  • ✅ 掌握汇编语言的特点(助记符、汇编器、低级语言)
  • ✅ 区分低级语言与高级语言的特点和适用场景
  • ✅ 理解编译型语言与解释型语言的区别
  • ✅ 记住 C++ 是编译型、Python 是解释型
  • ✅ 掌握 C++ 程序的处理流程(编辑→编译→链接→运行)
  • ✅ 了解常见高级语言(C、C++、Python、Java、C#、Go)及特点
  • ✅ 能判断某语言属于编译型还是解释型
  • ✅ 理解"可移植性""执行效率"等核心概念

🗺️ 本章知识图谱 ​

程序设计语言
├── 按发展阶段分类
│   ├── 机器语言
│   │   ├── 二进制 0/1 代码
│   │   ├── 计算机唯一直接执行
│   │   ├── 执行最快、可读性最差
│   │   └── 可移植性差
│   ├── 汇编语言
│   │   ├── 助记符(MOV/ADD/SUB)
│   │   ├── 需要汇编器翻译
│   │   ├── 低级语言、面向机器
│   │   └── 与硬件强相关
│   └── 高级语言
│       ├── 接近自然语言和数学公式
│       ├── 需编译或解释翻译
│       ├── 可读性好、可移植性强
│       └── 代表:C/C++、Python、Java、Go
├── 按翻译方式分类(高级语言)
│   ├── 编译型
│   │   ├── 编译器整体翻译
│   │   ├── 生成可执行文件(.exe)
│   │   ├── 运行速度快、跨平台差
│   │   └── 代表:C、C++、Pascal
│   └── 解释型
│       ├── 解释器逐行执行
│       ├── 不生成可执行文件
│       ├── 跨平台好、速度稍慢
│       └── 代表:Python
├── C++ 处理流程
│   ├── 编辑:写 .cpp 源程序
│   ├── 编译:生成 .obj 目标文件
│   ├── 链接:组装库函数生成 .exe
│   └── 运行:执行可执行程序
└── 常见高级语言巡礼
    ├── C:面向过程、贴近硬件、操作系统
    ├── C++:兼容C、面向对象、竞赛主力
    ├── Python:语法简洁、AI/数据分析
    ├── Java:一次编写到处运行
    └── Go:Google推出、高并发

一、人机之间的"翻译问题" ​

人类交流用的是中文、英文这样的自然语言,而计算机硬件只认二进制——高电平代表 1,低电平代表 0。想让计算机干活,就得用它能理解的方式下达指令,这种"人与计算机之间沟通的语言"就是程序设计语言(Programming Language)。

程序设计语言按"离硬件的远近"分为三代:

离人近 ──────────────────────────────── 离机器近
  高级语言          汇编语言            机器语言
(C++/Python)   (MOV/ADD助记符)    (01011010...)
   ✅ 易读易写                        ✅ 机器直接执行

下面我们从最"原始"的机器语言讲起。


二、机器语言:计算机唯一的"母语" ​

2.1 什么是机器语言 ​

机器语言(Machine Language)是用二进制代码 0 和 1 编写的语言,是计算机唯一能够直接识别和执行的语言。一条机器指令通常由操作码(做什么)和操作数(对谁做)组成,例如某台计算机上:

1011 0000 0000 0101   ← 一条机器指令:把数字 5 送入寄存器 AL

2.2 机器语言的特点 ​

  • ✅ 执行速度最快:CPU 拿到就能直接跑,不需要任何翻译
  • ✅ 与硬件"零距离",能最充分地发挥硬件性能
  • ❌ 可读性最差:满屏 0/1,人几乎无法阅读和调试
  • ❌ 编写难度极大:程序员要记住所有二进制编码,极易出错
  • ❌ 可移植性差:不同 CPU(如 x86、ARM)的机器语言各不相同,换台电脑就失效

高频考点 🔥: "计算机唯一能直接识别和执行的语言是 机器语言"——这句话几乎年年出现在选择题或判断题中。记住三个"最":执行速度最快、可读性最差、编写难度最大。

易错点 ⚠️: 不要看到"二进制"就以为高级语言程序也是机器语言。我们写的 .cpp、.py 文件里虽然最终都变成 0/1 存储,但它们是文本形式的源程序,必须经过翻译才能执行;机器语言特指那些直接给 CPU 执行的二进制指令。


三、汇编语言:助记符的第一次飞跃 ​

3.1 什么是汇编语言 ​

为了摆脱记忆 0/1 的痛苦,人们用一些简短的英文单词(助记符)来代替二进制指令,这就是汇编语言(Assembly Language)。例如:

助记符含义对应的机器操作
MOVMove,传送把数据从一个位置复制到另一个位置
ADDAdd,加法两个数相加
SUBSubtract,减法两个数相减
JMPJump,跳转跳到指定指令继续执行

同样是"把 5 送入 AL",汇编语言写成:

asm
MOV AL, 5     ; 把数字 5 传送到寄存器 AL,比 1011000000000101 好记得多

3.2 汇编语言仍然是低级语言 ​

汇编语言虽然好记了一些,但计算机并不认识 MOV、ADD 这些字母,需要一个专门的翻译工具——汇编器(Assembler)把助记符逐条翻译成机器语言:

汇编源程序  ──汇编器(Assembler)──▶  机器语言程序
   MOV AL, 5                        1011 0000 0000 0101

而且汇编语言仍然面向机器:每条指令基本对应一条机器指令,编程时要直接操作寄存器和内存,x86 的汇编程序拿到 ARM 电脑上照样不能用。因此,机器语言和汇编语言统称为低级语言。

高频考点 🔥: 汇编语言使用助记符编写,必须经过汇编器翻译才能执行;它属于低级语言,不是高级语言!

易错点 ⚠️: 判断题常挖坑——"汇编语言比机器语言好记,所以计算机可以直接执行汇编语言。" ❌ 错!任何符号化的语言都必须翻译,计算机能直接执行的始终只有机器语言。


四、高级语言:用"人话"写程序 ​

4.1 什么是高级语言 ​

高级语言(High-Level Language)是一种接近自然语言和数学语言的程序设计语言。它屏蔽了寄存器、内存地址等硬件细节,一条语句往往对应多条机器指令,程序员只需专注于解决问题本身。

求两个数之和,三种语言对比如下:

语言写法(求 a + b)直观程度
机器语言0000 0011 1100 0001 ...(一串二进制)😵 完全看不懂
汇编语言MOV AX, A / ADD AX, B😐 要懂寄存器
高级语言(C++)cout << a + b;😊 一目了然
高级语言(Python)print(a + b)😊 一目了然

常见的高级语言有 C、C++、Python、Java、C#、Pascal、Go 等。

4.2 高级语言的特点 ​

  • ✅ 可读性强:语法接近英语和数学公式,如 if (a > b)、sum = a + b
  • ✅ 编程效率高:一条语句顶多条机器指令,还提供丰富的现成功能
  • ✅ 可移植性好:同一份 C++/Python 源代码几乎可以在不同电脑上运行(只需重新编译或装有解释器)
  • ❌ 不能被直接执行:必须经过编译或解释翻译成机器语言
  • ❌ 单次运行的极致效率通常不如手工编写的机器语言/汇编语言

高频考点 🔥: 高级语言"接近自然语言和数学语言",不能被计算机直接识别,必须经过编译或解释;低级语言(机器语言、汇编语言)"面向机器",执行效率高但难写难读。


五、低级语言 vs 高级语言:一张大表说清楚 ​

对比项低级语言(机器语言、汇编语言)高级语言(C++、Python、Java 等)
表示形式二进制 0/1;汇编用助记符接近自然语言、数学语言的语句
与硬件关系面向机器,直接操作硬件面向问题,屏蔽硬件细节
可读性差(机器语言极差)好
编写与调试难度大小
执行速度最快(机器语言无需翻译)稍慢(需翻译过程)
可移植性差,换 CPU 架构就失效好,跨平台
翻译方式机器语言无需翻译;汇编需汇编器需编译器编译或解释器解释
典型用途底层驱动、单片机、性能极致优化应用开发、算法竞赛、人工智能等

记忆口诀 🔥: "低级靠机器,快但难迁移;高级像人话,好写要翻译。"


六、编译型与解释型:高级语言的两种"翻译"方式 ​

高级语言的翻译方式有两种:像笔译一样整本翻完再看的编译型,和像同声传译一样说一句翻一句的解释型。

6.1 编译型语言 ​

编译型语言使用编译器(Compiler),把整个源程序一次性翻译成机器语言,生成一个可执行文件(如 Windows 下的 .exe),以后运行直接执行这个文件。

  • 代表语言:C、C++、Pascal
  • 优点:翻译只做一次,运行速度快
  • 缺点:可执行文件与操作系统/CPU 绑定,跨平台性差(Windows 的 .exe 不能直接在 Linux 上跑)

6.2 解释型语言 ​

解释型语言使用解释器(Interpreter),边翻译边执行——逐行读取源程序、逐行翻译成机器指令并立即执行,不生成独立的可执行文件。

  • 代表语言:Python
  • 优点:跨平台性好(只要电脑上装有对应平台的解释器,同一份源代码到处能跑);调试灵活
  • 缺点:每次运行都要重新翻译,运行速度相对较慢

6.3 编译 vs 解释对比表 ​

对比项编译型(C/C++)解释型(Python)
翻译工具编译器 Compiler解释器 Interpreter
翻译时机运行前整体一次性翻译运行时逐行翻译、逐行执行
是否生成可执行文件✅ 生成(.exe 等)❌ 不生成,每次靠解释器运行
运行速度快相对较慢
跨平台性较差(可执行文件绑定平台)好(源代码配解释器即可)
生活类比一本外文书整本翻译好再读现场同声传译,边听边翻

高频考点 🔥: C/C++ 是编译型语言(编译器、整体翻译、生成可执行文件、运行快);Python 是解释型语言(解释器、逐行执行、不生成可执行文件、跨平台好)。

易错点 ⚠️: ① "解释型语言不需要翻译,计算机能直接执行"——❌ 错!解释器也是在做翻译,只是逐行进行而已,能直接执行的永远只有机器语言。② Java 比较特殊:源代码先编译成与平台无关的"字节码",再由 Java 虚拟机(JVM)解释执行,属于"编译 + 解释"的混合型,二级考试了解即可。


七、语言处理流程:一个程序从源代码到运行 ​

7.1 C++ 的处理流程:编译 → 链接 → 运行 ​

C++ 源程序从写好到跑出结果,要经过编译和链接两个关键步骤:

 源程序              目标程序              可执行程序
 sum.cpp   ──编译──▶  sum.obj   ──链接──▶  sum.exe  ──运行──▶ 输出结果
(文本源代码)      (Windows:.obj      (机器语言,
                    Linux:.o)          可直接执行)
  1. 编辑:写出 C++ 源程序,保存为 .cpp 文件;
  2. 编译(Compile):编译器把源程序翻译成机器语言形式的目标程序(.obj / .o),这一步会检查语法错误;
  3. 链接(Link):链接器把目标程序与系统库函数(如 cout、cin 的实现)组装在一起,生成完整的可执行程序(.exe);
  4. 运行:执行可执行文件得到结果。

补充:标准的C++处理流程应为四个阶段: 编译’在广义上包含预处理和汇编两个子阶段,最终生成目标文件

阶段工具输入输出
预处理预处理器.cpp 源文件.ii 预编译文件
编译编译器.ii 文件.s 汇编文件
汇编汇编器.s 汇编文件.o / .obj 目标文件
链接链接器.o / .obj 目标文件.exe / .out 可执行文件

高频考点 🔥: 完整顺序是 源程序 → 编译 → 目标程序 → 链接 → 可执行程序 → 运行。注意"链接"发生在"编译"之后,选择题常把两者顺序调换作为干扰项。

7.2 Python 的处理流程:解释器逐行执行 ​

Python 没有"编译生成 .exe"这一步:

 源程序                Python 解释器
 sum.py    ──────▶  逐行读取 → 逐行翻译 → 逐行执行  ──▶ 输出结果
(文本源代码)       (不生成独立的可执行文件)

补充:不生成独立的可执行文件;但 CPython 会生成 .pyc 字节码缓存以加速后续运行,二级了解即可。

同一个 sum.py 文件,拷到 Windows、macOS、Linux 上,只要装有 Python 解释器就能运行——这正是解释型语言跨平台性好的体现。


八、常见高级语言巡礼 ​

语言背景主要特点典型用途
C1972 年贝尔实验室,丹尼斯·里奇设计面向过程,贴近硬件,效率极高操作系统、嵌入式、单片机
C++在 C 的基础上发展而来,本贾尼设计兼容 C,支持面向对象,运行效率高信息学竞赛、游戏、系统软件 ⭐
Python1991 年吉多·范罗苏姆设计语法极简、接近自然语言,解释型,第三方库丰富人工智能、数据分析、自动化 ⭐
Java1995 年 Sun 公司推出完全面向对象,"一次编写,到处运行"企业级开发、安卓应用
C#微软公司推出面向对象,.NET 平台主力语言网站开发、Unity 游戏开发
Pascal/Delphi沃斯教授设计结构清晰、语法严谨,特别适合教学编程教学、早期信息学竞赛
Go2009 年 Google 推出语法简洁,原生支持并发云计算、网络服务、后端开发

九、C++ 与 Python 实操对比 ​

光说不练假把式。我们用一个二级最简单的程序——输入两个整数,输出它们的和——分别用 C++11 和 Python3 实现,直观感受两种语言的差异。

9.1 C++ 版本(编译型) ​

cpp
// 文件名:sum.cpp —— 求两个整数之和(C++11)
#include <iostream>        // 引入输入输出库,提供 cin、cout
using namespace std;

int main() {
    int a, b;              // ① 定义两个整型变量
    cin >> a >> b;         // ② 从键盘读入两个整数
    int sum = a + b;       // ③ 计算两数之和
    cout << sum << endl;   // ④ 输出结果并换行
    return 0;              // ⑤ 程序正常结束
}

在命令行中,需要先编译链接、再运行:

bash
g++ sum.cpp -o sum     # 编译 + 链接,生成可执行文件 sum(Windows 下为 sum.exe)
./sum                  # 运行可执行文件(Windows 下输入 sum)

9.2 Python 版本(解释型) ​

python
# 文件名:sum.py —— 求两个整数之和(Python3)
a = int(input())       # ① 读入一行文本,int() 将其转换成整数
b = int(input())       # ② 读入第二个整数
print(a + b)           # ③ 直接计算并输出两数之和

运行时无需编译,交给解释器逐行执行即可:

bash
python sum.py          # Python 解释器逐行翻译并执行,不生成 .exe

十、📝 实战练习 ​

练习题 1(编程题) ​

题目: 计算机唯一能够直接识别和执行的程序设计语言是( )

A. 高级语言 B. 汇编语言 C. 机器语言 D. Python 语言

🔑 点击查看答案与解析

答案: C

解析: 机器语言由二进制 0/1 代码组成,是计算机唯一能直接识别和执行的语言,执行速度也最快。汇编语言需要汇编器翻译,高级语言(含 Python)需要编译器或解释器翻译。选 C。


练习题 2(编程题) ​

题目: 下列关于程序设计语言的叙述,正确的是( )

A. 汇编语言使用助记符,因此它属于高级语言 B. 机器语言可读性最好,适合初学者学习 C. 高级语言编写的程序必须经过编译或解释才能被计算机执行 D. Python 程序运行速度通常比完成同样功能的 C++ 程序更快

🔑 点击查看答案与解析

答案: C

解析:

  • A 错误 ❌:汇编语言属于低级语言,使用助记符不改变它"面向机器"的本质。
  • B 错误 ❌:机器语言是满屏 0/1 的"天书",可读性最差。
  • C 正确 ✅:高级语言不能被直接执行,必须经过编译或解释翻译成机器语言。
  • D 错误 ❌:C++ 是编译型语言,整体编译后运行,速度通常快于解释型的 Python。

选 C。


练习题 3(单选题) ​

题目: 使用 C++ 编写的源程序,从编写完成到成功运行,正确的处理顺序是( )

A. 源程序 → 链接 → 编译 → 可执行程序 B. 源程序 → 编译 → 目标程序 → 链接 → 可执行程序 C. 源程序 → 解释器逐行解释 → 运行结果 D. 源程序 → 汇编器翻译 → 可执行程序

🔑 点击查看答案与解析

答案: B

解析: C++ 是编译型语言,处理流程为:源程序(.cpp)经过编译生成目标程序(.obj/.o),再经过链接把库函数组装进来,生成可执行程序(.exe)后运行。A 把编译和链接顺序弄反;C 是 Python 等解释型语言的方式;D 描述的是汇编语言。选 B。


练习题 4(判断题) ​

题目: Python 程序在运行前,必须先整体编译生成 .exe 可执行文件,然后才能执行。( )

🔑 点击查看答案与解析

答案: ×(错误)

解析: Python 是解释型语言,由解释器逐行翻译、逐行执行,不会生成独立的 .exe 可执行文件;"先整体编译生成可执行文件"是 C++ 等编译型语言的特征。


练习题 5(单选题) ​

题目: 下列关于编译型语言和解释型语言的说法,正确的是( )

A. 编译型语言由解释器逐行翻译执行,运行速度慢 B. 解释型语言在运行前会整体生成可执行文件 C. C++ 是编译型语言,Python 是解释型语言 D. 编译型语言跨平台性比解释型语言更好

🔑 点击查看答案与解析

答案: C

解析:

  • A 错误 ❌:说反了——编译型用编译器整体翻译,运行速度快;解释型才是解释器逐行执行;
  • B 错误 ❌:生成可执行文件是编译型的特征,解释型不生成独立可执行文件;
  • C 正确 ✅:C/C++、Pascal 是典型编译型;Python、JavaScript 是典型解释型;
  • D 错误 ❌:解释型语言跨平台性更好(只要装了解释器,同一份源码到处跑);编译型生成的 .exe 绑定平台,Windows 的程序不能直接在 Linux 上跑。

💡 生活比喻:编译型 = 把整本外文书翻译好再读(一次翻译,反复阅读快);解释型 = 现场同声传译(边说边翻,灵活但稍慢)。


练习题 6(单选题) ​

题目: 下列语言中,全部属于高级语言的一组是( )

A. 机器语言、C语言、Python B. 汇编语言、Java、C++ C. C++、Python、Java、Go D. 机器语言、汇编语言、高级语言

🔑 点击查看答案与解析

答案: C

解析:

程序设计语言按发展阶段分为三代:机器语言、汇编语言、高级语言。其中机器语言和汇编语言属于低级语言(面向机器),C、C++、Python、Java、C#、Pascal、Go 等都属于高级语言(面向问题、接近自然语言)。

  • A 中机器语言不是高级语言 ❌
  • B 中汇编语言不是高级语言 ❌
  • C 全部是高级语言 ✅
  • D 三类并列,不是"全部属于高级语言" ❌

🔥 高频考点:汇编语言是低级语言,不是高级语言——这是选择题中最经典的"陷阱项"。记住:助记符 ≠ 高级,只要还是"面向机器、一条指令对应一个机器操作",就属于低级语言。


练习题 7(判断题) ​

题目: 判断下列说法是否正确,正确的打 ✓,错误的打 ×。

① 计算机能直接执行高级语言编写的程序。( )

② 汇编语言使用助记符编写,不需要翻译就能被计算机执行。( )

③ 编译型语言的程序运行速度通常比解释型语言快。( )

④ C++ 源程序经过编译后直接生成可执行文件,不需要链接。( )

⑤ Python 程序可以跨平台运行,是因为它是解释型语言。( )

⑥ 高级语言的可移植性比低级语言好。( )

🔑 点击查看答案与解析

答案: ① × ② × ③ ✓ ④ × ⑤ ✓ ⑥ ✓

解析:

  • ① ×:计算机唯一能直接执行的只有机器语言(二进制 0/1)。高级语言必须经过编译或解释翻译成机器语言才能执行;
  • ② ×:汇编语言虽然用了助记符,但计算机并不认识 MOV、ADD 这些字母,必须通过汇编器翻译成机器语言;
  • ③ ✓:编译型语言整体翻译一次,运行时直接执行机器码;解释型每次运行都要逐行翻译,所以编译型通常更快;
  • ④ ×:C++ 的完整流程是编译 → 目标程序 → 链接 → 可执行程序。编译只生成 .obj 目标文件,还需要链接器把库函数组装进来才能生成 .exe;
  • ⑤ ✓:Python 源代码只要有解释器就能运行,不同平台只要装上对应版本的 Python 解释器即可,这就是解释型语言跨平台性好的体现;
  • ⑥ ✓:低级语言(机器/汇编)与硬件强相关,换 CPU 架构就失效;高级语言屏蔽硬件细节,可移植性好。

练习题 8(单选题) ​

题目: 关于 C++ 程序的开发过程,下列说法错误的是( )

A. 源程序文件的扩展名通常是 .cpp B. 编译的作用是检查语法错误并生成目标文件 C. 链接的作用是将目标文件与库函数组装成可执行程序 D. 可执行程序的扩展名在 Windows 下通常是 .obj

🔑 点击查看答案与解析

答案: D

解析:

  • A 正确 ✓:C++ 源文件通常保存为 .cpp(C Plus Plus 的缩写);
  • B 正确 ✓:编译器把源代码翻译成机器语言形式的目标文件(.obj),编译阶段会检查语法错误;
  • C 正确 ✓:链接器把目标文件和系统库函数(如 cout、cin 的实现)链接在一起,生成完整的可执行程序;
  • D 错误 ❌:Windows 下可执行程序的扩展名是 .exe(executable),.obj 是目标文件(中间产物,不能直接运行)。

🔥 记忆口诀:源 cpp → 编译 obj → 链接 exe → 运行出结果。三个文件格式、三个阶段,选择题经常考顺序和对应关系。


十一、📊 考点总结表 ​

考点重要程度出题形式高频易错点
机器语言的特征⭐⭐⭐⭐⭐选择/判断记不住"唯一能直接识别执行"
汇编语言与助记符、汇编器⭐⭐⭐⭐选择/判断误以为汇编语言是高级语言、可直接执行
高级语言的特征⭐⭐⭐⭐选择以为高级语言能被直接执行
低级 vs 高级语言对比⭐⭐⭐选择可读性、速度、可移植性张冠李戴
编译型 vs 解释型⭐⭐⭐⭐⭐选择/判断把 Python 当编译型;以为解释型无需翻译
C++ 处理流程(编译→链接)⭐⭐⭐⭐选择编译与链接顺序颠倒
常见高级语言与 GESP 语言选择⭐⭐⭐选择/判断不知道 GESP 支持 C++ 和 Python

⭐ 必背速记卡 ​

┌─────────────────────────────────────────────────────┐
│  1. 语言分三代:机器语言、汇编语言、高级语言            │
│  2. 机器语言是唯一能被计算机直接执行的语言              │
│  3. 机器语言=二进制0/1,最快最难读,可移植最差         │
│  4. 汇编语言=助记符(MOV/ADD),需汇编器翻译           │
│  5. 机器语言和汇编语言都是低级语言(面向机器)          │
│  6. 高级语言接近自然语言,需编译或解释,可移植好        │
│  7. 编译型:编译器整体翻译,生成.exe,运行快           │
│  8. 解释型:解释器逐行执行,不生成exe,跨平台好         │
│  9. C++/C/Pascal 是编译型,Python 是解释型             │
│ 10. C++处理流程:编辑→编译→链接→运行                  │
│ 11. 源文件.cpp → 目标文件.obj → 可执行文件.exe         │
│ 12. 编译检查语法错误,链接组装库函数                    │
│ 13. 常见高级语言:C、C++、Python、Java、C#、Go        │
│ 14. C++兼容C,支持面向对象,是信息学竞赛主力语言        │
│ 15. 低级靠机器,快但难迁移;高级像人话,好写要翻译      │
└─────────────────────────────────────────────────────┘

百炼成钢,融会贯通