编译和解释语言的相对优缺点是什么?
最佳答案
两种方法都没有明显的优势-如果一种方法总是更好,那么我们很可能会在任何地方开始使用它!
一般来说,编译器具有以下优点:
一般来说,编译器具有以下缺点:
一般来说,口译员具有以下优点:
一般来说,口译员有以下缺点:
因为解释器和编译器具有互补的优势和劣势,所以语言运行时结合两者的元素变得越来越普遍。 Java的JVM是一个很好的例子-Java代码本身是经过编译的,并在最初进行了解释。然后,JVM可以查找已运行很多次的代码并将其直接编译为机器代码,这意味着“热”代码获得了编译的好处,而“冷”代码则没有。 JVM还可以执行许多动态优化,例如内联缓存,以编译器通常不采用的方式提高性能。
许多现代的JavaScript实现都使用类似的技巧。大多数JavaScript代码都很简短,并不能做很多事情,因此它们通常从解释器开始。但是,如果很明显代码在重复运行,那么许多JS引擎将编译该代码(或至少编译一部分代码),并使用标准技术对其进行优化。最终结果是代码启动速度快(对于快速加载网页很有用),但是运行的越多代码速度就越快。
最后一个细节是不对语言进行编译或解释。通常,C代码是经过编译的,但是有可用的C解释器使调试或可视化正在运行的代码变得更容易(它们经常在入门编程类中使用,或者至少在以前是使用。)在某些JS引擎开始编译它之前,它被认为是一种解释语言。一些Python实现纯粹是解释器,但是您可以获取生成本机代码的Python编译器。现在,某些语言比其他语言更容易编译或解释,但是没有什么阻止您为任何特定编程语言制作编译器或解释器。有一个称为Futamura projections的理论结果表明,例如,任何可以解释的内容都可以编译。
关于compilation - 编译语言和解释语言之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38491212/