方舟编译器为什么连华为都要花10年时间(2009年开始)并且重金研发才将其搞定?

黑土217712201


谢谢您的问题。华为用了10年时间研发方舟编译器,是因为条件和难度决定的。

方舟编译器的定位很高。方舟编译器本质不是内嵌在智能手机里的软件,华为将其定位于App 开发者工具,以及自研操作系统的一部分。华为的目的不仅是为了提升安卓的系统性能,而是将源代码直接翻译成机器代码,让APP的开发者将现有的安卓系统相关工程和APP编译、转移、兼容地应用于华为自己的操作系统。大道至简,越是编译出高效、简洁的机器码,越意味着编译器和操作系统的有效交互。


方舟编译器需要怎么推进。第一,需要长时间的技术积累,一步一步成功的累计。第二,华为方舟编译器是面向操作系统底层接口,是一项复杂困难、系统工程,需要公司有相当的综合实力,华为的强大的技术研发能力是基础,需要各专业协调和部门的协同推进。系统性和阶段性体现在以下步骤上,2009年到2013年华为研发编译器HCC,主要用于基站,同时也形成了基本的框架思路。2014年建立了主架构,2015年推出编程语言CM,2016年成立专门的实验室,2017年到2019年研发并推出方舟编译器。这时间对我们来说很长,但是对编译器研发来说,每一步都不容易。第三,下一步,所以就要将方舟编译器投入商用,一方面优化系统,另一方面构建生态。

方舟编译器需要什么投入。第一,需要技术研发人才,他们熟悉系统框架、系统应用、机器语言、高级语言,对安卓的生态非常了解,这样才能做出与安卓系统配套的编译器,但是也意味着工作量非常大。据统计,请直接参与编译器开发的技术人员有上千人,这是引用了海外人员。第二,研发编译器需要资金投入,据统计已经花了几亿美元。第三,方舟编译器是一代一代华为研发人员投入大量精力,无数失败和重来才换来的,他们最有发言权。
欢迎关注,批评指正。


追科技的风筝


方舟编译器为什么连华为都要花10年时间,并且重金研发才将其搞定?在之前发布的华为P30手机发布会上,华为同时宣布把手机操作系统升级为emui9.1,而且还正式的推出了方舟编译器成为发布会的亮点。

何为方舟编译器

华为手机系统这些年以来确实是有非常大得进步,给大家先举个例子,从emui5.0主要解决的是安卓手机系统的顽固问题—卡顿!而后期的华为emui系统分别上线有GPU Turbo技术,将手机性能还有图像处理器能力有质的提升,还有Link Turbo技术则解决了网络覆盖不均匀的问题。

而最新的emui9.1系统则是上线方舟编译器和超级EROFS功能,也是针对安卓系统流畅度的问题,但是在手机操作系统底层,能够让计算机听懂并做出正确的操作,只有0和1组成的二进制代码,所以这里面必须要有一种高级的语言到机器语言的转变,而这种转变目前只有两种方法,其一:我们直接把高级的语言翻译成机器语言;其二:还可以引入中间层,成为翻译机器,最后让代码执行,但是这种效率比较低。

所以简单的来说,编译器就是将计算机高级编程语言转化为可以执行的机器语言的工具,可以说是一步能够到位的编译,这样的编译有什么好处,就是可以直接在手机上的机器语言,不需要再做编译,可以有效提高手机运行速度。



十年时间终成方舟编译器

为什么华为用十年的时间研发,才终于把这个方舟编译器才真正的研发出来,那么编译器的研发难不难,其实这是难度非常大的,需要长期的大量研发积累,可以说是十年如一日的做研发。

难度一:对于这类型的研发工作人员,必须要精通各种高级语言,比如说Java语言,C语言等等,还需要对各种框架也要非常的熟悉。

难度二:规模层面是非常大的,我们对于华为编译器可能比较概念笼统,那么我们可以看看谷歌的操作系统的研发,各种规模很大,还需要APP开发商适配谷歌的生态系统,其实华为方舟编译器也是一样的,供APP开发商适配。

难度三:相关方面的人才聚集,在来说研发呃呃时候,华为吸引大量的海内外研究人员加入工具,而且还在2004年时候周志德加入华为方舟编译器,成为首席技术科学家,从中可以看到华为方舟编译器在人才方面的需求是巨大的。

方舟编译器的3大亮点技术优势所在

其一:方舟编译器在原有基础上,吸收了现在安卓系统的各种主流的框架还有库的程序优化,能够直接把编译成机器的指令。这从系统底层提升非常之大。

其二:方舟编译器,最大的一个特点就是不需要依赖虚拟机,这样的好处在于能够减少系统资源对于机器系统的占用,而且还建立非常高效的内存回收的机制。而方舟编译器则是在这些方面做出来突破。

其三:方舟编译器的开发者学习和使用成本很低,可以说方舟编译器为应用开发者提供能够快速的集成编译环境的,能够让系统在流畅度方面提升44%,在我们日常使用地第三方的软件方面,能够提升60%左右的。


笔者结语:此次华为发布的方舟编译器,让我看到了,华为在手机操作系统自主研发上的决心和信心,以及研发实力的客观认识,华为做方舟编译器不仅仅是要解决安卓系统的卡顿不流畅问题,更是为广大的APP开发商适配华为的软件提供便利,顾名思义方舟,华为现在提供这样的一个平台,是想要建立华为自己的生态系统,所以这些系统大量的工作,一起做下来也就需要十年的时间,这也是需要华为,APP开发商,终端等等一起努力的结果!


千帆辰


从事软件开发十几年,平时主要做的还是软件层面开发,软件开发完成之后就要进行编程,最后在机器上运行,绝大部分程序员很少关注编译器这个层面是如何实现的,编译器的工作量非常巨大,有点编译经验的人都会有点基础,只是C语言里面常见的编译错误就能有多少,可见这里面工作量的巨大,据说华为公司投入了至少上千人的做这个事情,而且这种事情还急不来需要稳扎稳打,不能有丝毫的马虎,构建属于自己的编译器是走向自己做操作系统的第一步,这一步起步最难,也是最基础的。

从09年华为就开始着手做这个事情,证明任何事情想要在技术上有所突破必须有十年磨一剑的耐性,华为公司这点做的的确让行业内佩服,最主要像编译器这种基础性的研究工作不是一朝一夕的事情,而且国内本身底子就比较薄弱,也就是资金充足的公司才能玩的事情,国内研究这些前言基础的公司从私企性质看就是华为互联网公司几个巨头的机会更大一些,阿里的阿里云系统完全的自主研发,也算是给国内科技公司争了很多脸面,华为在自主研发上做的一直不遗余力,在通讯领域,在芯片领域,在软件上也在慢慢发力,特别是构建自己的生态系统方面也在加大力度。

能够有自主研发需要有很大的魄力,布斯每个公司都有这种能力,毕竟研发新的东西或者基础技术,需要时间和资金的支持,如果中间放弃前面消耗的一切都完蛋了,阿里云的王坚在开始研发阶段承受了最大的压力,在12年的年会上也委屈的落下了眼泪,可见压力之大,越是技术的跨度越大,需要磨练的经验越多,承担的压力越大毕竟不是挣钱的部门在一起开会说话底气都不足,时间久了信心就容易受到影响。

华为从开始就树立了非常大理想和苑景,就是朝着世界第一去的,所以现在正在按部就班的向前走,为了达成目标肯定需要强大的技术支持,所以方舟实验室就是充当这么一个角色,未来技术的研发基地,也就是华为这种大公司才能有条件这么去做,如果放在初创期的公司首先要想到的是如何生存,如何获取现金流,如何采用商业的模式来运作,持续的花钱做事情对于任何一家都是都是要慎重考虑的事情,而且这种钱起来多未必真能见到效果,所以只有志向长远的公司才会持续做的事情。

国内太多的互联网公司就是一门心思的搞商业模式,对于核心在有了资金之后投入的也比较少,永远也冲不到国际上,只会在窝里横。一个科技最后决定命运的还是技术能力,从各个纬度可以想象华为正在为自己的操作系统铺路,正在构建自己的生态系统而努力。

希望能帮到你。


大学生编程指南


别小看这一个编译器,它能极大地提升安卓系统的流畅程度,要是真的随随便便就能研发成功,每个手机厂商不都能研发出自己的编译器吗?

在介绍方舟编译器的研发难度之前,我们先来了解一下什么是方舟编译器。目前安卓系统和安卓应用大多数都是使用Java 语言编写的。虽然Java语言易于开发,但手机的CPU只能识别汇编指令,也就是我们在电脑课上学到的机器语言。对于这个问题,谷歌给出的解决方案是通过手机上的虚拟机进行同步翻译,这种做法无疑占用了更多的手机资源,对于那些使用了多种语言编写的应用,虚拟机翻译的时间就要增加,导致卡顿。


而华为研发的方舟编译器就解决了这个问题。通俗易懂的说,就像你和老外交流,之前说请翻译,现在直接带了个翻译器,直接在系统层面把Java等语言翻译成CPU能识别的语言,从而提升系统流畅度。

至于其中的研发难度,丝毫不亚于芯片的研发。相信学过编程的朋友肯定听过编译器的恐怖,复杂性极高,不是随便几个程序员就能开发出来的。华为早在10年前就布局方舟编译器,投入了很多资源,就连Fred Chow这样的技术大牛也加入华为。到了现在,光是参与了方舟编译器研发的工作人员就高达上千人。至于其中的用人成本,我们可以看到,华为的猎头招聘的普通工程师的年薪就高达50—100万。

可能很多朋友对华为研发方舟编译器表示不理解:耗费巨额资金,研发成功后免费开源给友商和开发商,这不是笔赔本的买卖吗?其实不然,华为的方舟编译器直接威胁了谷歌在安卓系统中“绝对垄断”的地位,相信有了这次的经验,在不久来华为手机系统也会问世。到时候,就不是国产手机求着用安卓系统,还要被IOS系统吊打的局面了。不得不说,华为真有远见啊!


不知道各位看官们是如何看待华为方舟编译器的呢?欢迎在下方评论留言,让更多人看到您的观点,谢谢!


科飞猫科技公社


首先这款方舟编译器真正面世的时间是2019华为春季新品发布盛典上,当时余承东在发布会上正式发布。根据华为介绍这款编译器有个特点那就是能改善安卓应用编译效率,尤其是从原先的边解释边执行转变为全程机器码高效运行程序。当时随着这款系统的亮相,外界同样猜测不排除下一步华为布局手机系统的野心。

来先看看华为方舟编译器的研发路劲情况。据说这款编译器至少花费了10年时间,2009年华为就创建了该团队,也从那时候开始华为开始将打造自主的编译器作为该团队的目标。从发展路劲来看,2009-2013年华为开始研发编译器HCC,2014年建立了主架构,2015年推出编程语言CM,而2016为了扩大成功转化成立了专门的实验室,于是乎从2017年到如今,这款方舟编译器正式与开发者见面。其实从这个时间点来看,研发一款全新的编译器时间跨度非常大,不仅耗费财力还耗费时间成本。

尤其是根据资料来看,方舟编译器属于底层编译,这就意味着本身就需要克服各种复杂困难、系统工程,考验着一个公司的综合研发实力。优秀成果的背后离不开艰苦卓绝的奋斗和长久的蛰伏。

再来看现在的安卓生态,想要突破安卓现状却并非易事,编译器作为软件开发中的“皇冠”研发难度极大。华为为了开发这款编译器,花费10年,投入数百人的专家团队,经过多次尝试,最终做到了在兼容Java语言的基础上,彻底实现了机器代码的翻译。

先不讨论其他手机厂商用不用的问题,对于国内来说,如果想在编译器、甚至整个偏底层的系统软件方向有所突破,过去10年基本是不可能或者只能是“中国芯"研究单位。所以至少来看,华为这款编译器的推出在某种意思来说是颠覆性的。从组装到整合,再到核心元器件逐渐自主化、系统深度优化/自研,自己曾经放弃和退缩的道路,如今正在成为现实。


科技之窗


感谢您的阅读!

我试图用最简单的说法,和大家聊一聊方舟编译器。我们大部分人其实对于这个概念是模糊的,大部分的消费者其实根本不会关心方舟编译器是什么?我们关心最多的是:你有了这个方舟编译器,安卓手机还会卡顿吗?

当然,余承东给出的科普视频,还是很简单的将华为方舟编译器进行了科普,我们还是用比较简单的语言一起学习下:

我们打开一款听歌APP,我们给出手机一个指令(点开APP),编译器会将APP转化为手机能够识别的机器码。但是,现有的安卓编译器,在编译过程中,会有VM(虚拟机),它会将我们的指令通过解释器和编译器共同作用,这样就让打开指令变的有点繁琐,因为不是一步到位,就像剥桔子,我想吃一块,给你剥一块;边吃边剥!

而方舟编译器是在我们下达指令后,直接打开运行,因为它在我们下载APP的时候,已经给我们编译好了,不需要现在边打开边编译了。这就像:我们吃桔子,需要边剥边吃,现在是直接打包成了罐头,你只要打开盖子就可以吃桔子了,不用剥!<strong>

这个过程难不难?难!华为花了数十年,解决了这个问题,而且重金。这里面有没有夸大的成分,我们不好说,可是它毕竟推出了,毕竟有效果,这就足够了。我们在使用的时候,会问这个手机的系统的原理是什么吗?

其实,我觉得华为不可能花十年,重金研究方舟编译器,这里面研究的重点并不是方舟编译器,我觉得是华为的系统,虽然,华为CBG软件部总裁王成录博士说华为编译器是十年之功,因为这里年的难点是在于:怎么让APK下载后就成了机器码,直接执行。这就需要长期研发,因为它要求的是研发人员既精通高级语言,对各种框架等非常熟悉,又要对机器语言了如指掌!更何况是要适配谷歌生态!

而,我认为华为确实在此基础上,肯定是在为下一步的华为系统的开发做准备,十年到如今,何止一个方舟编译器,这里面一定有华为对于未来生态的设想,以及华为系统的研发,这才是华为方舟编译器推出,最核心的成绩。


LeoGo科技


欢迎在点击右上角关注:「太平洋电脑网」,不定时放送福利哦。

我说说我的猜测:

Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称为安卓(Android)。可以肯定是,安卓刚好起步的时候,华为就有方舟编译器编译器的想法了。

为什么会有这种想法?2009年,华为准备开始了砍掉运营商定制的业务,刚好开始开始做华为自主品牌的手机。那么,华为选用什么系统,这是问题。按照华为的秉性,一开始就有了自主研发系统的可能性了。但是研发系统相当困难,所以还不如先用着安卓系统。

当时,使用安卓系统也是世界上潮流,我们站在上帝视觉的上看到,幸好当初选择安卓系统。但是,前段时间华为也承认有自己的系统,只不过是用来Plan B。那就说,华为一直都有自己的做系统的想法。

华为在研发系统的时候会参照安卓系统,甚至部分代码成为了安卓系统的一部分,作为了开源的代码。这个时候,华为发现了安卓的内核的效率相当低,那么应该怎么改进这一个问题。因此产生了方舟编译器。

为什么研发这么长时间,很大可能是在研发自己的系统的时候也在改进安卓系统,然后就提出了方舟编译器的想法,先是让部分的研究员进行研究,发现这是一个可行的方向,同时,华为因为消费者业务收入增加,经费更加宽松了,然后大规模投入研发。所以,时间比较长。

当然,方舟编译器的难度也相当大。

编译器是沟通高级编程语言和机器语言之间的枢纽,相当重要。这就意味着,你需要了解机器的专家,也需要熟悉不同计算机语言的专家,同时也需要相当熟悉安卓系统的专家。这些人才本身就比较难得了,还有一个问题,安卓系统相当庞大。

安卓系统的复杂程度超越了很多人的想象,这是一个系统,让APP在上面运行系统,复杂程度前所未有。所以,你看到,国内一个拿得出手的系统都没有,除了生态的问题,还有就是技术难度的问题。


太平洋电脑网


大家开始关注华为方舟编译器,大概是从华为P30系列手机发布会开始的,因为这次P30发布会PPT上,有三页提到了方舟编译器。短短三页内容,可能大家并没有在意,但是方舟编译器却是一个杀手级的武器,它发挥的对于安卓的系统的优化作用是颠覆性的,堪称是一场安卓的性能革命。

方舟编译器能够发挥这么巨大的威力,主要在于它不是简单地在应用软件层对APP本身做调整,而是在安卓系统底层做系统级的优化,这相当于在重造安卓系统,这样的工程既费时又费钱。所以,即便是像华为这样的大公司,也需要十年时间持续不断投入才能产生效果。

优化安卓系统是一场持久战

早在2009年,华为就创建了编译组,因为海思做了芯片以后,需要有自己的编译器才能真正发挥芯片的能力。从2013年开始,华为推出了自己的编译器HCC,用在基站领域,这可以说是方舟编译器的前身。到了2014年,以Fred Chow等为代表的众多技术人才加入,在2016年华为成立编译器与编程语言实验室,一直到现在推出方舟编译器。

编译器作为系统软件,真的是一个“板凳要坐十年冷”的工程,稳得住才能做下来,非常的复杂。毕竟是涉及到安卓系统底层的架构,需要的研发时间自然就更长。


华为方舟编译器的威力

安卓系统虽然在不断演进,但始终需要虚拟机来实现解释和执行。话句话说安卓程序的虚拟机中有解释器和编译器,相当于是有两个翻译在运行。解释器好像现场翻译,演讲者讲一句,就需要停下来翻译一句给编译器,编译器则结合上下文一次翻译一大段。两个翻译同时在搞,于是你听到的内容就是断断续续的,你的系统就会变得非常卡顿。

而方舟编译器的内存回收机制是随用随回收,回收时无需暂停应用,因内存回收的随机卡顿就消除了。其次,方舟编译器是在应用打包的时候直接编译出了机器指令,无需繁琐的虚拟机运行,彻底消除了虚拟机的动态编译的额外开销,从边翻译边执行到提前编译机器码直接执行(运行时无需再编译),大幅提升了效率,让性能得到大幅提升。用量化的方式可以很好地看到这种性能提升的效果:有了方舟编译器的手机,能实现系统操作流畅度提升24%,系统响应性能提升44%。以微博极速版为例,安卓9.0的apk是9.7Mb,安装后是37.5Mb,而使用方舟编译器后的安装文件apk是23Mb,安装完后大约不到50Mb。但是,使用方舟编译器后的性能提升却是颠覆性的,微博极速版的操作流畅度提升了60%!

像方舟编译器这样的颠覆性的技术创新,只是华为在软件领域不断突破和努力的缩影。华为正在凭借自己的技术实力和不断努力,重造安卓系统的体验。除了硬件的技术突破,软件也在用户体验中扮演越来越重要的角色。这就是软件的力量,通过持续的技术进步,持续的生态开放,让消费者感受到,华为的产品体验在进步,安卓系统的体验在进步。

赠人点赞,手留余香。我是小强Talk,欢迎大家关注我,和我一起共同成长进步!


小强Talk


我感觉就是另一种art,提前电脑编译打包,提高了安装速度。


lyytpqwe


没对比就没伤害,上世纪80年代就有几个大学生写出了一个mudos可以在第一次运行.c文件的时候译成机器码供下次运行时直接使用。和方舟的功能一样吧,而且更加先进!

华为说自己用重金花了十年的时间研发明显就是靠吹牛逼坑智商税。


分享到:


相關文章: