為什麼説華為新發布的方舟編譯器是個大殺器?_風聞
腕豪瑟提-2019-04-11 19:34
下文來源:百度貼吧用户@聯邦海軍夜神
計算機語言分為:機器語言——彙編語言——高級語言機器語言就是010101011011這樣的二進制代碼彙編語言是根據機器硬件來編譯成人類能看懂的語音的編譯語言高級語言就是大家編程常用的編程語言。比如C,比如JAVA。
好了,前情提要完成。
我來説下安卓為什麼會執行效率底下吧。
首先我們來看下IOS為什麼高效:IOS硬件-彙編採用的是統一的標準,而彙編-高級語言也是統一的IOS語言標準,所以,開發也是IOS的統一標準。
所以,只要程序代碼開始執行,就自動將整個程序彙編成彙編語言,在編譯成機器語言。(靜態編譯)
而安卓不同,安卓是通過JAVA虛擬機進行高級語言的編寫,然後通過JAVA虛擬機進行彙編成彙編語言在編譯成機器語言。
這中間隔了一個虛擬機,並且每個軟件開發公司的虛擬機和語言編寫習慣也有差距,每個編寫軟件也不同(開源的通病),加上各種原因,導致沒有辦法像IOS那樣一個程序輸入進去後就整個一起編譯了,只能一行代碼一行代碼的編譯。(動態編譯)
比如我寫一個FOR(I=1;I<100;I++)以及一個IF(i<100)(這是C語言的)
或者DO WHILE(I=1;I<100;I++)以及IF(i<100)(FOXPRO)
IOS的話,我只能用第一個,不能用第二個。而且我用第一個寫出來的東西都在我的彙編表和編譯表裏面,你程序出來了我就可以整個一起彙編編譯,不用一條一條的查找,,一個程序執行就直接整個程序全部變成0101010101這樣的二進制碼直接給計算機執行了。這個效率會高很多
安卓使用JAVA虛擬機,有些虛擬機版本支持第一個,有些支持第二個,有些兩個都支持,就看你怎麼寫。
於是,各個軟件公司寫的辦不同,有的是前一條是FOR,後一條就是DO WHILE了,有些又都是FOR,都有。
於是,編譯表和彙編表就得一條語句一條語句的對照編譯表和彙編表,一條一條的彙編——編譯——執行。
換個説法,IOS就是把一本書塞進去,全部變成了一部200分鐘的動畫片,只有一個OP和ED,而安卓就是把一本書塞進去,變成了一個12集的TV動畫,每一個都有OP和ED,
這樣説你們明白了麼?
而這個原因就是我前面所説的。
然後,方舟如果是真的話,這個是具有劃時代一樣的,他為安卓底層制定了一個標準,一個彙編和編譯的標準
其他不同版本的開發語言都可以通過它編譯後變成一個提供給安卓執行的統一的彙編語言給安卓編譯。
就如同把一部12集的TV整理到了B站的合集。而且還是去頭去尾的。
達到IOS的效果。
這樣,他必須容納安卓所有開發所必須的語音的彙編表和編譯表,來進行重新編譯彙編,整合成一個統一的標準。這個底層彙編和編譯開發的難度是巨大的,工作量也是巨大的。
但是,他整合了這個以後
以後所有的軟件都可以變成和IOS一樣,(雖然可能還是沒有一整部那樣的完美,但是合集已經先進多了),一個軟件編譯後全部變成1010110這樣的機器語言。
直接執行。這樣的技術,真的是劃時代的。
可以説,這真的是安卓底層開發的劃時代意義的標準,他樹立了一個標杆在這裏。
好吧,我再舉個例子
我就是SOC,別人給我説馬褲螺絲F很好看
我去B站搜索MF
於是,B站給了我3個方案
A方案就是一個完整的視頻,400多分鐘的MF從頭到尾的視頻。我點進去就可以全部看了,這個就是IOS。
C方案就是一個頁面下的一個一個的圖標,比如MF第一集,第二集這樣的,我要看一個,點一個,看完了關閉,再點下一個。這個是現有安卓的方案
B方案是一個MF的合集,我點進去,就可以看到視頻,旁邊還有從1-24集的列表,我可以想看哪個看哪個。而且這個還是自動去掉了片頭和片尾的。這個就是方舟編譯器達到的效果。
這樣,SOC在執行安卓APP的時候,執行效率理論上可以和A方案媲美,但是實際效果還是要等以後再驗證,但是肯定比C方案效率高很多。
最可怕的就是。以後如果華為用自己的系統了。那麼依賴方舟的特性。其他軟件甚至不需要根據程序員再根據華為新系統重新開發,只需要把在安卓上開發好的軟件再通過華為新系統的方舟編譯器(先暫時這樣叫)再編譯一次,就可以無縫從安卓移植到華為新系統上。
這就是底層開發和這個編譯器背後代表的最可怕的意義。
也就是説,華為如果放棄安卓使用新系統。有了方舟這個原理和大殺器,他甚至可以把安卓的生態原封不動的搬遷到自己的新系統上。
這才是殺手鐧。