为何要搞 10 年?方舟编译器专家首次回应

oschina
 oschina
发布于 2019年09月01日
收藏 25

昨天华为正式开源了其方舟编译器,一时间引起热议。在方舟技术专家所在的微信群中,关于为何方舟需要研发 10 年的问题被首次回应。

JFinal 作者詹波的疑惑是为什么方舟编译器需要花费 10 年时间才实现

方舟编译器官网的深度解密文章表明,做出方舟编译器的难度极大。我理解为比做一个 C++ 编译器的难度要大得多得多,否则打造方舟编译器不会需要十年时间。

而 C++ 远比 Java 复杂度高,为什么做一个 Java 编译器的难度会远比做 C++ 编译器要高得多呢?

官网的方舟深度解密文章中并未透彻说明核心难点在哪里。

关于方舟编译器的深度解析,可以查看:拜拜虚拟机,全面深度解密华为方舟编译器

方舟专家不闲解答了他的疑惑,他介绍,首先在构思方舟的时候华为并没有选择 C++,是因为国内生态开发者主要还是 Java/Kotlin 为主,而 Java 本身是动态语言,如果要能够在服务器侧做到静态编译,又不能动手裁剪语言的动态能力,就需要 IR,运行时,编译器以及编程框架一起修改。这还要考虑复杂的兼容问题,导致技术方案选型的困难

其次要想提高流畅度,需要提升内存使用效率、提升 JNI 效率,需要想尽办法控制动态绑定对性能的影响,需要 profile 上有更准确的信息,这是系统工程上的困难

不闲表示,其实二进制编译也只是一种技术路线,简单的 AOT 也是生成二进制,问题的关键是如何提升编译后的代码执行效率,这是当前的主要困难。做出一个可以工作的不难,难在做出世界顶尖性能。“甲骨文、Jetbrains 等很多海外公司都在做类似尝试,如果不是有大牛压台……我们国内能做 IR 设计和内存模型的人很少,大家也都不再用汇编编程了。”

欢迎留言探讨。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:为何要搞 10 年?方舟编译器专家首次回应
加载中

精彩评论

小保哥
小保哥
都说了,人家首先开源的是IR,瞎吗?这是与平台指令集无关的中间指令集,独立于前后端,IR指令空间大有可为,没有最好,只有更好。国内有大公司肯花钱搞这个,挺好,多多益善,让大牛都去下基层,别来跟我这种普通码农抢饭碗。顶华为!
蛋看江湖
蛋看江湖
好奇大牛压台的大牛是谁
红薯
红薯
十年磨一剑
思维特无敌
思维特无敌
那么基于方舟可以向两个方向开发,第一向上层发展:做成Python或其他语言IR编译器。第二下层发展:做成RISC-V甚至CISC解析器,支持各种CPU。
那样方舟可以改名叫 艨艟 或者 郑和宝船 了👻
兮若
兮若
国内搞底层的人太少

最新评论(46

谁来与我大战三百回合
详细阅读设计文档后,没发现这玩意和android现有的技术有什么区别。android先编译为jvm字节码,再翻译为DVM的字节码,前者是面向堆栈的虚拟机,后者是面向寄存器的虚拟机,这两种虚拟机都不是直接编译成机器码的,后来为了解决启动慢的问题,又引入了ART,将字节码进一步翻译为机器码。所以“方舟编译器 =(->jvm->dvm->ART)”,谈不上有多先进,具体实现代码还没看,不知道是不是android(jvm->dvm->ART)工具链的整合,等以后有空再研究。
谁来与我大战三百回合
一本正经胡说八道。第一个c编译器用汇编撸出来以后,后面的编译器不需要会变了, 用java一样能写出c的编译器。跟汇编有一毛钱关系吗?
爱吃萝卜叶叶的毛毛虫
爱吃萝卜叶叶的毛毛虫
我没有不理解,大牛为啥说java 是动态语言?????,
粉色调佩奇
粉色调佩奇
十年磨一屁 真响 让屁在飞会儿
两广总督bogang
两广总督bogang
今年招了几个博士小牛,将来的大牛。👍👍👍👍
大武233
大武233
我的手机现在用的就是方舟编译器 确实很快😏
王金豆
王金豆
我p20pro升级9.1后明显感觉流畅性提升不少
魂祭心
魂祭心
头文件瞄了一遍,没看到什么特别的亮点。
hnxxd
hnxxd
10年以后,我不认识你,你不认识我
webw
webw
为一切可能做准备。
大明二代
09年就开始做了吗????
返回顶部
顶部