yangsirgo / softwareTest

软件设计师考试
6 stars 2 forks source link

编译与解释 #12

Closed yangsirgo closed 3 years ago

yangsirgo commented 4 years ago
  1. 解释程序,也称为解释器;直接解释执行源程序,或者将源程序翻译成某种中间代码再加以执行。(边处理源文件变执行,像是吃火锅)

  2. 编辑程序,也称编译器;将源程序翻译成目标语言程序,然后在计算机上运行目标程序。(把源文件处理一遍生成一个目标文件。准备好一桌子菜,在开吃)

  3. 两者根本的区别:

    • 编译方式下,机器上运行与源程序等价的目标程序,源程序和编译程序都不参与目标程序的执行过程,执行效率很高
    • 解释方式下,解释程序和源程序要参与程序的运行过程中,运行程序的控制权在解释程序(不生成目标程序),边解释边成型,执行效率低。
  4. 编译过程:

    • 词法分析阶段:词法错误:非法字符,关键字或标识拼写错误。
    • 语法分析阶段:语法错误:词连起来的语法是否正确,语法结构出错,比如for 循环不按规定的语法写,少个i啥的,
    • 语义分析阶段:while 死循环问题,是否有除0 的操作。只能分析出一部分问题,有些语义错误无法通过机械的方法找出问题。
    • 中间代码生成:Java 会生成中间代码,并在专用的虚拟机上运行,可以屏蔽硬件的差异,从而可以实现跨平台。
    • 目标代码生成:编译器工作的最后一个阶段。中间代码转低级语言代码,需要考虑硬件系统结构。 3333