2019年科技行業有一個熱點“華為開源方舟編譯器”,編譯器這個名詞開始不斷的進入國人的視野。作為民族自主品牌的驕傲,華為為什麼投入巨大的人力開發方舟編譯器並將它開源,編譯器在華為乃至整個業界中到底處於什麼樣的地位呢?
撇開編譯器,我們先談談晶片。提到晶片,一直是國人痛心的地方,國內的媒體一直提到芯無力。2018年中國進口總額為14.09萬億元,在這14.09萬億元的進口商品中,進口晶片的金額近2.06萬億元(具體為20584.1億人民幣),約為全國進口商品總額的14.62%;進口石油的總金額是15881.7億人民幣(約為1.59萬億元),約為全國進口商品總額的11.28%,進口晶片的金額是石油的1.3倍。在最近十年的進口數額統計中,晶片進口的價值均超過了石油,缺芯已經緊緊的扼住了中國發展的咽喉。
為什麼需要編譯器
以當前最主流的晶片來看,桌面端CPU被Intel、AMD佔據,移動端被ARM、Apple統治,即使我們有新的效能相當的CPU出現了,真的就能立即替代這些霸主嗎?
以日常使用的手機為例。從使用者的角度來說,使用者並不關注手機裡面使用的是什麼CPU。評價手機好用與否的第一標準是手機開啟APP是否足夠快、網路是否足夠順暢等,當然如果這個手機裡面搭載的是中國芯就更讓我們驕傲了。甚至對於部分使用者,如果手機內搭載的是中國產CPU,即使效能稍微差一點,優先也會選擇中國產CPU的手機。但是很少使用者會選擇一款手機:使用中國產CPU、無法運行當前主流的APP(想象一下無法使用微信、支付寶、抖音的生活吧)。
當然也許有人會說可以讓阿里、騰訊等這樣的公司針對中國產CPU進行專門的開發。但是針對特定的硬體架構進行程式碼開發維護、效能除錯等會有巨大的開銷,大公司也許可以做到,但是還有更多的小公司呢,日常生活中總會有一些APP屬於比較小眾的那一款,在中國產CPU平臺上如果無法支援,或許就會成為你放棄這個平臺的理由。公眾對中國產CPU平臺的熱情被千千萬萬個小的APP消耗殆盡後,平臺將會不可避免的走向滅亡。
這就是現在經常說的晶片的生態系統的可怕之處。硬體不再是以單打獨鬥的形式出現,而是會與軟體進行捆綁,最終形成自己的生態系統,外來者很難闖入,這其中最出名的大概就是微軟和Intel組成的Wintel聯盟了。
什麼是編譯器
解開生態系統難題的其中一個重要的環節就是編譯器了。眾所周知,所有應用軟體都是使用相應程式語言(C/C++/Java等等)進行開發的,工程師使用程式語言中固定的詞彙和格式編寫,之後使用編譯器識別程式碼中的詞彙、句子以及各種特定格式,將它們轉換成計算機能夠識別並執行的二進位制形式。
編譯也可以理解為“翻譯”,類似於將中文翻譯成英文,它是一個複雜的過程,首先編譯器進行語法分析,也就是要把那些字串分離出來。然後進行語義分析,就是把各個由語法分析分析出的語法單元的意義搞清楚。然後是效能優化、生成可執行檔案。期間涉及到複雜的演算法和硬體架構。之所以複雜, 是由於它們具有處理多種問題以及相關資料集的能力。
通過編譯器,開發人員可以很方便的實現業務平臺的遷移,不需要修改業務程式碼,僅需要修改編譯平臺的配置,做到業務邏輯的一致。同時編譯器內部根據業務執行的平臺,對業務程式碼進行特定的優化,保證程式碼在硬體平臺上效能達到最優。同時編譯器不斷升級維護也不會對上層執行的業務程式碼產生衝擊,這樣所有的APP廠商針對新平臺的工作量會降到比較低的程度,大家的接受意願才會更強烈,編譯器最終的目標是幫助開發人員實現一次程式碼編寫,跨平臺執行。
國內現狀
當前,隨著國內手機廠商對系統優化的不斷深入,頭部廠商紛紛開始針對編譯器進行優化。華為最早開源了方舟編譯器,vivo有ART++,OPPO也推出了端雲智慧編譯等。
隨著國內晶片產業重視程度越來越高,越來越多的廠商開始真正重視晶片的研發並且意識到晶片生態系統的重要性,編譯器作為其中的重要一環,為未來自主作業系統的推出起到重要的基礎作用,也越來越被重視。而且國內計算行業的領頭羊華為在516事件後,將打造鯤鵬、昇騰系列晶片的生態作為重中之重,在可以預期的未來,國內的計算行業將會迎來一場變革,也許在這一波變革中我們會真正建立起自己的生態,在我們這一代人手中徹底打破芯無力的現狀。