鸿蒙是不是 PPT 我不知道,华为方舟已经实锤了(组图)
自从上个月华为开发者大会发布了鸿蒙,很多人的目光就聚焦在鸿蒙的开源计划上。
没有见到实物,大家其实心里还是没底。也有爱之深责之切的开发者表示鸿蒙只是个 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 )的接口进行不同语言的交互。
这不仅多了一个步骤,还会占用硬件资源。
不过管你什么语言,开发的时候方舟编译器就把程序语言做了统一处理,应用运行时完全没有这部分额外的损耗。
安卓祖传的 GC 内存回收也优化成了可以实时回收的机制。
根据华为官方测试,通过方舟编译器替换了系统后台服务的华为手机,系统操作流畅度和系统响应性能都可以明显提升。
听起来是挺好的,可到底真的假的?又不是谁都懂技术上的东西,之前鸿蒙 OS 的消息就众说纷纭的。
不过随着 8 月 31 日方舟编译器的开源,托尼就放心了很多。
“开源( open source )”指的是软件的源代码对其他人提供,需要的人都可以查看、复制、学习、修改或分享代码。
Linux 创始人 Linus Torvalds 说,“ Talk is cheap . Show me the code ” ( 少逼逼,代码拿来 )。开源就意味着华为 show 出了代码,方舟编译器确有其事。
不过方舟并不是一次性全部开源的,这一次只开源了基础功能。
首次开源范围是编译器 IR ( Intermediate Representation )、RC ( Reference Counting )和多语言设计思想,运行时并不在开源范围。
缺少了运行时,有开发者说难以参与其中。编程什么的托尼只是半吊子,只好请教华为的专家。
“ 之所以没有一次性开源,是因为内部有很多代码要整理、进行合规认证,还有许多流程要走。当然华为也承诺持续开源 ”
“ 运行时的开源内部还在讨论。实际上华为手机上是有现成的运行时的,开发者可以先在华为手机上跑程序,当然开源社区也在做一个简单的运行时,让大家能尽快脱离手机跑起来。 ”
方舟编译过程演示
至于为什么开源,专家告诉托尼,作为终端行业首个尝试跨平台多语言编译器,华为需要集合行业的力量,才能共建一个健康的开源生态。
“ 希望大家能够提问题说这不行,那不兼容,这补丁没有弄好,这些都是真诚的对我们的帮助,也是让这个系统更快迭代完成的过程。 ”
托尼这么看好方舟编译器并不是因为它是鸿蒙的重要组成部分。很多人因为鸿蒙是自研的系统而自豪莫名,但自研的意义,并不是廉价荣誉感。而是国内在通用基础软件,如操作系统、数据库等方面的羸弱。
通用基础软件的开发不仅不赚钱,还非常烧钱。国内企业别说是去做,想过要这么做的都没几个。别人都已经写好了,直接拿来用又省事又省钱,做做游戏,交友什么的,圈钱圈到飞起。
这就是为什么中国会有数以百万计的 “ 996应用程序员 ” ;这也是为什么没了基础软件授权,大厂也只能默默等死。
但华为真正迈出了这没人走过的第一步,不是鸿蒙,而是已经开源的方舟编译器。从这个意义上说,方舟虽然是鸿蒙的一部分,但是地位是等同的。
别的不说,中文文档就是头一回
当然,就目前的方舟还有各种各样的问题,不管是前端支持的语言,或者是 IR 的标准,再到算法优化,离完善还有很长的路要走,开发者们所能参与的部分也有很多。
不过,这艘“ 方舟 ”的架子在那了,多一点人搭,总能更快完成的。不说了,托尼先去给世超买只华为手机,让他找点bug去。