如果我已经有了解释器,为什么还要使用像 Parrot 这样的 VM 作为我使用的动态语言(Python、Perl、...)?对于在我的代码和我的机器之间使用不同的 VM 以及使用单独的解释器的成本,我可能获得什么?
(我是VM问题的新手,所以答案可能很明显)
编辑
如果我已经有了解释器,为什么还要使用像 Parrot 这样的 VM 作为我使用的动态语言(Python、Perl、...)?对于在我的代码和我的机器之间使用不同的 VM 以及使用单独的解释器的成本,我可能获得什么?
(我是VM问题的新手,所以答案可能很明显)
编辑
如果我已经有了解释器,为什么还要使用像 Parrot 这样的 VM 作为我使用的动态语言(Python、Perl、...)?
首先,如果您正在启动一个项目,那么您可能还没有解释器。
但是,假设您有一个解释器并且正在考虑是否向它添加功能或重写它以使用 Parrot,那么您想到的权衡是:
Personally, Parrot's optimizer (and register-based design, largely to make optimizations easier) and well tested cross platform codebase would be enough to convince me.
解析 ASCII 源代码很慢。如果源文件被解析一次,然后解释器使用二进制结构会更快。在 Python 中,这个结构被存储在.pyc
文件中以便快速重用。
有两个步骤:
这由例如 scala 使用:没有 scala-VM。Scala 只是一种新语法。scala 编译器创建 java 字节码。