为什么与编程语言相比,脚本语言更喜欢纯解释。我的意思是为什么脚本语言程序并没有转换成机器语言然后执行。根据我所读到的内容,其中一个原因是速度,出于脚本目的,速度并不那么重要,因为解释速度较慢,所以对脚本语言来说无关紧要。在脚本编写中使用解释还有更多的理由吗?
您的一些假设是不正确的。
然而,选择解释而不是编译(对机器代码)的正常原因是:
-
实现一个解释器更容易(工作量更小)
-
口译员更容易移植到多个平台,
-
编译到本机代码需要时间,这可能会减慢开发周期和/或导致JIT编译情况下应用程序启动时间过长1。
1-后者很复杂,很难进行公正的比较。另一方面,在缓慢启动后,JIT编译的程序运行得比解释的代码快得多,可能比静态编译的代码快
脚本,尤其是交互式脚本(命令shell等),通常用于只运行一次的代码,在这种情况下,延迟比其他任何事情都重要。JIT在这种情况下没有任何用处。您会期望REPL立即给出反馈,而在执行命令之前等待每个命令编译是不合理的。
因此,与适当的重量级编译相比,特别的解释或者更好的是,非常轻量级的编译(例如,编译到高级VM,然后对其进行解释)更可取。