《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 鴻蒙“不得已”的現(xiàn)狀

鴻蒙“不得已”的現(xiàn)狀

2022-08-31
作者:金捷幡
來(lái)源:金捷幡
關(guān)鍵詞: 鴻蒙

  一、2012實(shí)驗(yàn)室

  鴻蒙是個(gè)品牌,背后是n套核心的n套系統(tǒng)的組合。

  鴻蒙中的關(guān)鍵曾經(jīng)是方舟編譯器,鴻蒙的開(kāi)發(fā)代號(hào)還叫過(guò)Ark(方舟)。由于方舟團(tuán)隊(duì)的幾位離職負(fù)責(zé)人在網(wǎng)上寫(xiě)過(guò)回憶錄,所以我們能拼湊出當(dāng)初發(fā)生了什么。

  華為2012實(shí)驗(yàn)室有個(gè)了不起的組織架構(gòu),就是把研發(fā)實(shí)驗(yàn)室設(shè)到全球各地,這樣那些不想到深圳工作的牛人可以安心在本地,不用拖家?guī)Э凇?/p>

  當(dāng)然獵頭也更方便,不少實(shí)驗(yàn)室設(shè)在其它巨頭旁邊。

  從基站上的DSP到后來(lái)的麒麟和鯤鵬,華為自建編譯器團(tuán)隊(duì)越來(lái)越必要,來(lái)實(shí)現(xiàn)性能的優(yōu)化到自有指令集等等。

  世界軟件的燈塔在硅谷,所以華為編譯器團(tuán)隊(duì)就在美研所組建。中國(guó)軟件的燈塔之一在杭州,國(guó)內(nèi)編譯器團(tuán)隊(duì)集中在杭研所。

  美研所在2014年請(qǐng)到Open64編譯器的總架構(gòu)師周志德老爺子。也許由于Open64日暮西山,而蘋(píng)果支持的LLVM如日中天,不服氣的周老和小伙伴們做起Maple編譯器,這就是方舟的前身。

  Maple為什么改叫方舟,網(wǎng)上眾說(shuō)紛紜。一種說(shuō)法是周老的英文名字Fred Chow諧音就是“方舟”;另一種說(shuō)法是2012世界大難來(lái)了要方舟來(lái)救命,這和2012實(shí)驗(yàn)室的名字吻合。

  在孟晚舟被Maple國(guó)扣留以后,改名字更是大勢(shì)所趨。不過(guò)到今天方舟大量文件名仍保留了Maple或Mpl等。

  華為美研(Futurewei)在美帝制裁后,出現(xiàn)了個(gè)法律悖論。因?yàn)镕uturewei是美國(guó)公司,美帝沒(méi)法制裁,但它能限制Futurewei向母公司輸送技術(shù),后來(lái)華為員工好像也不被允許進(jìn)入Futurewei。

  大概因?yàn)槿绱?,華為對(duì)開(kāi)源模塊的合規(guī)非常謹(jǐn)慎,畢竟來(lái)自美帝的即使是外部的貢獻(xiàn)都得考慮刪改。如果這是“按揭開(kāi)源”的原因之一,我覺(jué)得特別能體諒。

  二、編譯器的進(jìn)攻方向

  現(xiàn)代高級(jí)編譯器多是三層架構(gòu): 前中后端。前端是翻譯各種語(yǔ)言,中端優(yōu)化,后端對(duì)應(yīng)出不同類(lèi)型CPU的機(jī)器碼。中間優(yōu)化的過(guò)程,經(jīng)常用IR來(lái)表示,比如MapleIR。

  周老設(shè)計(jì)Maple的初衷據(jù)說(shuō)是前端用Javascript,即MapleJS,這樣可以實(shí)現(xiàn)跨平臺(tái)和在輕量化的智能iot設(shè)備上運(yùn)行和優(yōu)化。

  機(jī)緣巧合,華為消費(fèi)者事業(yè)群(CBG)在努力實(shí)現(xiàn)對(duì)陣友商的安卓差異化時(shí),想到靜態(tài)編譯Java來(lái)實(shí)現(xiàn)速度上超越競(jìng)爭(zhēng)對(duì)手,立項(xiàng)聯(lián)合2012的幾個(gè)團(tuán)隊(duì)一起攻堅(jiān)MapleJava。

  雖然大家都知道Java虛擬機(jī)開(kāi)銷(xiāo)很大,安卓代碼翔山也多,但挑戰(zhàn)Google里頂尖高手們連續(xù)優(yōu)化了10年的虛擬機(jī)(ART),這個(gè)想法可以說(shuō)無(wú)比大膽。

  后來(lái)的事實(shí)證明,MapleJava這個(gè)思路有點(diǎn)天真了。

  三、MapleJava的碰壁

  MapleJava 1.0(即方舟1.0)可以說(shuō)比較成功,它驗(yàn)證了部分靜態(tài)編譯的app可以比在谷歌虛擬機(jī)上跑得快。

  此時(shí)剛好碰到美帝的無(wú)端制裁,所以余總裁高調(diào)宣布了鴻蒙和方舟編譯器。但這時(shí),MapleJava只是實(shí)驗(yàn)室產(chǎn)品。

  接下來(lái),方舟2.0的任務(wù)就清晰了,編譯適配各種商用APP和優(yōu)化方舟runtime。

  大量兼容性的困難隨之而來(lái),安卓十年的生態(tài)顯然不是一個(gè)編譯器就可以隨便破掉的。大家發(fā)現(xiàn)方舟runtime即使替換掉ART,也無(wú)法完全繞開(kāi)安卓核心服務(wù)。

  這樣,因?yàn)闊o(wú)法完全擺脫了安卓,整個(gè)這件事的政治價(jià)值大幅度降低了。

  更重要的是,拋開(kāi)各種bug和兼容性等負(fù)面因素,方舟編譯過(guò)的App比標(biāo)準(zhǔn)安卓App在速度上的差異并沒(méi)有預(yù)期那么大,在兩者都足夠流暢的情況下,意義在哪里呢?

  從今天看,MapleJava的方案被擱置。這也許是這百人團(tuán)隊(duì)中很多離職的原因。

  客觀(guān)地說(shuō),MapleJava是一次很牛逼的嘗試,起碼繞開(kāi)了谷歌虛擬機(jī)。遺憾的是,MapleJava的相應(yīng)runtime沒(méi)有完全開(kāi)源,這使得開(kāi)發(fā)者們沒(méi)法繼續(xù)發(fā)掘靜態(tài)編譯Java app的潛力。

  就在前幾天,微軟最新的Windows 11宣布采用英特爾Bridge編譯器在x86上原生支持安卓App。

  四、鴻蒙對(duì)標(biāo)誰(shuí)?

  MapleJava的不順利,導(dǎo)致了后來(lái)一系列宣傳上的困境,整個(gè)鴻蒙的戰(zhàn)略給社會(huì)帶來(lái)很多誤解。

  華為堅(jiān)持說(shuō)開(kāi)源鴻蒙(LiteOS,后叫Open Harmony)和手機(jī)鴻蒙(HarmonyOS)之間是有關(guān)聯(lián)的,雖然兩者內(nèi)核都不一樣。我們探究這種關(guān)聯(lián)很可能指方舟和通訊協(xié)議。

  早期方舟的開(kāi)源也許更重要,這畢竟實(shí)際展示了挑戰(zhàn)巨人的勇氣。方舟開(kāi)源包括了MapleC,這勉強(qiáng)可以看到對(duì)標(biāo)Clang-LLVM->蘋(píng)果Swift的一條路徑。如果手機(jī)鴻蒙選了這個(gè)路線(xiàn),應(yīng)該是鴻蒙在性能上追趕蘋(píng)果iOS的唯一選擇。

  蘋(píng)果是靜態(tài)編譯,加上自家編譯器對(duì)自研CPU/GPU/NPU的優(yōu)化,性能上是安卓沒(méi)法比的,而且硬件開(kāi)銷(xiāo)也是最小的。

  但是,MapleC這個(gè)路線(xiàn)還有n年的差距。說(shuō)服開(kāi)發(fā)者用開(kāi)發(fā)效率低的C/C++語(yǔ)言來(lái)做原生鴻蒙程序,是個(gè)不可能的挑戰(zhàn)。

  所以有傳言,華為會(huì)推出真正對(duì)標(biāo)蘋(píng)果Swift的自有語(yǔ)言:“Maple+倉(cāng)頡”。不過(guò)新語(yǔ)言的學(xué)習(xí)周期和生態(tài)建立,都需要非常長(zhǎng)的時(shí)間和投入。

  與此相關(guān)的是,如果華為不能長(zhǎng)期獲得ARMv9以后的授權(quán),倉(cāng)頡的優(yōu)化也許要從ARM轉(zhuǎn)到RISC-V。而RISC-V的生態(tài)差距仍舊過(guò)大,如何下手選擇兩難。

  那么在MapleJava之后,華為的選擇是什么呢?

  雖然最新的鴻蒙架構(gòu)圖里方舟runtime被稱(chēng)為方舟“多語(yǔ)言”運(yùn)行時(shí),但很多人覺(jué)得Javascript(MapleJS)是主打牌。

  五、Javascript的選擇

  Javascript是近年最紅的全棧語(yǔ)言,開(kāi)發(fā)效率最高,可以跨平臺(tái),甚至可以嵌入平臺(tái)內(nèi)作為子平臺(tái)跑,最典型的例子就是微信小程序。

  手機(jī)用JS做App的先驅(qū)是Palm的WebOS。WebOS和Palm Pre手機(jī)設(shè)計(jì)理念非常超前:多任務(wù)卡片,全屏手勢(shì),無(wú)線(xiàn)充電等都是多年后才被蘋(píng)果和安卓抄襲。

  WebOS的標(biāo)準(zhǔn)Linux+JS作前端的架構(gòu)更是有前瞻性,但它超越了時(shí)代,那時(shí)硬件性能支持JS App還是比較吃力的,甚至當(dāng)時(shí)程序員們還不覺(jué)得JS是個(gè)語(yǔ)言。

  WebOS失敗后,三星的Tizen/JS接棒再戰(zhàn),仍以失敗告終。

  多年以后,JS獲得了空前的發(fā)展。KaiOS, PWA等等JS生態(tài)野火重燃,加上硬件性能的冗余,鴻蒙原生JS應(yīng)用成功的概率提高了。網(wǎng)銀和電商App那種本來(lái)就是Webview不需要性能的更是沒(méi)有阻礙。

  谷歌ChromeOS和強(qiáng)大的V8引擎也背書(shū)了鴻蒙用JS拓展到桌面領(lǐng)域是完全可行的。

  當(dāng)然手機(jī)原生JS App的挑戰(zhàn)也很大,直接用現(xiàn)有框架(RN, Weex, Webview..)適配還是比較麻煩,而且很難調(diào)用底層和利用GPU等硬件特質(zhì),游戲性能也受影響。關(guān)于這點(diǎn),我還是很期待看到MapleJS的技術(shù)突破。

  六、務(wù)實(shí)的做法

  在上述JS生態(tài)建立前,鴻蒙手機(jī)的務(wù)實(shí)做法是同時(shí)支持安卓AOSP和原生JS應(yīng)用。但是鴻蒙手機(jī)系統(tǒng)未完全開(kāi)源,MapleJS應(yīng)用開(kāi)發(fā)框架仍不清晰,所以我們大多數(shù)人只看到了AOSP,外界出現(xiàn)了“套殼安卓”的聲音。

  在AOSP開(kāi)源的情況下,打造另一套未開(kāi)源手機(jī)生態(tài)的價(jià)值在哪里,也確實(shí)讓人困惑。

  如果芯片代工問(wèn)題最終可以解決,各種去美化的IP核仍能買(mǎi)到,華為重新走鴻蒙+倉(cāng)頡+麒麟的軟硬一體路線(xiàn),那將是非常有勇氣和值得欽佩的。這里先為華為保留海思團(tuán)隊(duì)點(diǎn)個(gè)贊。

  用于智能設(shè)備的開(kāi)源鴻蒙(LiteOS),在國(guó)內(nèi)自有知識(shí)產(chǎn)權(quán)和開(kāi)源iot生態(tài)已經(jīng)百花齊放的情況下,價(jià)值在哪里,不在本文探討范圍內(nèi)。

  我們目前看到的是,各種不同鴻蒙設(shè)備間的通訊機(jī)制(分布式軟總線(xiàn),或叫“萬(wàn)物互聯(lián)”),成為鴻蒙的最大賣(mài)點(diǎn)。

  七、谷歌的Fuchsia

  正巧在鴻蒙2.0開(kāi)源前,谷歌正式發(fā)布了Fuchsia。和沸騰黨說(shuō)的相反,谷歌很低調(diào),并沒(méi)有描繪Fuchsia的前景,只是說(shuō)它是一個(gè)適合“connected devices”的全新的安全的操作系統(tǒng)。

  從架構(gòu)看,F(xiàn)uchsia非常模塊化,適合拼裝快速開(kāi)發(fā)。它似乎在耐心等待各種模塊(輪子)被造出來(lái),而且鼓勵(lì)開(kāi)發(fā)者嘗試新一些的技術(shù): Rust/Dart/Flutter…這說(shuō)明谷歌這次并不著急。

  Fuchsia和安卓的未來(lái)關(guān)系沒(méi)有人知道,包括谷歌自己。對(duì)谷歌來(lái)說(shuō),擺脫Linux GPL和陳舊的JDK也一直是夢(mèng)想,但它知道這需要漫長(zhǎng)的時(shí)間和機(jī)緣,所以只能低調(diào)。

  試圖對(duì)比開(kāi)源鴻蒙2.0和Fuchsia我猜是徒勞的,兩者幾乎沒(méi)有共通點(diǎn),除了都號(hào)稱(chēng)微內(nèi)核。

  八、愿景

  值得八卦一下的是,LLVM和Swift之父Chris Lattner從蘋(píng)果跳槽到特斯拉主管Autopilot后,仍想把Swift引入特斯拉,結(jié)果他理念和馬斯克不合只半年就離職了。

  這看來(lái)像是沒(méi)有完成從工具到應(yīng)用的思路轉(zhuǎn)換,迷戀打造鋒利的菜刀超過(guò)了做菜。

  當(dāng)然這么草率評(píng)價(jià)大神,在一定程度上展示了我自己的愚蠢。這里只是想善意地祝福鴻蒙,不會(huì)因迷戀所謂工具而忘了初心。

  從我個(gè)人的狹隘視角看,鴻蒙的愿景仍不夠清晰:就是她最終能給用戶(hù)和行業(yè)帶來(lái)什么;“萬(wàn)物互聯(lián)”對(duì)用戶(hù)來(lái)說(shuō),和目前的工控、智能家居的區(qū)別有多大。

  如果鴻蒙放棄最終和蘋(píng)果的性能對(duì)標(biāo),退而和安卓比情懷和使用差異化,在芯片問(wèn)題懸而未決的情況下是務(wù)實(shí)而且無(wú)奈的做法,即使會(huì)讓一些開(kāi)發(fā)者失望。

  九、未來(lái)的挑戰(zhàn)

  華為雖然在產(chǎn)品線(xiàn)上完成了大量CT向IT的轉(zhuǎn)換,但坦率地說(shuō)其在IT核心技術(shù)(CPU/GPU/OS/關(guān)鍵軟件等)上仍存在差距。加之華為還要分兵打造去美化的芯片生產(chǎn)體系,綜合挑戰(zhàn)是巨大的。

  即使在跨平臺(tái)編譯這個(gè)小領(lǐng)域,我們也看到英特爾的Bridge和蘋(píng)果的Rosetta都展示了硬硬的肌肉。從情感上我們期望一家中國(guó)公司就能全方位席卷全球的各個(gè)科技巨頭,但冷靜和腳踏實(shí)地還是需要的。

  如果華為能充分發(fā)揮CT上的領(lǐng)先優(yōu)勢(shì),把核心CT做成組合專(zhuān)利和軟件IP組件的霸主,也許更符合任總今年“專(zhuān)注于軟件”的戰(zhàn)略。舉個(gè)也許不恰當(dāng)?shù)男±?,去年的”多屏協(xié)同”功能就很不錯(cuò)。

  參考微軟從痛罵開(kāi)源到擁抱開(kāi)源,本人認(rèn)為華為應(yīng)該重新考慮一下出山領(lǐng)導(dǎo)Open RAN。

  在極端困難的情況下,華為已經(jīng)做到了超乎想象的勇敢和堅(jiān)韌,“軟件化和IP專(zhuān)利化”也許正是浴火重生前的“黃沙百戰(zhàn)穿金甲”。

 更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<

微信圖片_20210517164139.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀(guān)點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。