python解释器把python代码一次性翻译成目标代码_Java和Python都需要把代码编译成字节码,为什么Python算解释型语言而Java不算呢?...

编程语言和我们制造的物理机器都是图灵机。 python是两层图灵机,而java是三层图灵机。

数学家证明图灵机是可以运行在图灵机上的。

Python > 翻译 > 物理机器

java > 翻译 > jvm虚拟机 > 翻译 > 物理机器

如果是两层图灵机,中间的翻译这个步骤,按照正常考虑,要么一次性全翻译好,扔到物理机器上运行,这就是可执行文件,像exe之流。要么从一个语言翻译一句,然后扔到另一个机器上执行一句,或者翻译一段,执行一段,这是解释器。

一次性翻译的这种情况,翻译过后,产出一个结果,这个翻译的中间人就不需要了。

而逐句翻译的,这个中间人需要一直运行。

看java到jvm这前半段来,和Python一样,关键在于这个jvm,它也是个图灵机,jvm造了一堆指令集,实现了图灵完备。jvm到物理机器也需要翻译。最后,jvm把前后翻译的功能都集中在了jvm里。

对比python和java中间翻译过程,可以看出jvm比python解释器多了指令集及指令集到物理机器的翻译过程,仅此而已。但是由于功能都集中到了jvm里,看起来和解释器好像没什么区别。

如果我们将两端的图灵机的中间部分只是看成一个翻译的过程,jvm和python解释器好像确实也没什么本质的区别。图灵机就是俄罗斯套娃!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值