JAVA是编译型的语言

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


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

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

一种朴素的判定方式:

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

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

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

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

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


——《PLP》1.4 Compilation and Interpretation



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值