关于翻译:脚本语言的解释

Interpretation in scripting languages

为什么脚本语言比编程语言更喜欢纯解释?我的意思是,为什么脚本语言程序没有转换成机器语言,然后执行。从我读到的内容来看,其中一个原因是速度,对于脚本来说,速度并不重要,因为解释速度较慢,所以对脚本语言来说并不重要。在脚本中使用解释还有更多的原因吗?


你的一些假设是错误的。

然而,选择口译而不是编译(机器代码)的正常原因是:

  • 更容易(更省力)实现一个解释程序,

  • 译员更容易移植到多个平台,

  • 编译到本机代码需要时间,这会减慢开发周期和/或导致JIT编译案例1中的应用程序启动时间更长。

1-后者很复杂,很难进行双手比较。另一方面,在缓慢启动之后,JIT编译的程序比解释的代码运行得快得多,而且可能比静态编译的代码运行得快。


脚本,尤其是交互式脚本(命令shell等)最常用于只运行一次的代码,在这种情况下,延迟比其他任何事情都重要。在这种情况下,JIT没有任何用处。您可能会立即收到repl的反馈,并且在执行之前等待每个命令编译,这是非常不合理的。

因此,与适当的重量级编译相比,特别的解释或更好的是非常轻量的编译(例如编译到高级别的VM,然后进行解释)。