鴻蒙是不是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去。
“ talk is cheap ,show me the code ”