方舟编译器带来更多话语权,国产编译器仍需提高自主性

2019 年 8 月底,华为方舟编译器(OpenArkCompiler)正式开源。一年多来,方舟编程体系陆续实现了编译器、引擎、调试器的开源。

方舟编译器的“走红”,也让编译器这一技术性话题逐渐广为人知。那么,编译器的重要性有哪些?中国在编译器方面是怎样的现状?还有哪些不足?

近日,DeepTech 和鉴释科技首席架构师刘新铭进行了对话。他目前主导该公司面向 DevOps 的静态代码分析工具的核心研发工作,曾任惠普编译器技术实验室主任,领导基于惠普安腾处理器的编译器开发工作。在开发和交付高性能计算系统(HPC) 编译器和性能分析工具方面拥有数十年经验。

以下为整理后的采访实录:

DeepTech:您觉得编译器对于操作系统以及生态的重要性体现在哪些方面?

刘新铭:我的第一个观点是编译器一定要做。编译器是世界上第一个电脑软件。在没有编译器之前,只能靠会写汇编的人去编译电脑软件。这需要很大的工作量,而且需要很高的专业技术能力。所以编译器的存在是非常有必要的。有了编译器才会有操作系统,才会有生态。所以如果国内不做好自己的编译器,就很难在这个生态中扎根。在 2000 年左右,谷歌刚创立时只招聘两种人:第一种是做操作系统的人;第二种是做编译器的人,其余一概不招。如果按照当时谷歌的条件在国内的软件行业去筛选人才,可以写核心算法的人,目前在全国也许不超过 300 人。

所以想要扎根,编译器是一个开始,需要给予足够的重视。但这是一条很艰辛的路程。比如在之前 2000 年到 2010 年左右,我在美国负责安腾服务器生态系统的编译器部分的工作。为了要完成这个生态系统,公司设定了一个目标,要达到 6000 个应用以上,并且要调到最优,才能卖出去。

很多人认为开源很好,可是开源在国内常会变成拿来主义:自己做的东西不开源,老用别人开源的东西。但是这种做法不可持续,在三两年之后,很可能自己的东西和开源的东西无法融合在一起。

我的第二个观点就是编译器不但要做,还要掌握控制权。要有我们自己的创新性和自主性,而且要有发言权。比如中国的软件在国外是没有发言权的,我们做得再好,对方不允许进入或者需要等很久,也是没有用的,因为它开源的软件可能已经达到很高的高度。每次整合,都需要花费六个月。所以发言权很重要,在 GCC (GNU Compiler Collection,GNU编译器套件)的领域,我们需要守门人(gate keeper)点头。等守门人点头排队就需要三个月。就鸿蒙和方舟而言,中国人可以自己有发言权,这是很重要的。“点头” 这件事请的重要性很多人尚未意识到。要有 “点头” 的权力,最重要是要有优秀的人才,这样才能做开源、做需要的创新。比如我在这方面有几十年的工作经验,技术水平超越了很多人,对编译器有深度的了解,去管理这门技术的研发别人才会信服我。

第三个观点,我认为做软件不能浮躁,要静下心来做事。我们需要长时间的积累,也要鼓励年轻人做技术上的积累,不断学习、不断思考,要有和钟南山一样的精神。

DeepTech:您感觉我们现在国内的编译器生态相较国外是怎样的状况?

刘新铭:我认为差距又增加了一年。我们仍然没有在做核心的事情,无法做核心的事情,就无法进入主流,无法引领未来的趋势。

比如 2018 年图灵奖,两位获奖者,一位是斯坦福的 John LeRoy Hennessy(约翰?轩尼诗)教授,还有 UC 伯克利分校教授的 David Patterson(大卫?帕特森),他们两位合力做出了现在 CPU 基础架构设计的理念和方法。即现在最流行的芯片,包括 ARM 芯片在内都在用的 RISC 服务器。

对于摩尔定律结束后,该如何继续推动 IT 继续发展,他们认为需要依靠:特殊场景的语言 (domain-specific language/DSL)、特殊场景的编译器 (domain-specific compiler)、特殊场景的架构 (domain-specific architecture)。特殊场景,我认为这四个字可换为 AI。谷歌在做 AI 的语言,仍在进行中。国内迎头赶上比较难,因为多数做芯片的公司,都将资源集中至硬件方面,做软件的资源不足,做不了编译器,这是事实。有目共睹的是,别人看到我们只做硬件,所以先从软件方面卡脖子。

DeepTech:您觉得国内如果想突破的话,应该如何去做?

刘新铭:首先,我们的产业界要合作,不应该再单打独斗。打个比方来说,十家企业一人一块钱,一共十块钱,凝聚在一起,十块钱能做的事远比一块钱要多。产业要合作,把各方的资源整合在一起,发挥优势,凝聚起来,在做好硬件的同时,去做软件,做编译系统。第二,既然要合作,就不要各自为营,各做各的,需要配合协作。

第三,需要重视人才的培养。全国还在教编译器的学校几乎已经不存在。我们需要把编译器这门课变成选修课,提起我国学生对编译器的兴趣。当然教师也需要改变观念,不仅仅是写好学术论文,要做基础建设,更要注重实践。比如国外的一些老师做研究前都会搭一个完整的架构。所以国内的老师们可以改变观念,用方舟做我们自己的软件编译器的基础架构,而不是用国外的。