JAVA是编译型的语言

来源:互联网 发布:淘宝gxg官方店特别便宜 编辑:程序博客网 时间:2024/06/06 04:08

(Ref: 《Programming Language Pragmatics 3rd Edition》 Page19)


如图, 从上至下分别是编译型语言,解释型语言,Java的执行模型。

看上去陷入了一个困境,Java到底是编译型语言呢,还是解释型语言呢?

一种朴素的判定方式:

如果翻译器部分较为简单,我们说这个语言是“解释的”,反之如果翻译器部分很复杂,我们就说这个语言是“编译的”。“”

事实上这两者之间的界限是模糊的,因为“简单”和“复杂”都具有主观性。“解释型”和“编译型”并不是一个清晰的描述。故强行将某种具有混合形式的语言划入两者之一是不当的。

但实践中肯定还是有进行分类的需求的,所以这里有一条启发性原则用以判断语言的类型:

如果翻译器对程序进行了彻底的分析而非某种机械的变换,而且生成的中间程序与源程序之间没有很强的相似性,我们就认为这个语言是编译的。彻底的分析和非平凡的变换,是编译方式的标志性特征。

因此,Java应当被认作一种编译型语言。


——《PLP》1.4 Compilation and Interpretation



作者:冯若航
链接:https://www.zhihu.com/question/19608553/answer/34834354
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。