java和c#都可以编译成机器码,也可以JIT编译,有了LLVM IR,c/c++/swift也不一定非要直接编译成机器码。苹果已经不允许store上swift开发的应用直接编译为机器码,而是bitcode的形式,和jvm的字节码所要达到的目的差不多。比如说哪天苹果的芯片改个指令集,s…
显示全部
@H_
403_81@
java和c#都可以编译成机器码,也可以JIT编译,有了LLVM IR,c/c++/swift也不一定非要直接编译成机器码。
苹果已经不允许store上swift开发的应用直接编译为机器码,而是bitcode的形式,和jvm的字节码所要达到的目的差不多。比如说哪天苹果的芯片改个指令集,store上的应用啥都不用管直接获得
性能提升。jvm的字节码也是如此,android art虽然
支持aot编译,但也同样如此,android采用renderscript而不接受opencl也是这个考虑。
另外2010年前后诞生的语言很多,jvm上的,dart/typescript和js相关的,nim,elixir,crystal,kotlin,ceylon等等,你看看有几个是直接编译为机器码的?
至于Golang为何还要编译为机器码,
在未来,Go语言能否撼动Java在Android、Hadoop大数据、云计算领域的地位?这个问题中,王益的回答里“Dockerization的开销”这段说的很清楚了。
关键不是在字节码还是机器码,而是【类型系统】的强弱问题,这个问题很重要,而且似乎达成了一致共识,就连某些fp语言都
添加类型了。