Compiler construction 即时编译和动态编译的区别是什么?

Compiler construction 即时编译和动态编译的区别是什么?,compiler-construction,jit,dynamic-compilation,Compiler Construction,Jit,Dynamic Compilation,wikipedia特别指出,“JIT编译是动态编译的一种形式,[…]”。但这两个术语不是简单的同义词吗?这两者的区别是什么 是否有一些动态编译的例子不是JIT编译?或者如果做不到这一点,是否存在术语“动态编译”比“JIT编译”更合适的情况 这两个术语似乎都指在运行时执行编译。这两个术语似乎都是从源代码和字节码编译来描述的。这两个术语似乎都涵盖了运行时优化 我个人的印象是,JIT编译是一个非常流行的术语,因为javavm中的动态编译就是这样称呼的。这个概念越来越流行,其他程序运行时开始复制它,并以

wikipedia特别指出,“JIT编译是动态编译的一种形式,[…]”。但这两个术语不是简单的同义词吗?这两者的区别是什么

是否有一些动态编译的例子不是JIT编译?或者如果做不到这一点,是否存在术语“动态编译”比“JIT编译”更合适的情况

这两个术语似乎都指在运行时执行编译。这两个术语似乎都是从源代码和字节码编译来描述的。这两个术语似乎都涵盖了运行时优化


我个人的印象是,JIT编译是一个非常流行的术语,因为javavm中的动态编译就是这样称呼的。这个概念越来越流行,其他程序运行时开始复制它,并以相同的名称称之为JIT编译。动态编译似乎是一个早于这一发展的术语,并且大多数出现在较旧的科学出版物中。

诚然,维基百科令人困惑。首先它说:

即时(JIT)编译,也称为动态翻译

然后它说:

JIT编译是动态编译的一种形式,允许自适应编译 优化,如动态重新编译

这也表明动态翻译也是动态编译的一种形式,这没有多大意义

术语动态编译是指1995年之前在运行时编译代码的一系列技术的标准术语,也是唯一的术语。例如,查看1985年的一篇文章,它讨论了Prolog的动态编译。许多1995年以前的论文都很容易找到使用这个术语的文章

然而,Java编程语言是在1995年左右发布的,Java文档是第一个使用术语JIT编译或JIT编译器的。我能找到的最早的此类文档是,尽管第一个JavaJIT编译器是在1996年开发的。我看到很多在这个时间范围内发表的论文都交替使用了这两个术语


我还记得我读过的一些论文认为JIT编译是动态编译的一种。

< P>无可否认,维基百科很混乱。首先它说:

即时(JIT)编译,也称为动态翻译

然后它说:

JIT编译是动态编译的一种形式,允许自适应编译 优化,如动态重新编译

这也表明动态翻译也是动态编译的一种形式,这没有多大意义

术语动态编译是指1995年之前在运行时编译代码的一系列技术的标准术语,也是唯一的术语。例如,查看1985年的一篇文章,它讨论了Prolog的动态编译。许多1995年以前的论文都很容易找到使用这个术语的文章

然而,Java编程语言是在1995年左右发布的,Java文档是第一个使用术语JIT编译或JIT编译器的。我能找到的最早的此类文档是,尽管第一个JavaJIT编译器是在1996年开发的。我看到很多在这个时间范围内发表的论文都交替使用了这两个术语

我还记得我读过的一些论文认为JIT编译是一种动态编译。