《编译原理》笔记 第一讲 引论

46 阅读2分钟

主要内容:编译程序概述

一、什么是编译程序

  1. 高级语言翻译为低级语言(汇编、机器语言)。
  2. 编译程序(在宿主机)经过“翻译”动作将“源代码程序”整体转变成“目标语言程序”(在目标机)后再执行。
  3. 编译程序分类:诊断/优化/交叉/可变目标编译程序;其中交叉是指宿主机和目标机不同。
  4. 对比:“解释程序”,边读取边解释执行,一般不生成目标代码。

二、为什么学习编译原理

  1. 理解计算系统(比计算机更广泛的概念)在各学科的应用。
  2. 具备设计计算系统能力。
  3. 训练计算思维(Computational Thinking):利用计算机科学基础概念去求解问题。
  4. 理解高级语言
  5. 运用编译原理和方法构造实用工具

编译与计算思维:

  1. 抽象

    • 提取共性、忽略非本质内容、忽略个体细节部分
    • 毕加索画牛(抽象派)
    • 实例:比如化学分子式、物理抽象
    • 图灵机(纸带、读写头、状态寄存器、控制读写头工作的规则)
    • 可计算 == 图灵可计算
    • 有限自动机、形式文法...
  2. 自动化:抽象思维结果在计算机上实现,分析表+控制程序

  3. 分解

    • 分析问题,全局决策解法
    • 分解问题,降低解决难度
    • 例子:引入中间语言(源代码和目标语言之间)、编译分为多个阶段、CI/CD流水线
  4. 递归:问题和子问题求解过程类似

  5. 权衡:理论 vs 可实现等,具体问题分析 ROI

  6. 编译原理和方法的运用

    • html/xml 分析
    • 语言处理软件:单词纠错、语法检查、自动翻译等
    • 搜索引擎
    • shell 解释器、协议解析等