3

所有脚本语言都被解释了吗?我还没有遇到编译+脚本语言。以下语言既是解释语言又是脚本语言。解释语言和脚本语言之间有什么联系。

例如 JavaScript、python、perl

反过来呢?

4

1 回答 1

5

根据定义,脚本语言没有单独的编译阶段。脚本语言总是需要其解释器的副本才能运行,而编译语言不需要编译器来执行生成的二进制文件。例如,在 C 语言中,我们将首先编译为本机可执行文件,然后运行该可执行文件。在脚本语言中,我们将脚本作为文本文件输入并立即执行。

如何做到这一点是另一个问题。大多数脚本语言都是从纯粹的解释实现开始的。不可避免地,有用的都获得了利用即时(JIT)编译速度的实现。不同之处在于,此 JIT 在脚本运行期间完成,从不产生单独的输出。脚本仍然是人类可读的文本文件,需要一些解释器才能运行。

有一些有趣的语言“在边界上”的例子。Haskell 通常被编译成独立的二进制文件,但也可以作为脚本运行(至少 GHC 实现可以这样做)。Java 编译成二进制文件,但不是独立的可执行文件。必须存在 Java 运行时才能运行 Java 文件。

于 2015-05-16T20:47:48.917 回答