Appearance
第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 送入寄存器 AL2.2 机器语言的特点
- ✅ 执行速度最快:CPU 拿到就能直接跑,不需要任何翻译
- ✅ 与硬件"零距离",能最充分地发挥硬件性能
- ❌ 可读性最差:满屏 0/1,人几乎无法阅读和调试
- ❌ 编写难度极大:程序员要记住所有二进制编码,极易出错
- ❌ 可移植性差:不同 CPU(如 x86、ARM)的机器语言各不相同,换台电脑就失效
高频考点 🔥: "计算机唯一能直接识别和执行的语言是 机器语言"——这句话几乎年年出现在选择题或判断题中。记住三个"最":执行速度最快、可读性最差、编写难度最大。
易错点 ⚠️: 不要看到"二进制"就以为高级语言程序也是机器语言。我们写的
.cpp、.py文件里虽然最终都变成 0/1 存储,但它们是文本形式的源程序,必须经过翻译才能执行;机器语言特指那些直接给 CPU 执行的二进制指令。
三、汇编语言:助记符的第一次飞跃
3.1 什么是汇编语言
为了摆脱记忆 0/1 的痛苦,人们用一些简短的英文单词(助记符)来代替二进制指令,这就是汇编语言(Assembly Language)。例如:
| 助记符 | 含义 | 对应的机器操作 |
|---|---|---|
MOV | Move,传送 | 把数据从一个位置复制到另一个位置 |
ADD | Add,加法 | 两个数相加 |
SUB | Subtract,减法 | 两个数相减 |
JMP | Jump,跳转 | 跳到指定指令继续执行 |
同样是"把 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) 可直接执行)- 编辑:写出 C++ 源程序,保存为
.cpp文件; - 编译(Compile):编译器把源程序翻译成机器语言形式的目标程序(
.obj/.o),这一步会检查语法错误; - 链接(Link):链接器把目标程序与系统库函数(如
cout、cin的实现)组装在一起,生成完整的可执行程序(.exe); - 运行:执行可执行文件得到结果。
补充:标准的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 解释器就能运行——这正是解释型语言跨平台性好的体现。
八、常见高级语言巡礼
| 语言 | 背景 | 主要特点 | 典型用途 |
|---|---|---|---|
| C | 1972 年贝尔实验室,丹尼斯·里奇设计 | 面向过程,贴近硬件,效率极高 | 操作系统、嵌入式、单片机 |
| C++ | 在 C 的基础上发展而来,本贾尼设计 | 兼容 C,支持面向对象,运行效率高 | 信息学竞赛、游戏、系统软件 ⭐ |
| Python | 1991 年吉多·范罗苏姆设计 | 语法极简、接近自然语言,解释型,第三方库丰富 | 人工智能、数据分析、自动化 ⭐ |
| Java | 1995 年 Sun 公司推出 | 完全面向对象,"一次编写,到处运行" | 企业级开发、安卓应用 |
| C# | 微软公司推出 | 面向对象,.NET 平台主力语言 | 网站开发、Unity 游戏开发 |
| Pascal/Delphi | 沃斯教授设计 | 结构清晰、语法严谨,特别适合教学 | 编程教学、早期信息学竞赛 |
| Go | 2009 年 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. 低级靠机器,快但难迁移;高级像人话,好写要翻译 │
└─────────────────────────────────────────────────────┘