如果还是基于虚拟机的思路,那么根本没有必要再做个专门的go虚拟机,因为jvm已经极其优秀,直接在jvm基础上发明新的语言就好了,kotlin scala groovy 就是这个思路。

虚拟机有两个弊端

1依赖于虚拟机,安装新程序时必须安装虚拟机,这很不利于软件分发。

2性能损耗,字节码到机器码的翻译是有性能损耗的,虽然jvm已经把这种损耗降低到了极限,但远远没到可以忽略的程度,一般认为,go语言写的代码会比jvm语言运行效率更高。性能这块是go语言追求的一个极其重要的目标。

Golang的作者说过,他们是要把go打造成为一个更好的c语言,要极其简单,能够不加的特性绝对不加,这也决定了golang不可能搞个独立虚拟机让其变得复杂。