我正在研究我自己的玩具编程语言。现在我正在解释来自 AST 的源语言,我想知道编译成字节码然后解释它可以为我提供什么优势。
目前,我想到了三件事:
- 遍历语法树数百次可能比在数组中运行指令要慢,特别是如果数组支持 O(1) 随机访问(即上下跳转 10 条指令)。
- 在类型化的执行环境中,我有一些运行时成本,因为我的 AST 是类型化的,并且我不断地遍历它(即,我有 10 种类型的节点,我需要检查我现在要执行的类型)。也许编译成无类型的字节码可以帮助改善这一点,因为在类型检查和编译之后,我会有一个无类型的值和代码。
- 编译成字节码可以提供更好的可移植性。
我的观点正确吗?编译为字节码的其他动机是什么?