2015-05-09 96 views
2

是否解释所有脚本语言?我还没有遇到过编译+脚本语言。以下语言都是解释型和脚本语言。解释型语言和脚本语言之间有什么联系。是否解释所有脚本语言?

e.g的JavaScript,Python和Perl的

怎么样的反向?

回答

2

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

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

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