正在阅读:

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

扫一扫下载界面新闻APP

鸿蒙是不是 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去。

本文为转载内容,授权事宜请联系原著作权人。

评论

暂无评论哦,快来评价一下吧!

下载界面新闻

微信公众号

微博

鸿蒙是不是 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去。

本文为转载内容,授权事宜请联系原著作权人。