计算机软件

两类软件

  • 系统软件:管理计算机系统的硬件资源,向上层应用程序提供服务
    • 如:操作系统、网络服务程序、语言处理程序、数据库管理系统、程序设计语言、分布式软件系统
    • 数据库系统不是系统软件
  • 应用软件:按应用场景需要编制成的各种程序,直接为用户提供服务
    • 办公软件、多媒体软件、辅助设计软件、企业应用软件、网络应用软件、安全防范软件、娱乐休闲软件

三种级别的语言

  • 机器语言: 计算机硬件能够直接理解和执行的二进制指令序列,是最低级的语言,与特定机器的 CPU 架构紧密相关。
  • 汇编语言: 使用助记符(如 ADD, MOV)表示机器指令的低级语言,比机器语言更易读,但仍需汇编程序翻译为机器语言,且通常与特定机器架构相关。
  • 高级语言: 接近自然语言和数学表达式的编程语言,具有良好的可读性、可移植性和抽象性,例如 C/C++、Java、Python。

各种翻译程序的概念

  1. 汇编程序(汇编器): 将汇编语言源程序翻译成机器语言目标程序。
  2. 解释程序(解释器): 对源程序逐条语句进行分析并立即执行,不生成独立的目标代码,如 Python、JavaScript 的执行方式。
  3. 编译程序(编译器): 将高级语言源程序一次性翻译成目标语言(通常是机器语言或中间代码),然后链接生成可执行文件,如 C/C++ 程序的编译。

将高级语言源程序转为可执行目标文件的流程

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

软件和硬件的逻辑功能等价性

同一个功能,既可以用硬件实现(性能高成本高),也可以用软件实现(性能低成本也低)

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