我遇到的大多数语言都使用 VM 或虚拟机。Java(JVM)、Python、Ruby、PHP(HHVM)等语言。
然后还有C、C++、Haskell等语言直接编译成native。
我的问题是,使用虚拟机(不依赖于操作系统)有什么好处?使用 VM 不只是创建一个额外的解释步骤,通过 [源代码 -> 字节码 -> 本机] 而不是 [源代码 -> 本机]?
既然可以直接编译,为什么还要使用 VM?
编辑
我的理解是 Python、Ruby 等。使用类似于 VM 的东西,如果不完全符合这样的定义,其中脚本被编译为中间表示(对于 Python,例如 .pyc 文件)。
编辑 2
是的。查了一下。Python、Ruby 和 PHP 都使用中间表示,但根本不存储在单独的文件中,而是由 VM 直接执行。请参阅问题:Java“虚拟机”与 Python“解释器”用语?
“尽管 Python 在幕后使用了虚拟机,但从用户的角度来看,大部分时间都可以忽略这个细节。”