鸿蒙是不是PPT我不知道 华为方舟已经实锤了

2019年09月19日 04:04 差评公众号

自从上个月华为开发者大会发布了鸿蒙,很多人的目光就聚焦在鸿蒙的开源计划上。

没有见到实物,大家其实心里还是没底。也有爱之深责之切的开发者表示鸿蒙只是个 PPT 系统。但是 8 月 31 日,华为开源了方舟编译器的部分源码,各种声音都小了下来。

看的懂的看门道去了,可看不懂咋办。

托尼觉得要知道方舟编译器到底怎么样,首先得知道它是什么。

其实编译器也是进程,它的功能就是把进程猿们写的代码翻译给机器听。

编程说白了就是你写一段话( 一段代码 )去命令机器做事。可代码终归是人类语言,机器理解不了。

用 Python 告诉电脑输出一句话 “ Hello World ”,你可以这么写:

print("Hello World")

运行结果

为了让机器听懂我们的话,每套语言一般都会有一套编译器,专门把代码翻译成机器听得懂的话。

而方舟编译器不是为了适配某套语言,它想要能够编译尽可能多的语言。

可能有人会奇怪:明明每套语言都有成熟的编译器,为什么要去做一个多余的东西呢?

道理很简单。之前国内手机厂商的系统都是基于安卓开发的,虽然叫着各种 OS 说白了还是安卓的机制。

最早的安卓应用基本是用 JAVA 写的,但安卓的内核 Linux 中并没有 JAVA 的编译器。所以想让应用跑起来,还得嵌套一个 JAVA 虚拟机。

最早的时候安卓运行在一个叫 Dalvik 的虚拟机上,里面集成了一个解释器,每次用户在安卓手机上运行 APP 时,就会叫醒这个解释器,把进程翻译成机器码运行。所以最早的安卓很容易卡到飞起。

当然,经过这么长时间,安卓已经流畅了很多。不仅用上了新的 ART ( Android Run Time )虚拟机,还有在设备空闲时对进程进行静态编译的 AOT ( Ahead of Time )机制,再加上随时准备救场的 JIT ( Just in Time,即时编译 ) 机制和最早的解释器。

不过不得不承认,再怎么优化,多了编译的过程怎么都没省略编译直接运行来的快。方舟编译器的作用就是去掉这个编译的过程,让进程直接运行在操作系统上。

就像你为了接待外国友人,本想着语言不通花大价钱雇了翻译。结果外国友人一张嘴,嚯,中文八级!机器见了经过方舟编译的应用也是这个心情,别提多爽了。

方舟不仅让应用直接运行在操作系统上,还减少了多种语言互相调用带来的性能损耗。

前面说过安卓的应用有多种语言。现在的头部应用大多都是 Java / C / C++ 等混合语言编写的,不同的语言使用规范也不同,这就需要通过一个叫 JNI ( Java Native Interface )的接口进行不同语言的交互。

这不仅多了一个步骤,还会占用硬件资源。

不过随着 8 月 31 日方舟编译器的开源,托尼就放心了很多。

“开源( open source )”指的是软件的源代码对其他人提供,需要的人都可以查看、复制、学习、修改或分享代码。

Linux 创始人 Linus Torvalds 说,“ Talk is cheap . Show me the code ” ( 少逼逼,代码拿来 )。开源就意味着华为 show 出了代码,方舟编译器确有其事。

不过方舟并不是一次性全部开源的,这一次只开源了基础功能。

首次开源范围是编译器 IR ( Intermediate Representation )、RC ( Reference Counting )和多语言设计思想,运行时并不在开源范围。

缺少了运行时,有开发者说难以参与其中。编程什么的托尼只是半吊子,只好请教华为的专家。

“ 之所以没有一次性开源,是因为内部有很多代码要整理、进行合规认证,还有许多流程要走。当然华为也承诺持续开源 ”

“ 运行时的开源内部还在讨论。实际上华为手机上是有现成的运行时的,开发者可以先在华为手机上跑进程,当然开源社区也在做一个简单的运行时,让大家能尽快脱离手机跑起来。 ”

方舟编译过程演示

别的不说,中文文档就是头一回

当然,就目前的方舟还有各种各样的问题,不管是前端支持的语言,或者是 IR 的标准,再到算法优化,离完善还有很长的路要走,开发者们所能参与的部分也有很多。

不过,这艘“ 方舟 ”的架子在那了,多一点人搭,总能更快完成的。不说了,托尼先去给世超买只华为手机,让他找点bug去。

分享
相关阅读

评论(0个评论)

写评论

Noavatar small

评论需要登录。 登录 注册