JIT编译器是编译器还是解释器?

时间:2011-02-22 04:53:37

标签: c# .net compiler-construction interpreter jit

我的问题是将IL转换为Machine语言的JIT编译器是完全是编译器还是解释器。

还有一个问题: HTML,JavaScript是编译语言还是解释语言?

先谢谢

7 个答案:

答案 0 :(得分:11)

JIT(及时)编译器是一个编译器。它进行优化以及编译到机器代码。 (甚至称为编译器)

HTML,Javascript被解释,它们被Web浏览器按原样读取,并以最小的错误修复和优化运行。

答案 1 :(得分:8)

从技术上讲,编译器会将一种语言翻译成另一种语言。由于JIT编译器接收IL作为其输入并输出本机二进制文件,因此它很容易符合此条件,应称为编译器。

关于Javascript,在这里做出区分更加困难。如果你想要迂腐,就没有“编译语言”或“解释语言”这样的东西。我的意思是,在实践中,大多数语言都有一种运行它们的常用方法,如果是解释器,它们通常称为解释语言,但解释或编译(通常)不是语言本身的特征。 Python几乎被普遍认为是解释的,但是可以编写一个将其编译为本机二进制代码的编译器;它仍然应该得到“解释”的形容词吗?

现在得到实际的答案:Javascript通常是 由解释器运行,除其他外,它使用JIT编译器本身。那是解释或编译的吗?你的电话。

答案 2 :(得分:6)

来自Wiki的just-in-time compiler(JIT),也称为动态转换器,用于提高计算机程序的运行时性能。

Just-in-time compilation是非本机代码(例如字节码)在执行之前转换为本机代码。JIT compiler是编译IL代码并输出本机代码的人。缓存,解释器将逐行执行的地方,
即在java的情况下,类文件是解释器的输入。

更多关于JIT的信息:

是的,HTML,JavaScript是解释型语言,因为它们不会编译为任何代码。这意味着脚本无需初步编译即可执行。

对JavaScript / HTML的好读here不是编译语言。

答案 3 :(得分:2)

IL等JIT处理器主要是编译器。 JavaScript处理器大多是解释器。我理解你对这个问题的好奇心,但就我个人而言,我认为确实没有任何'正确'的回答。

出于效率原因,有JavaScript解释器可以编译部分或全部代码。那些真的是口译吗?

JIT在运行时运行,因此可以理解为一个聪明,高度优化的解释器。这是什么?

就像“它是植物”或“它是动物”的问题。有些东西不太适合任何一种模式:自然就是自然界,事物的“分类”纯粹是人类的智力,有其局限性。甚至像“代码”这样的人造物也会受到同样的考虑。

确定;所以也许有一个正确的答案:

JavaScript的处理方式(比如,截至5年前)被称为“解释器”。处理C ++的方式被认为是“编译器”。

IL的处理方式只是...... 'JIT'

答案 4 :(得分:1)

CLI(.Net字节码)具有本机CPU中没有的功能,因此JIT最明确地是编译器。与此处所写的相反,大多数优化已经完成。

答案 5 :(得分:1)

HTML不是编程语言,因此很难说它是编译还是解释...如果“如果编译的结果被重用”,HTML就不会被任何浏览器编译(它会在任何时间页面被解析) renderd)。

解释旧版浏览器中的JavaScript(预处理为中间表示,但不是机器代码)。最新版本的浏览器具有JavaScript JIT编译器 - 因此现在很难定义它是否是解释或编译语言。

答案 6 :(得分:0)

JIT(及时)编译器只是编译器而不是解释器,因为JIT编译器在运行时编译或转换某些字节码到本机机器代码以获得高性能,但它没有执行说明。

然而,解释器在运行时读取并执行指令。

HTML和Javascript被解释,它直接由浏览器执行而无需编译。