方舟編譯器為什麼連華為都要花10年時間(2009年開始)並且重金研發才將其搞定?

黑土217712201


從事軟件開發十幾年,平時主要做的還是軟件層面開發,軟件開發完成之後就要進行編程,最後在機器上運行,絕大部分程序員很少關注編譯器這個層面是如何實現的,編譯器的工作量非常巨大,有點編譯經驗的人都會有點基礎,只是C語言裡面常見的編譯錯誤就能有多少,可見這裡面工作量的巨大,據說華為公司投入了至少上千人的做這個事情,而且這種事情還急不來需要穩紮穩打,不能有絲毫的馬虎,構建屬於自己的編譯器是走向自己做操作系統的第一步,這一步起步最難,也是最基礎的。

從09年華為就開始著手做這個事情,證明任何事情想要在技術上有所突破必須有十年磨一劍的耐性,華為公司這點做的的確讓行業內佩服,最主要像編譯器這種基礎性的研究工作不是一朝一夕的事情,而且國內本身底子就比較薄弱,也就是資金充足的公司才能玩的事情,國內研究這些前言基礎的公司從私企性質看就是華為互聯網公司幾個巨頭的機會更大一些,阿里的阿里雲系統完全的自主研發,也算是給國內科技公司爭了很多臉面,華為在自主研發上做的一直不遺餘力,在通訊領域,在芯片領域,在軟件上也在慢慢發力,特別是構建自己的生態系統方面也在加大力度。

能夠有自主研發需要有很大的魄力,布斯每個公司都有這種能力,畢竟研發新的東西或者基礎技術,需要時間和資金的支持,如果中間放棄前面消耗的一切都完蛋了,阿里雲的王堅在開始研發階段承受了最大的壓力,在12年的年會上也委屈的落下了眼淚,可見壓力之大,越是技術的跨度越大,需要磨練的經驗越多,承擔的壓力越大畢竟不是掙錢的部門在一起開會說話底氣都不足,時間久了信心就容易受到影響。

華為從開始就樹立了非常大理想和苑景,就是朝著世界第一去的,所以現在正在按部就班的向前走,為了達成目標肯定需要強大的技術支持,所以方舟實驗室就是充當這麼一個角色,未來技術的研發基地,也就是華為這種大公司才能有條件這麼去做,如果放在初創期的公司首先要想到的是如何生存,如何獲取現金流,如何採用商業的模式來運作,持續的花錢做事情對於任何一家都是都是要慎重考慮的事情,而且這種錢起來多未必真能見到效果,所以只有志向長遠的公司才會持續做的事情。

國內太多的互聯網公司就是一門心思的搞商業模式,對於核心在有了資金之後投入的也比較少,永遠也衝不到國際上,只會在窩裡橫。一個科技最後決定命運的還是技術能力,從各個緯度可以想象華為正在為自己的操作系統鋪路,正在構建自己的生態系統而努力。

希望能幫到你。


大學生編程指南


方舟編譯器為什麼連華為都要花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開發商,終端等等一起努力的結果!


千帆辰


謝謝您的問題。華為用了10年時間研發方舟編譯器,是因為條件和難度決定的。

方舟編譯器的定位很高。方舟編譯器本質不是內嵌在智能手機裡的軟件,華為將其定位於App 開發者工具,以及自研操作系統的一部分。華為的目的不僅是為了提升安卓的系統性能,而是將源代碼直接翻譯成機器代碼,讓APP的開發者將現有的安卓系統相關工程和APP編譯、轉移、兼容地應用於華為自己的操作系統。大道至簡,越是編譯出高效、簡潔的機器碼,越意味著編譯器和操作系統的有效交互。



方舟編譯器需要怎麼推進。第一,需要長時間的技術積累,一步一步成功的累計。第二,華為方舟編譯器是面向操作系統底層接口,是一項複雜困難、系統工程,需要公司有相當的綜合實力,華為的強大的技術研發能力是基礎,需要各專業協調和部門的協同推進。系統性和階段性體現在以下步驟上,2009年到2013年華為研發編譯器HCC,主要用於基站,同時也形成了基本的框架思路。2014年建立了主架構,2015年推出編程語言CM,2016年成立專門的實驗室,2017年到2019年研發並推出方舟編譯器。這時間對我們來說很長,但是對編譯器研發來說,每一步都不容易。第三,下一步,所以就要將方舟編譯器投入商用,一方面優化系統,另一方面構建生態。


方舟編譯器需要什麼投入。第一,需要技術研發人才,他們熟悉系統框架、系統應用、機器語言、高級語言,對安卓的生態非常瞭解,這樣才能做出與安卓系統配套的編譯器,但是也意味著工作量非常大。據統計,請直接參與編譯器開發的技術人員有上千人,這是引用了海外人員。第二,研發編譯器需要資金投入,據統計已經花了幾億美元。第三,方舟編譯器是一代一代華為研發人員投入大量精力,無數失敗和重來才換來的,他們最有發言權。
歡迎關注,批評指正。


追科技的風箏


感謝您的閱讀!

我試圖用最簡單的說法,和大家聊一聊方舟編譯器。我們大部分人其實對於這個概念是模糊的,大部分的消費者其實根本不會關心方舟編譯器是什麼?我們關心最多的是:你有了這個方舟編譯器,安卓手機還會卡頓嗎?

當然,餘承東給出的科普視頻,還是很簡單的將華為方舟編譯器進行了科普,我們還是用比較簡單的語言一起學習下:

我們打開一款聽歌APP,我們給出手機一個指令(點開APP),編譯器會將APP轉化為手機能夠識別的機器碼。但是,現有的安卓編譯器,在編譯過程中,會有VM(虛擬機),它會將我們的指令通過解釋器和編譯器共同作用,這樣就讓打開指令變的有點繁瑣,因為不是一步到位,就像剝桔子,我想吃一塊,給你剝一塊;邊吃邊剝!

而方舟編譯器是在我們下達指令後,直接打開運行,因為它在我們下載APP的時候,已經給我們編譯好了,不需要現在邊打開邊編譯了。這就像:我們吃桔子,需要邊剝邊吃,現在是直接打包成了罐頭,你只要打開蓋子就可以吃桔子了,不用剝!<strong>

這個過程難不難?難!華為花了數十年,解決了這個問題,而且重金。這裡面有沒有誇大的成分,我們不好說,可是它畢竟推出了,畢竟有效果,這就足夠了。我們在使用的時候,會問這個手機的系統的原理是什麼嗎?

其實,我覺得華為不可能花十年,重金研究方舟編譯器,這裡面研究的重點並不是方舟編譯器,我覺得是華為的系統,雖然,華為CBG軟件部總裁王成錄博士說華為編譯器是十年之功,因為這裡年的難點是在於:怎麼讓APK下載後就成了機器碼,直接執行。這就需要長期研發,因為它要求的是研發人員既精通高級語言,對各種框架等非常熟悉,又要對機器語言瞭如指掌!更何況是要適配谷歌生態!

而,我認為華為確實在此基礎上,肯定是在為下一步的華為系統的開發做準備,十年到如今,何止一個方舟編譯器,這裡面一定有華為對於未來生態的設想,以及華為系統的研發,這才是華為方舟編譯器推出,最核心的成績。


LeoGo科技


首先這款方舟編譯器真正面世的時間是2019華為春季新品發佈盛典上,當時餘承東在發佈會上正式發佈。根據華為介紹這款編譯器有個特點那就是能改善安卓應用編譯效率,尤其是從原先的邊解釋邊執行轉變為全程機器碼高效運行程序。當時隨著這款系統的亮相,外界同樣猜測不排除下一步華為佈局手機系統的野心。

來先看看華為方舟編譯器的研發路勁情況。據說這款編譯器至少花費了10年時間,2009年華為就創建了該團隊,也從那時候開始華為開始將打造自主的編譯器作為該團隊的目標。從發展路勁來看,2009-2013年華為開始研發編譯器HCC,2014年建立了主架構,2015年推出編程語言CM,而2016為了擴大成功轉化成立了專門的實驗室,於是乎從2017年到如今,這款方舟編譯器正式與開發者見面。其實從這個時間點來看,研發一款全新的編譯器時間跨度非常大,不僅耗費財力還耗費時間成本。

尤其是根據資料來看,方舟編譯器屬於底層編譯,這就意味著本身就需要克服各種複雜困難、系統工程,考驗著一個公司的綜合研發實力。優秀成果的背後離不開艱苦卓絕的奮鬥和長久的蟄伏。

再來看現在的安卓生態,想要突破安卓現狀卻並非易事,編譯器作為軟件開發中的“皇冠”研發難度極大。華為為了開發這款編譯器,花費10年,投入數百人的專家團隊,經過多次嘗試,最終做到了在兼容Java語言的基礎上,徹底實現了機器代碼的翻譯。

先不討論其他手機廠商用不用的問題,對於國內來說,如果想在編譯器、甚至整個偏底層的系統軟件方向有所突破,過去10年基本是不可能或者只能是“中國芯"研究單位。所以至少來看,華為這款編譯器的推出在某種意思來說是顛覆性的。從組裝到整合,再到核心元器件逐漸自主化、系統深度優化/自研,自己曾經放棄和退縮的道路,如今正在成為現實。


科技之窗


別小看這一個編譯器,它能極大地提升安卓系統的流暢程度,要是真的隨隨便便就能研發成功,每個手機廠商不都能研發出自己的編譯器嗎?

在介紹方舟編譯器的研發難度之前,我們先來了解一下什麼是方舟編譯器。目前安卓系統和安卓應用大多數都是使用Java 語言編寫的。雖然Java語言易於開發,但手機的CPU只能識別彙編指令,也就是我們在電腦課上學到的機器語言。對於這個問題,谷歌給出的解決方案是通過手機上的虛擬機進行同步翻譯,這種做法無疑佔用了更多的手機資源,對於那些使用了多種語言編寫的應用,虛擬機翻譯的時間就要增加,導致卡頓。


而華為研發的方舟編譯器就解決了這個問題。通俗易懂的說,就像你和老外交流,之前說請翻譯,現在直接帶了個翻譯器,直接在系統層面把Java等語言翻譯成CPU能識別的語言,從而提升系統流暢度。

至於其中的研發難度,絲毫不亞於芯片的研發。相信學過編程的朋友肯定聽過編譯器的恐怖,複雜性極高,不是隨便幾個程序員就能開發出來的。華為早在10年前就佈局方舟編譯器,投入了很多資源,就連Fred Chow這樣的技術大牛也加入華為。到了現在,光是參與了方舟編譯器研發的工作人員就高達上千人。至於其中的用人成本,我們可以看到,華為的獵頭招聘的普通工程師的年薪就高達50—100萬。

可能很多朋友對華為研發方舟編譯器表示不理解:耗費鉅額資金,研發成功後免費開源給友商和開發商,這不是筆賠本的買賣嗎?其實不然,華為的方舟編譯器直接威脅了谷歌在安卓系統中“絕對壟斷”的地位,相信有了這次的經驗,在不久來華為手機系統也會問世。到時候,就不是國產手機求著用安卓系統,還要被IOS系統吊打的局面了。不得不說,華為真有遠見啊!


不知道各位看官們是如何看待華為方舟編譯器的呢?歡迎在下方評論留言,讓更多人看到您的觀點,謝謝!


科飛貓科技公社


歡迎在點擊右上角關注:「太平洋電腦網」,不定時放送福利哦。

我說說我的猜測:

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


小米也研發了自己的編譯器,只不過被華為搶先發布了而已,不過小米注重用戶體驗,可能晚點發布,不會想華為那樣為了搶先發布草草了事的,相信你,內部消息


kepprl


不說別的就這一點,全世界的安卓手機哪個品牌可以媲美。都只是賺現成的錢


分享到:


相關文章: