微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java“虚拟机”与Python“解释器”的用语?

如何解决Java“虚拟机”与Python“解释器”的用语?

虚拟机是一种虚拟计算环境,具有一组特定的原子定义良好的指令,这些指令独立于任何特定语言而受支持,通常将其视为自身的沙箱。VM与特定cpu的指令集相似,并且趋向于在更基本的层次上使用与下一条指令无关的此类指令(或字节码)的非常基本的构建块。指令仅基于虚拟机的当前状态确定性地执行,而不依赖于该时间点上指令流中其他位置的信息。

另一方面,解释器则更为复杂,因为它经过精心设计以解析某种语法流,该流必须是特定语言和特定语法的流,这些流必须在周围标记的上下文中进行解码。您无法孤立地查看每个字节甚至每一行,而确切地知道下一步该做什么。语言中的令牌不能像虚拟机的指令(字节码)那样孤立地获取

Java编译器将Java语言转换为字节码流,这与C编译器将C语言程序转换为汇编代码无异。另一方面,解释器并没有真正将程序转换为任何定义良好的中间形式,它只是将程序操作作为解释源代码的过程。

对VM和解释器之间差异的另一项测试是,您是否认为它与语言无关。我们所知道的Java VM并不是真的特定于Java。您可以使用其他语言制作编译器,从而产生可以在JVM上运行的字节码。另一方面,我认为我们真的不会考虑将Python以外的其他语言“编译”为Python以便由Python解释器解释。

由于解释过程的复杂性,这可能是一个相对较慢的过程……特别是分析和标识语言标记等,并理解源的上下文以能够在解释器中进行执行过程。为了帮助加速此类解释语言,我们可以在此处定义更易于直接解释的预解析,预标记化源代码的中间形式。这种二进制形式仍在执行时进行解释,它只是从一种人类可读性差的形式开始,以提高性能。但是,执行该形式的逻辑不是虚拟机,因为仍然不能孤立地获取这些代码- 周围令牌的上下文仍然很重要,它们现在处于另一种计算机效率更高的形式。

解决方法

在Java中始终使用“虚拟机”时,很少会读到Python“虚拟机”。

两者都解释字节码;为什么一个叫虚拟机,另一个叫解释器?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。