文章目录
一、 解释型语言 和 编译型语言1、计算机程序本质2、编译器 和 解释器3、编译器 分析4、解释器 分析
一、 解释型语言 和 编译型语言
1、计算机程序本质
计算机 的 程序 是在 CPU 上执行的 , CPU 上执行的只有匹配该 CPU 的机器码指令 , 不同类型的 CPU 执行的 机器码指令 格式不同 , X86 和 ARM 执行的 机器码 指令格式是不同的 ;
机器码指令 是 二进制的 , 所有在 计算机 上执行的程序 , 都是 若干 二进制机器码 的集合 ;
计算机 只能执行 二进制机器语言 , 所有的语言 都要 转为 机器语言 才能在 计算机中执行 , 如 : 汇编语言 / C / C++ / Python / Kotlin / Java / JavaScript 等语言 ;
2、编译器 和 解释器
将 程序代码 转为 机器码 的 工具 , 称为 " 翻译器 " , 翻译器 翻译 代码 的方式有两种 : 编译 和 解释 ;
编译器 : 在 程序执行之前 就将 代码 编译成 机器码 ;一次性将所有代码 编译成 机器码 ;编译器 可以理解为 , 做饭时 先把所有的饭都做好 , 然后一次性端上桌 ; 解释器 : 在 程序执行过程中 , 解释一行代码 , 将其翻译成 机器码 , 然后执行 , 然后再解释下一行代码 ;每次将一行代码 翻译成 机器码 ;解释器 可以 理解为 涮火锅 , 一边涮 , 一边吃 ;3、编译器 分析
编译型语言 在 程序执行 之前 , 需要 将 程序源代码 一次性 编译 成 机器码 , 并将其包装成 特定平台 所能识别 的 可执行性程序的格式 , 这个过程就是 编译过程 ;
这个特定平台指的是 Windows 或 Linux 操作系统 , x86 / arm / mips 不同的 CPU 架构 , 32 位 / 64 位 不同的内存寻址位数 , 如 : 我要编译一个在 x86 平台的 64 位 Windows 程序 , 这个程序只能在 CPU 是 Intel 并且 装有 64 位 Windows 程序 的电脑上运行 ;
这类程序只需编译一次 , 在之后运行时不需要再次编译 , 这类程序执行效率高 ;
编译型语言 与 特定平台相关 , 无法移植 到其他平台 , 如果要在 编译之后需要修改 , 需要整个模块重新编译 ;
编译器 在 程序执行之前 就将 代码 编译成 机器码 , 一次性将所有代码 编译成 机器码 ;
C 语言 的 编译器 是 GCC ;C++ 语言 的 编译器 是 G++ ;4、解释器 分析
解释型语言 不需要 预先 将 程序源代码 编译成 机器码 , 而是在运行时 逐行解释并执行源代码 , 解释型语言 只要有相应的 解释器 , 就可以在任何平台上运行源代码 , 因此解释型语言 的 移植性 很好 ;
解释器 是在 程序执行过程中 , 解释一行代码 , 将其翻译成 机器码 , 然后执行 , 然后再解释下一行代码 ;
以 JavaScript 程序为例 , JavaScript 引擎 就是 解释器 , 一次将一行 JavaScript 代码转为 机器码 , 然后在 浏览器 中执行 , 执行完毕后 , 再 解释 下一行 JavaScript 代码 ;