ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MapleEngine 会成为鸿蒙的 Visual Studio 吗?

2020-09-09 22:01:14  阅读:407  来源: 互联网

标签:鸿蒙 编程 编译器 MapleEngine Visual 引擎 Studio 方舟 MapleIR


时隔一年,华为的鸿蒙操作系统即将发布 2.0 版本,据悉这一次华为将会把鸿蒙的代码公开托管至第三方平台,让广大程序员一睹鸿蒙的真容。鸿蒙将给终端市场带来怎样的影响仍未可知,但结合历史来看,成功的操作系统往往拥有配套完善的开发组件,以帮助开发者快速入门以投入相关生态的开发,从而建立起完善的生态体系。

比如在微软的 Windows 系统生态下,有微软自研的编程语言 C#,开发集成环境 Visual Studio(包括编译器),各种 API 的详述文档等等。多年的积累让 Windows 桌面程序有无数种开发方法,开发者遍布全球。

又比如在苹果的 iOS 和 Mac 系统生态下,有苹果自研的 Swift 编程语言,开发集成平台 Xcode, Clang + LLVM 编译器等。通过网罗年轻一代的天才程序员,走精英开发者路线的苹果也能把自己的操作系统生态搞的风生水起。

作为旨在突破国外技术封锁的操作系统,鸿蒙 OS 要想构建属于自己的健康生态,配套的开发者工具链是必不可少的。去年 9 月,华为开源方舟编译器部分源码;今年 4 月又再次开源方舟引擎 MapleEngine,首次将鸿蒙开发者生态工具链的蓝图向外界公布,展示了鸿蒙 OS 未来生态构建的雏形。

下文由 MapleEngine 项目参与者,资深编译器专家叶寒栋撰写,介绍了方舟引擎 MapleEngine 的项目概况,同时描述了围绕方舟引擎展开的一系列开发者编程体系和未来的规划。

作者:叶寒栋 

原文地址: https://zhuanlan.zhihu.com/p/161995928

方舟引擎也叫 MapleEngine,是方舟编程体系的重要环节。如下图所示,方舟编程体系的整体目标是构建一个软件开发的全栈,包括编程语言、多语言前端、编译器、执行引擎以及右下角一堆工具链。整个方舟体系依靠 MapleIR 贯穿前后,MapleIR 是程序的中间表示,是编程体系中程序的表达方式。编译器把MapleIR转换成机器码或者保留 MapleIR 中间码,方舟引擎则担负着执行该中间码的任务。可以认为方舟引擎和 JVM 类似,但超越了JVM,因为它不再是执行单一的 Java 程序。理论上说,只要能翻译成 MapleIR 的程序,都可以由方舟引擎执行。

  

方舟体系是采用统一 IR 来实现跨平台的项目,业界有很多类似的,成熟或者不成熟,各有特点,此处不赘述。但是,之所以要开发方舟编程体系则是有其技术、历史和环境等多方面因素。具体到方舟引擎,则是出于以下几点原因,同时也是方舟引擎的独特之处。

方舟引擎的第一个特点,它不光可以是一个孤立的软件,更重要的是方舟体系中的一环。从最早开发方舟编译器开始,我们瞄准的就是完整的方舟编程体系,而不是一个孤立的编译器。这很好理解,在如今的背景下,特别是多种业务多种体系结构的复杂要求,只有一个自主的完整的全栈设计才可能实现长期支撑多种业务。依靠零散的开源软件而组装起来的系统,是低效的、不可持续的,特别是无法长期演进,甚至不知道如何演进和朝哪个方向演进。 

编程体系中的每一个层次都要明白自己是为了实现一个“顶天立地”的全栈系统而存在的。顶天指的是对应用程序以及编程语言的理解和支持,立地指的是发挥硬件架构的能力并进而指导硬件演进。举个例子,方舟引擎的重要作用之一是为了将来设计高级语言做准备,这意味着引擎要有灵活适配多种语言特性的能力,特别是动态特性。这和一般的虚拟机只是为单一的语言而设计是不同的。因此,方舟引擎原始动机是与众不同的。 

方舟引擎的第二个特点是它的输入文件以 MapleIR 为格式。理论上,任何一种高级语言的程序,经过多语言前端的翻译,转换为 MapleIR,则可以交给引擎执行。当然,这是一个非常美好的愿景。现实中肯定有不少具体问题,并不是所有事情都可以一蹴而就的。举个简单例子。在IR 上同样的一条指令,比如抛异常,在不同的语言规范里面很可能有不同的语义。因此,引擎将为这些差异性的地方设计不同的实现,所以大家会看到不同的语言支持库。这些对软件设计和实现提出了挑战。这是支持多语言的必然代价。无论如何,一个追求一定程度通用的引擎带来的巨大好处是无法忽视的。对于高级语言的设计和实现来说,这是非常有益的。 

方舟引擎的第三个特点是和它设定的目标业务有密切关系。方舟编程体系希望能够服务异构分布式的系统。一个标准的 MapleIR 软件包,借助方舟引擎可以在不同的设备上运行。目标系统涵盖的设备可以包括从 IoT、手机到电视机等。每种设备的能力、体系结构和规格差异很大。每个领域的程序开发所适用的编程语言和模型各自差异很大。因此,要求引擎能够比较自如的对自身进行按需适配,并能直接或者通过操作系统间接发挥硬件能力。 

方舟引擎的原始诉求很多,上面是比较明显的。从整个方舟编程体系来看,我们希望通过统一的 MapleIR 来贯穿所有软件模块,对上支持多种语言,对下发挥多种体系结构的能力。特别是上图最右下角的大量的衍生工具链,都将以 MapleIR 为接口,在软件开发生态环境中实现光滑链接。 

完整的方舟编程体系非常庞大,目前已经成型的包括编译器和引擎,其中引擎还只是初级阶段。但是,其中任何单一的部件都可以独立使用,也可以多个配合使用,也可以再开发以实现自己的用途。愿和大家一起为之努力!

来源:站长资讯中心

标签:鸿蒙,编程,编译器,MapleEngine,Visual,引擎,Studio,方舟,MapleIR
来源: https://www.cnblogs.com/0591jb/p/13642327.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有