来源:python中国网 时间:2020-03-07

  编译器和解释器的区别其实编译型语言和解释型语言的区别,我们到处可见相关的言论,网上不乏学识渊博之人但有时候解释不够透彻,解释不到关键的点。本文参考其他文章把不够透彻的地方补充下。

  概括:CPU最终只能执行二进制指令,视觉上人类可读的编程语言最终都会变成CPU可执行的二进制指令,编译器和解释器的区别体现在人类可读的编程语言变成二进制指令的过程。

  编译类语言

  源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)

  前面的步骤是靠人来做的,最后拿到可执行程序可以在相同的CPU和系统下随便发给人用,不用去装什么乱七八糟的环境。每个CPU都有自己的指令集,每个系统都有自己的库文件,如果在不同CPU的机器或系统上运行源代码,就需要针对不同的CPU和操作系统进行编译使之变成该平台能运行的指令!

  你可以想象你是万能编译器,精通各国语言,一段中文你可以把他变成英文交给英国人(英国CPU)执行,如果是法国人(法国CPU)你就把他变成发问让法国佬执行。

  编译型语言要运行就得先编译成可执行的程序,从这个角度来看,编译型语言不适合跨平台,因为A平台上的可执行程序拿到B平台不一定能用。如果某平台有自己对于该语言的编译器那么就可以将源代码编译运行。

  解释性语言

  源代码 (source code) → 解释器 (interpreter)

  解释性语言要运行,解释器会读取一句源代码之后进行词法分析和语法分析,再将源代码转换为解释器能够执行的中间代码(字节码),最后,由解释器将中间代码解释为可执行的机器指令,这个过程给人的感觉是“源代码本身就是可执行程序一样”。因为只需编写好源代码,其他的就不管了!背后的事情解释器给你干了。

  在当前的计算机世界里,解释型语言在不同的平台有不同的解释器,windows上可以安装python.exe,linux上可以安装python,同一份py文件,拿到windows上或者linux上都可以运行。

  从上面2点看,所谓的解释性语言是跨平台必须有个前提就是把你得把源代码本身当做“可执行程序”,在这个认知的前提下,进而每个平台有自己的解释器,该解释器把源代码解释执行!这样说解释性语言跨平台才顺理成章

  写解释型语言的程序,开发人员不用考虑每个平台如何编译,只需要关注代码的编写,编写完的代码在任何平台都能无需修改(或少量修改:python的fork函数在windows上不能用)就能正确执行。

  编译器和解释器的区别大家知道了吧。