hy1231

编译器工作图:

源代码被编译成机器码,在CPU上运行。

而解释器的工作图:

用解释器很方便,只需要直接“运行”就好了,不用像C那样有编译链接的工序。

为什么说这些语言是跨平台的?因为你写了程序以后,如果这个平台上有这种语言的解释器,只需要拿到这个平台上直接运行就可以了。你可以理解为:解释器是在“一边编译,一边运行”,它只是把以前程序员手工做的编译过程放在了运行程序的时候进行。

为什么我们一般说解释器的效率比较低?你也可以想象的是,一段程序在解释器中运行时可能会被编译多次,因为每次运行到这段程序时,都会重新编译一次,这样的开销是很大的。

所以诞生了Java,C#这样的预编译语言:

在运行之前,需要手动把源代码编译成中间代码(Java里叫字节码),然后在解释器中执行。
这种架构避免了上面纯解释器中编译源代码的开销,所以相对会有效率一些。

但是,其实画在纯解释器中的Python,Perl,PHP可能都不会是真的纯解释执行的,这样实在是太没有效率。Python在运行时会生 成pyc的二进制临时文件,看起来很像是预编译的结果。只有JavaScript这种真的不会写得太长的语言才会采用纯解释的运行方式。

分类:

技术点:

相关文章:

  • 2021-11-20
  • 2021-12-12
  • 2021-11-20
  • 2021-12-19
  • 2021-11-20
  • 2021-11-20
  • 2021-10-04
  • 2021-12-02
猜你喜欢
  • 2021-11-20
  • 2021-11-20
  • 2021-11-20
  • 2021-11-20
  • 2021-06-26
  • 2021-11-21
相关资源
相似解决方案