编译型-解释型语言的区别

编译型语言和解释型语言在代码执行过程中确实存在一些区别,包括源代码到指令的转换方式和中间步骤的差异。

编译型语言

  1. 预处理器(Preprocessing):在源代码被编译之前,预处理器会对源代码进行处理,如宏展开、头文件包含等。
  2. 编译器(Compiler):编译器会将预处理后的源代码转换为目标代码,通常是汇编语言或机器指令的形式,生成一个可执行文件。
  3. 链接器(Linker):链接器会将目标代码和库文件进行链接,生成最终的可执行文件。

解释型语言(如PHP)

  1. 词法分析(Lexical Analysis):源代码会被词法分析器解析,将其切割为多个字符串单元,也就是Token。
  2. 语法分析(Syntax Analysis):词法分析得到的Token会被语法分析器根据语法规则转换成抽象语法树(AST)。
  3. 生成opcode(Opcode Generation):抽象语法树会被进一步处理,转换为一系列的机器指令,称为opcode。
  4. 执行opcode:生成的opcode会被解释器逐条执行,将其翻译成底层的机器指令,由计算机执行。

主要区别

  1. 编译型语言在编译阶段将源代码转换为机器码,生成可执行文件。而解释型语言在执行阶段逐行解释和执行源代码。
  2. 编译型语言一般具有更高的执行效率,因为它直接将代码转换为机器码,避免了解释和翻译的开销。解释型语言则更加灵活,可以动态解释和执行代码。
  3. 编译型语言的可执行文件可以在不同的机器上直接运行,而解释型语言需要在每次执行时进行解释和执行。
  4. 编译型语言通常需要显式的编译过程,并且生成的可执行文件可以在后续多次执行。而解释型语言可以直接执行源代码,无需显式编译步骤。
posted @ 2019-03-29 17:56  GJH-  阅读(431)  评论(0)    收藏  举报