前阵子华为正式开源了方舟编译器,根据介绍,此次开源的是编译器框架部分源码,包括编译器中间表示(IR,Intermediate Representation)和语言编译实现,同时搭配编译器其它二进制组件,实现 Java 程序到 aarch64 汇编指令的编译过程。

代码开源之后,一方面,开发者可以基于开源代码+二进制代码,编译构建出编译器工具链,尝试对 Java 程序进行编译;另一边,社区参与者可以通过框架源码学习方舟编译器的 IR 及基本的中端编译框架,熟悉方舟编译器的架构思想,并参与诸如对编译器中端优化的贡献。

很快就有消息透露深圳大学正打算将方舟编译器引入课堂,我们借此就方舟编译器相关问题采访了计算机与软件学院院长明仲与软件工程系副主任蔡树彬,并向校方确认了该消息。

开源中国:请问您从技术上怎么看方舟编译器?

明仲:我认为,方舟编译器技术上最大的变化是改用新的编译和运行机制,将原来安卓应用边解释边执行的即时编译改为先整体静态翻译再优化执行的预先编译模式,大幅度提升了安卓应用的运行效率。这可以说是近几年来能深刻影响整个安卓生态的基础性变化。从 JIT 编译到 AOT 编译的改进,中间有大量技术和工程上的问题需要一一克服,我们很可喜地看到,方舟编译器已经摸索、趟出了这样一条路出来。

开源中国:方舟编译器这次开源重点宣传了 IR(中间表示),其实意味着什么?

明仲:中间表示是编译器后端整个代码分析、优化工作的基础,优秀的 IR 设计才能够支撑起更好的代码优化处理。整体设计上,方舟编译器更关注静态编译,所以 IR 设计包括的程序信息比 LLVM 多了很多,这将非常有利于方舟编译器在代码优化阶段的处理,将能编译出更高效的代码。

注:LLVM(Low Level Virtual Machine,低级虚拟机) 是一个模块化和可重复使用的编译器和工具技术的集合。提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用,它能够进行程序语言的编译优化、链接优化、在线编译优化与代码生成。

开源中国:方舟编译器开源出来的内容好像不完整,这点您怎么看?

明仲:首先,我们可以看到,方舟编译器有完整的开源计划时间表,作为一个原来是内部研发的项目,在开源前花一定时间进行必要的代码梳理,这个我们完全可以理解。

其次,尽管方舟编译器已经做了许多工作,克服了不少困难,也取得了一些成果,但与成熟的 LLVM 相比,还是存在差距。在当前国内外环境下,除了方舟编译器项目团队自身需要加紧时间完善外,还需要借力于我们整个社区一起努力共建,才有可能能更快形成整个自主可控的软件生态。所以,方舟编译器先开源部分内容的做法我们完全可以理解。

在内存泄露或溢出的源码分析方面,我们学院一直有团队在进行研究,也取得一些不错的结果,我们也愿意一起参与到方舟编译器社区的建设中。

此外,方舟编译器的开源对我们当前的人才培养和教学改革来说也非常有意义。IR 设计、RC 优化等具体技术可以扩充我们的教学内容。更重要的是,在方舟编译器的基础上,我们能更好地培养自主可控的基础、系统软件人才,满足我国当前的发展战略要求。

开源中国:也就是说深圳大学打算把方舟编译器搬到大学课堂?

蔡树彬:我们这次计划把方舟编译器搬到课堂是一件非常顺利、开心的事情。一方面,以学生为中心,面向产出的计算机系统能力培养是我们教学的一个重要目标。

近几年来,我们学生的能力水平提升很快,原本的编译原理教学内容开始不能满足学生的学习需求。于是,我们计划在后续课程中,增加更多编译器中后端的内容,促使学生能够形成更完整、全面的计算机系统能力。

另一方面,在当前国内外形势下,自主可控已经成为国家重要的发展战略。编译器是计算机非常重要的基础系统软件,自主可控自然也变得非常重要。就在这个时间节点,方舟编译器宣布计划开源。通过与华为工程师几次沟通下来,我们不但发现华为工程师很热心,非常愿意帮助我们一起利用方舟编译器来改进编译课程教学,而且方舟编译器的 IR 设计和 RC 实现优化,也刚好能够成为我们编译器中后端内容教学的范例。

整体上,我们这次与华为合作,把方舟编译器搬到课堂,真是一件非常顺利并且开心的事情。我们也很期待后续跟方舟编译器团队继续进行更深入的合作,一起建设完善整个方舟编译器社区。

开源的方舟编译器将进入深圳大学课堂相关推荐

  1. 这次看到源码了,华为开源了方舟编译器

    今年 4 月份华为发布了方舟编译器(ArkCompiler),同时宣布将在 8 月将其编译框架代码开源,开发者可以研究参考,并在 11 月完整开源方舟编译器代码.目前在华为云官网上我们已经看到释出的源 ...

  2. 方舟编译器学习笔记分类与导读

    方舟学习笔记系列,从方舟开源到现在,已经写了50多篇,保证了每天一篇的更新频率.篇数增加之后,文章的分类以及文章之间的关系,逐渐变得复杂起来.本文将对已发表的学习笔记系列进行分类和导读,方便读者更好的 ...

  3. 华为正式开源方舟编译器,开源了,它真的开源了!

    点击"开发者技术前线",选择"星标?" 13:21 在看|星标|留言,  真爱 编辑: 可可| 来自:开发者技术前线作者:可可 昨日,华为云鲲鹏社区官网出现了华 ...

  4. c语言代码闭源,开源被喷,闭源被疑:方舟编译器怎么这么难?

    声明:本文来自于微信公众号 InfoQ(ID:infoqchina),作者:赵钰莹,授权站长之家转载发布. 闭源时被质疑是否真的存在这样一个编译器,开源后又被喷技术含量不行,方舟编译器怎么就这么难?本 ...

  5. 华为方舟编译器 PK 微软苹果谷歌编译器,到底谁胜出?

    记者 | 胡巍巍 受访者 | 刘新铭 出品 | CSDN(ID:CSDNnews) 近日,华为方舟编译器终于正式开源,兑现了在2019年8月开源的承诺. 与此同时,其代码不在GitHub,而是在自家开 ...

  6. 华为鸿蒙编译器下载,华为方舟编译器

    华为方舟编译器是最新上线的华为编译系统,用户可以在这里编译源代码,他功能强大,多种芯片联合尽心编译的运行和设一统一的平台,华为方舟编译器让用户不在只能选择安卓和苹果系统,华为鸿蒙系统的推出让用户有更多 ...

  7. 华为方舟编译器PK微软苹果谷歌编译器,到底谁胜出?

    记者 | 胡巍巍 受访者 | 刘新铭 来源 | CSDN(ID:CSDNnews) 近日,华为方舟编译器终于正式开源,兑现了在2019年8月开源的承诺. 与此同时,其代码不在GitHub,而是在自家开 ...

  8. 华为方舟编译器OpenArkCompiler编译

    2019.8.31 华为在其华为开源平台开源了方舟编译器源码 网址如下:https://code.opensource.huaweicloud.com/home https://code.openso ...

  9. 华为方舟编译器理解:初探

    华为踩着2019年8月的尾巴开源了方舟编译器: github:https://github.com/Himself65/OpenArkCompiler 背景: 方舟编译器主要要做的事情: 1.将多语言 ...

最新文章

  1. 从60多场技术面试中,我总结了这份面试经验
  2. [BizTalk] 短消息处理流程
  3. Thread-方法以及wait、notify简介
  4. Python闭包的使用
  5. 深度学习第五课-训练注意事项与框架使用
  6. 有问有答 | Storm技术内幕与实践精华问答
  7. 英语数字的 android,英语数字听力学霸APP
  8. 2.python数据结构的性能分析
  9. 个人博客网站建设_利用Github+Jeklly搭建个人博客网站
  10. BiLSTM+CRF命名实体识别:达观杯败走记(下篇)
  11. 为什么需要API网关?
  12. 利用application在页面中显示访问次数
  13. python调用win32api详解_Python调用Win32 API实现截图
  14. java socket.close_java – Socket.close()在Socket.connect()期间无效
  15. RTSP安防网络摄像头/海康大华硬盘录像机网页无插件直播流媒体服务器EasyNVR授权方式之加密机如何成功授权
  16. 改进YOLOv7系列:21.添加ShuffleAttention注意力机制
  17. 用计算机亩换算成平方,亩换算(平方米换算亩计算器)
  18. Python项目分析:预测双色球福利彩票中奖号码(随便玩玩,不要当真)
  19. 使用eclipse或者myeclipse时,鼠标变成黑色十字架解决办法
  20. 虚拟机屏幕显示不全(界面大小更改 )虚拟机Ubuntu18.04 的超详细环境搭建教程/步骤 SDN软件定义网络实验

热门文章

  1. suse linux vnc 桌面号,在SUSE Linux下安装VNC的方法
  2. centos修改磁盘uuid_如何修改linux磁盘的uuid
  3. 设计灵感|音乐播放器App界面如何设计?
  4. 设计灵感|化繁杂为明晰!如何把信息类海报做得好看?
  5. 简约几何海报背景设计素材,可盐可甜
  6. qq动态页面变方格_腾讯QQ音乐9.7.5正式版更新:「歌手主页个人主页」界面全新改版...
  7. 使用 systemd 定时器调度任务
  8. Linux内核深入理解中断和异常(2):初步中断处理-中断加载
  9. 提升KVM异构虚拟机启动效率:透传(pass-through)、DMA映射(VFIO、PCI、IOMMU)、virtio-balloon、异步DMA映射、预处理
  10. 用管道pipe实现程序与shell/bash脚本之间的通路