计算机软件
两类软件
- 系统软件:管理计算机系统的硬件资源,向上层应用程序提供服务
- 如:操作系统、网络服务程序、语言处理程序、数据库管理系统、程序设计语言、分布式软件系统
- 数据库系统不是系统软件
- 应用软件:按应用场景需要编制成的各种程序,直接为用户提供服务
- 办公软件、多媒体软件、辅助设计软件、企业应用软件、网络应用软件、安全防范软件、娱乐休闲软件
三种级别的语言
- 机器语言: 计算机硬件能够直接理解和执行的二进制指令序列,是最低级的语言,与特定机器的 CPU 架构紧密相关。
- 汇编语言: 使用助记符(如 ADD, MOV)表示机器指令的低级语言,比机器语言更易读,但仍需汇编程序翻译为机器语言,且通常与特定机器架构相关。
- 高级语言: 接近自然语言和数学表达式的编程语言,具有良好的可读性、可移植性和抽象性,例如 C/C++、Java、Python。
各种翻译程序的概念
- 汇编程序(汇编器): 将汇编语言源程序翻译成机器语言目标程序。
- 解释程序(解释器): 对源程序逐条语句进行分析并立即执行,不生成独立的目标代码,如 Python、JavaScript 的执行方式。
- 编译程序(编译器): 将高级语言源程序一次性翻译成目标语言(通常是机器语言或中间代码),然后链接生成可执行文件,如 C/C++ 程序的编译。
将高级语言源程序转为可执行目标文件的流程

- 预处理: 处理源代码中的预处理指令(如
#include、#define),进行宏替换、头文件包含等操作,生成.i文件。 - 编译: 将预处理后的
.i文件翻译成汇编语言文件(.s文件),这一阶段进行词法分析、语法分析、语义分析和优化。 - 汇编: 将汇编语言文件(
.s文件)翻译成机器语言的目标文件(.o文件或.obj文件),其中包含机器指令和数据。 - 链接: 将多个目标文件(
.o文件)以及所需的库文件(静态库或动态库)组合起来,解析符号引用,最终生成可执行文件。
软件和硬件的逻辑功能等价性
同一个功能,既可以用硬件实现(性能高成本高),也可以用软件实现(性能低成本也低)

- 对于乘法运算,可以设计一个专门的硬件电路实现乘法运算
- 也可以用软件的方式,执行多次加法运算来实现