查看原文
其他

为什么华为方舟编译器要搞 10 年?

The following article is from 开源中国 Author oschina

点击上方“开发者技术前线”,选择“星标”

18:55 在看 真爱


来自:开源中国
2019年8月31日,华为方舟编译器开源官网正式上线。 华为的方舟编译器终于迎来了开源,而且开源代码还是承载在自家的官网上。面对这样一个肩负「出于安卓,胜于安卓」使命的编译器,自问世以来就备受大家的关注;此次开源,更是吸引了大众的目光。
那么到底这个编译器从开发至今都经历了哪些挑战?获得了哪些机遇?现在又拥有怎样的魔力?它对于华为而言,意味着什么?
华为宣称为了造这艘「方舟」,磨剑十年

2009 年,华为启动 5G 基础技术研究的同时,开始创建编译组,第一批海内外研究人员加入。

2013 年,华为推出面向基站领域的自研编译器 HCC,并正式提出编译器框架构想。

2014 年,众多海内外专家加入华为,方舟项目正式启动。

2016 年,成立编译器与编程语言实验室。

2019 年,华为方舟编译器正式面世。



为何方舟需要研发 10 年?


一时间引起热议。在方舟技术专家所在的微信群中,关于为何方舟需要研发 10 年的问题被首次回应。

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


方舟编译器官网的深度解密文章表明,做出方舟编译器的难度极大。我理解为比做一个 C++ 编译器的难度要大得多得多,否则打造方舟编译器不会需要十年时间。
而 C++ 远比 Java 复杂度高,为什么做一个 Java 编译器的难度会远比做 C++ 编译器要高得多呢?
官网的方舟深度解密文章中并未透彻说明核心难点在哪里。
关于方舟编译器的深度解析,可以查看:拜拜虚拟机,全面深度解密华为方舟编译器
方舟专家不闲解答了他的疑惑,他介绍,首先在构思方舟的时候华为并没有选择 C++,是因为国内生态开发者主要还是 Java/Kotlin 为主,而 Java 本身是动态语言,如果要能够在服务器侧做到静态编译,又不能动手裁剪语言的动态能力,就需要 IR,运行时,编译器以及编程框架一起修改。这还要考虑复杂的兼容问题,导致技术方案选型的困难。
其次要想提高流畅度,需要提升内存使用效率、提升 JNI 效率,需要想尽办法控制动态绑定对性能的影响,需要 profile 上有更准确的信息,这是系统工程上的困难。
不闲表示,其实二进制编译也只是一种技术路线,简单的 AOT 也是生成二进制,问题的关键是如何提升编译后的代码执行效率,这是当前的主要困难。做出一个可以工作的不难,难在做出世界顶尖性能。“甲骨文、Jetbrains 等很多海外公司都在做类似尝试,如果不是有大牛压台……我们国内能做 IR 设计和内存模型的人很少,大家也都不再用汇编编程了。”

究竟是方舟编译器是真厉害,还是吹的厉害?届时还要看实际运用中的数据,就留给时间证明吧,让我们拭目以待!

---END---

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存