方舟編譯器帶來更多話語權,國產編譯器仍需提高自主性

2020-12-12 DeepTech深科技

2019 年 8 月底,華為方舟編譯器(OpenArkCompiler)正式開源。一年多來,方舟編程體系陸續實現了編譯器、引擎、調試器的開源。

方舟編譯器的「走紅」,也讓編譯器這一技術性話題逐漸廣為人知。那麼,編譯器的重要性有哪些?中國在編譯器方面是怎樣的現狀?還有哪些不足?

近日,DeepTech 和鑑釋科技首席架構師劉新銘進行了對話。他目前主導該公司面向 DevOps 的靜態代碼分析工具的核心研發工作,曾任惠普編譯器技術實驗室主任,領導基於惠普安騰處理器的編譯器開發工作。在開發和交付高性能計算系統(HPC) 編譯器和性能分析工具方面擁有數十年經驗。

以下為整理後的採訪實錄:

DeepTech:您覺得編譯器對於作業系統以及生態的重要性體現在哪些方面?

劉新銘:我的第一個觀點是編譯器一定要做。編譯器是世界上第一個電腦軟體。在沒有編譯器之前,只能靠會寫彙編的人去編譯電腦軟體。這需要很大的工作量,而且需要很高的專業技術能力。所以編譯器的存在是非常有必要的。有了編譯器才會有作業系統,才會有生態。所以如果國內不做好自己的編譯器,就很難在這個生態中紮根。在 2000 年左右,谷歌剛創立時只招聘兩種人:第一種是做作業系統的人;第二種是做編譯器的人,其餘一概不招。如果按照當時谷歌的條件在國內的軟體行業去篩選人才,可以寫核心算法的人,目前在全國也許不超過 300 人。

所以想要紮根,編譯器是一個開始,需要給予足夠的重視。但這是一條很艱辛的路程。比如在之前 2000 年到 2010 年左右,我在美國負責安騰伺服器生態系統的編譯器部分的工作。為了要完成這個生態系統,公司設定了一個目標,要達到 6000 個應用以上,並且要調到最優,才能賣出去。

很多人認為開源很好,可是開源在國內常會變成拿來主義:自己做的東西不開源,老用別人開源的東西。但是這種做法不可持續,在三兩年之後,很可能自己的東西和開源的東西無法融合在一起。

我的第二個觀點就是編譯器不但要做,還要掌握控制權。要有我們自己的創新性和自主性,而且要有發言權。比如中國的軟體在國外是沒有發言權的,我們做得再好,對方不允許進入或者需要等很久,也是沒有用的,因為它開源的軟體可能已經達到很高的高度。每次整合,都需要花費六個月。所以發言權很重要,在 GCC (GNU Compiler Collection,GNU編譯器套件)的領域,我們需要守門人(gate keeper)點頭。等守門人點頭排隊就需要三個月。就鴻蒙和方舟而言,中國人可以自己有發言權,這是很重要的。「點頭」 這件事請的重要性很多人尚未意識到。要有 「點頭」 的權力,最重要是要有優秀的人才,這樣才能做開源、做需要的創新。比如我在這方面有幾十年的工作經驗,技術水平超越了很多人,對編譯器有深度的了解,去管理這門技術的研發別人才會信服我。

第三個觀點,我認為做軟體不能浮躁,要靜下心來做事。我們需要長時間的積累,也要鼓勵年輕人做技術上的積累,不斷學習、不斷思考,要有和鍾南山一樣的精神。

DeepTech:您感覺我們現在國內的編譯器生態相較國外是怎樣的狀況?

劉新銘:我認為差距又增加了一年。我們仍然沒有在做核心的事情,無法做核心的事情,就無法進入主流,無法引領未來的趨勢。

比如 2018 年圖靈獎,兩位獲獎者,一位是斯坦福的 John LeRoy Hennessy(約翰軒尼詩)教授,還有 UC 伯克利分校教授的 David Patterson(大衛帕特森),他們兩位合力做出了現在 CPU 基礎架構設計的理念和方法。即現在最流行的晶片,包括 ARM 晶片在內都在用的 RISC 伺服器。

對於摩爾定律結束後,該如何繼續推動 IT 繼續發展,他們認為需要依靠:特殊場景的語言 (domain-specific language/DSL)、特殊場景的編譯器 (domain-specific compiler)、特殊場景的架構 (domain-specific architecture)。特殊場景,我認為這四個字可換為 AI。谷歌在做 AI 的語言,仍在進行中。國內迎頭趕上比較難,因為多數做晶片的公司,都將資源集中至硬體方面,做軟體的資源不足,做不了編譯器,這是事實。有目共睹的是,別人看到我們只做硬體,所以先從軟體方面卡脖子。

DeepTech:您覺得國內如果想突破的話,應該如何去做?

劉新銘:首先,我們的產業界要合作,不應該再單打獨鬥。打個比方來說,十家企業一人一塊錢,一共十塊錢,凝聚在一起,十塊錢能做的事遠比一塊錢要多。產業要合作,把各方的資源整合在一起,發揮優勢,凝聚起來,在做好硬體的同時,去做軟體,做編譯系統。第二,既然要合作,就不要各自為營,各做各的,需要配合協作。

第三,需要重視人才的培養。全國還在教編譯器的學校幾乎已經不存在。我們需要把編譯器這門課變成選修課,提起我國學生對編譯器的興趣。當然教師也需要改變觀念,不僅僅是寫好學術論文,要做基礎建設,更要注重實踐。比如國外的一些老師做研究前都會搭一個完整的架構。所以國內的老師們可以改變觀念,用方舟做我們自己的軟體編譯器的基礎架構,而不是用國外的。

相關焦點

  • 點評方舟編譯器開源:如同嬰兒般帶來新希望
    八月份,方舟編譯器開源官網已經上線,同時框架代碼同步對外公布。這次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中間表示(IR)和語言編譯實現,同時搭配編譯器其他二進位組件,實現Java程序到aarch64彙編指令的編譯過程。
  • 華為方舟編譯器開源了哪些內容?
    華為方舟編譯器開源官網8月31日正式上線,方舟編譯器代碼正式出現在華為開源平臺HUAWEIOpenSource上。方舟編譯器是華為自研作業系統鴻蒙OS的重要組成部分,本次方舟編譯器框架代碼的正式上線,也意味著華為鴻蒙OS向開源走近了一步。
  • 華為方舟編譯器解讀 如何讓手機性能再突破
    華為方舟編譯器採取了靜態編譯的方式,是目前第一個取代了安卓虛擬機模式的靜態編譯器,業界首個多語言聯合優化的編譯器,開發者在開發環境中可以一次性將多語言統一編譯為一套機器碼,運行時無需產生跨語言帶來的額外消耗,並可以進行跨語言的聯合優化
  • 華為「黑科技」方舟編譯器解讀,帶來安卓系統新革命
    華為在2019春季新品發布會上,正式發布了華為方舟編譯器,這一編譯器能顯著改善安卓應用編譯效率,根據華為官方測試數據,方舟編譯器能夠使系統操作流暢度提升24%,系統響應性能提升44%的收益,第三方應用重新編譯後流暢度可提升60%。
  • 解讀| 華為方舟編譯器的革命性到底體現在哪裡?
    這四個問題,也是華為試圖通過方舟編譯器解決的問題。華為方舟編譯器是如何解決問題的?在回答這個問題之前,先看一下華為從事方舟編譯器工作的時間線:2009 年,華為啟動 5G 基礎技術研究的同時,開始創建編譯組,第一批海內外研究人員加入。2013 年,華為推出面向基站領域的自研編譯器 HCC,並正式提出編譯器框架構想。
  • 華為方舟編譯器開源了,還公布了這 45 個合作夥伴
    ▲ 方舟編譯器框架 圖片來自:方舟編譯器官網方舟編譯器面向全球開發者進行開源,因此官方網站和託管平臺同樣向全球開發者開放,英文網站已在開發和內測中,計劃於 2019 年第四季度上線。這裡有必要複習一下方舟編譯器的概念。
  • 華為方舟編譯器是什麼怎麼用 開源後多久編譯時間介紹
    今天下午,華為開發者大會(HDC2019)在東莞松山湖召開,大會上華為消費者業務CEO、華為常務董事餘承東稱,方舟編譯器未來支持多語言統一編譯。  華為消費者業務CEO餘承東稱,方舟編譯器未來支持多語言統一編譯,大幅提高開發效率,支持C/C++、Java、JS和Kotlin等。
  • 華為方舟編譯器深入解讀:已有45款第三方應用
    8月31日,華為方舟編譯器(OpenArkCompiler)正式開源,官網已上線,原始碼包、二進位包已提供下載,相關文檔、演示等資料也一應俱全。本次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中間表示(IR)和語言編譯實現,同時搭配編譯器其他二進位組件,實現Java程序到aarch64彙編指令的編譯過程。
  • 華為宣布方舟編譯器8月31日開源,友商上船嗎?
    華為稱使用華為方舟編譯器後可系統操作流暢度將提升24%,系統響應將提升44%,三方應用操作流暢度將提升60%,並稱這是「安卓性能革命」,在會上,華為還承諾開源方舟編譯器。華為之所以敢說方舟編譯器是「革命」,和其編譯器的高效有關。什麼是「編譯器」呢,簡單來說,「編譯器」就是將我們能夠理解的語言「翻譯」為計算機能夠理解的以0和1構成的語言。
  • 華為終於放出方舟編譯器原始碼,網友:硬核項目
    社區參與者可以通過框架源碼學習方舟編譯器的編譯器中間表達(IR)及基本的中端編譯框架,熟悉方舟編譯器的架構思想,並參與諸如對編譯器中端優化的貢獻。方舟編譯器終開源早在8月29日晚,華為就放出預告,在8月31日開源方舟編譯器,很多用戶一大早就開始等待了,大家感受下氛圍:但是直到下午3點左右,開源方舟編譯器官方才能夠訪問。到了傍晚,華為才正式放出代碼,但從代碼的時間線來看,「趕工」痕跡明顯。
  • 華為方舟編譯器正式支持C語言:完全開源
    2019年8月底,華為方舟編譯器(OpenArkCompiler)正式開源,邁出了跨越性的一步。一年多來,方舟編程體系陸續實現了編譯器、引擎、調試器的開源,其中編譯器的重點功能主要集中在Java應用程式靜態編譯上。
  • 華為方舟編譯器:支持 C 語言編譯新功能開源
    IT之家10月14日消息 據方舟編譯器官方消息,方舟支持 C 語言編譯新功能已開源。據介紹,自 2019 年 8 月開源以來,方舟編程體系已經陸續實現了編譯器、引擎和調試器的開源,編譯器的重點功能主要集中在 Java 應用程式靜態編譯上。
  • 華為方舟編譯器完整開源為何要10年?看看專家怎麼說
    華為方舟編譯器完整開源為何要10年?必備】 微信掃一掃,我知道了 8月31日,華為官宣方舟編譯器正式上線
  • 方舟編譯器 Toy Runtime 可以運行 Hello World 了
    方舟編譯器 runtime 參考實現 pacific 發布了 0.1 版本,支持運行基於方舟編譯器的 Hello World 程序。發布公告介紹,pacific 開發團隊使用 QEMU 提供 AArch64 架構支持,將方舟編譯器的 Java 環境巧妙地用 GNU/Linux 的方式仿製了這套可以跑 Hello World 程序的 Toy Runtime。據了解,pacific 是目前業內首個方舟編譯器 runtime 實現,「實現了從 0 到 1 的一個跨越」。
  • 華為方舟編譯器:支持C語言編譯新功能已開源
    【天極網手機頻道】據華為方舟編譯器官方消息,方舟支持C語言編譯新功能已開源。   據介紹,自2019年8月開源以來,方舟編程體系已經陸續實現了編譯器、引擎和調試器的開源,編譯器的重點功能主要集中在Java應用程式靜態編譯上。
  • 榮耀V20更新方舟編譯器後體驗如何?看看用戶怎麼說
    5月份,榮耀V20迎來了方舟編譯器的升級更新。升級之後,系統就是一個字,快!下面一起看下用戶實際體驗吧。雖然現在僅有一個微博極速版APP經過了方舟編譯器的編譯,但筆者還是對比測試了一下其他APP啟動速度。根據官方的介紹,方舟編譯器大概可以分別兩部分——系統方舟和APP方舟,我們今天通過APP啟動速度看下系統方舟編譯後的整體效果吧。
  • 華為開源方舟編譯器的意義究竟有多大,或許能「拯救」安卓手機?
    不過值得大家關注的不僅僅只有新品手機發布,在前不久結束的華為開發者大會上,華為公布了鴻蒙OS及方舟編譯器的具體開源時間。這一消息的公布無疑讓眾多開發者為之欣喜。相比新手機的發布,個人覺得華為鴻蒙和方舟編譯器對於整個行業來說影響力會更重要一些!
  • 華為方舟編譯器開源細節:45家合作夥伴公布,英文站Q4上線
    據IT之家消息,8月31日,華為方舟編譯器開源官網正式上線。(網址為https://www.openarkcompiler.cn/home)。官網概述顯示,方舟編譯器是為支持多種程式語言、多種晶片平臺的聯合編譯、運行而設計的統一編程平臺,包含編譯器、工具鏈、運行時等關鍵部件。方舟編譯器還在持續演進中,陸續將上述能力實現和開源。
  • 華為方舟編譯器開源細節:45家合作夥伴公布,英文網站Q4上線
    IT之家8月31日消息 今日,華為方舟編譯器開源官網正式上線。(網址為https://www.openarkcompiler.cn/home)。官網概述顯示,方舟編譯器是為支持多種程式語言、多種晶片平臺的聯合編譯、運行而設計的統一編程平臺,包含編譯器、工具鏈、運行時等關鍵部件。
  • C語言初學者該如何選擇編譯器?哪個編譯器好用?
    剛開始學C語言,很多人都不知道該如何選擇一個編譯器。C語言相對其他程式語言來說,編譯器比較多,網上眾說紛紜,在這裡,我以親身學習經歷說明新手該如何選擇編譯器。一、該開始接觸C語言,一定用VC++6.0初學C語言,用的編譯器多數是visual C++6.0,因為大多數C語言入門書籍上都是以VC6.0作為教學軟體的,因此它作為入門級C語言編譯器是首選。