來源:量子位
近日,華為要自主研發編程語言的消息忽然在網上火了。
據微博博主 @IT 工程師 稱,華為正在研發新的自主編程語言倉頡,領頭人是南京大學的計算機科學與技術系博士生導師,馮新宇。
△圖源微博 @IT 工程師,經授權
目前這件事尚未得到官方證實,但據知乎 @匿名用戶 透露,華為有意研究自己的程序語言,在行業內早已是公開的秘密。
「華為自研編程語言并非秘密」" 編譯器實驗室早已有之 "
事實上,華為在編譯器與編程語言方面早有動向。
方舟編譯器,就是華為在編譯器方向的研究成果之一。
2019 年 8 月 31 日,華為在開源平臺上放出了方舟編譯器的源代碼,這是華為首個完全自主研發的編譯器平臺。
知乎 @養貓的哈士奇表示,華為 2012 實驗室的中央軟件研究院下面有一個編譯器與編程語言實驗室,這個實驗室已經存在很多年了。
從拉勾網上的招聘信息可以看見,華為 2012 實驗室的中央軟件院下面的確有一個編譯器實驗室 & 芯片軟件協同設計部,「在編譯器及芯片軟件協同設計領域耕耘 10 余年」。
△圖源拉勾網
那么,為什么要進行這方面的研究?
知乎 @養貓的哈士奇 表示,去年一次交流中,華為消費者 BG 軟件部的總裁王成錄博士,提到了華為為什么要搞這個實驗室、做編譯器這些東西。
簡單來說,就是華為很早以前就發現,在核心網設備上自己編譯,可以大大提高性能(通信設備也是有性能要求的),后來就開始有小規模的團隊來做編譯。也就是說,在做方舟編譯器之前,華為已經做了很多年編譯的相關工作了。
在做智能手機的過程中,華為想把手機做到像 iPhone 一樣流暢,但遇到很多困難,其中很重要的一點就是 Android 的虛擬機機制。
所以他們做了一個很重要的決定——(研發)方舟編譯器,事實上這不僅是針對手機平臺、還包括通信設備等,將華為所有的編譯工作都統一起來,全面提升效能。
然而,方舟編譯器面臨著 Java 的反射機制等問題,這些是需要解決的。
所以,對于這次消息稱華為要自研編程語言的消息,知乎 @養貓的哈士奇 推測,自研編程語言是遲早要邁出的一步。
" 相關領域專家加入 "
此外,有知乎網友爆料,華為近段時間在相關方向的招人也非常大手筆。
2014 年的時候,華為在美國的研究實驗室就聘用了 Peng Wu,她此前曾經在 IBM 工作十幾年,是并行計算語言和編譯器領域的專家,曾經獲得過 2012 年 PACT 的最佳論文獎。
據 Peng Wu 在領英上的資料,她于 2014 年 12 月加入華為編譯器 Programming Technologies Lab 任資深總監,并于 2019 年 5 月加入華為的美國子公司 Futurewei,擔任技術總監,負責編程語言的設計、編譯器框架的設計。
△圖源領英
而就在今年,華為在愛丁堡大學成立了編程語言實驗室(Programming Languages Lab),又找了 Dan R. Ghica 做總監,目前,這個實驗室已經在招聘編程語言工程師的博士實習生。
△圖源愛丁堡大學官網
從谷歌學術來看,Dan R. Ghica 的主要研究方向就是編程語言,h-index 達 22,論文一共被引用一千余次。
△圖源谷歌學術
而這次傳言中負責「倉頡」的教授馮新宇,究竟是什么人呢?
馮新宇為何人?
根據南京大學的官網介紹,馮新宇教授本碩畢業于南京大學計算機科學專業,此后于耶魯大學就讀計算機科學博士,期間曾經在 AT&T 實驗室實習。
△圖源南京大學官網
馮新宇教授主要從事程序驗證、并發理論、程序設計語言理論方面的研究,是我國高校編程語言方向的專家。
2010-2017 年期間,馮新宇教授曾經在中科大就任教授,并于 18 年以后來到南京大學,目前在南京大學就任教授,并于 2019 年帶領團隊獲得 PLDI 杰出論文獎。
知乎 @匿名用戶 表示,馮新宇教授可能是在大陸高校就職發 POPL 和 PL 頂會最多的人(之一)。
此外,馮新宇的導師、中科大少年班的校友邵中教授,碩博畢業于普林斯頓大學,對編程語言及編譯系統了解非常深入。
△圖源中國科學技術大學官網
邵中教授曾為 SML 語言研發編譯器 SML/NJ,對 " 帶證明可信軟件 " 領域有深入研究,在 POPL 上發表過 5 篇論文,也是國內首個在 POPL 上發論文的學者。
谷歌、蘋果已有自研編程語言
事實上,谷歌與蘋果都已經推出了自己的編程語言。
谷歌于 2009 年就推出了 Go 語言,這門語言設計的目的,是為了在運行速度快的同時,編譯速度也不錯,同時也更容易上手編寫。
這也使得 Go 語言的語法限制較多,但它的確找到了 " 運行速度 "、" 編譯速度 " 和 " 上手容易 " 三者的平衡點,成為目前較受歡迎的編程語言之一。
而蘋果也于 2014 年在 WWDC 上推出了自己的 Swift 語言,并憑借著類似于 Python 的易用性、和較強的運行效率,一度在當年躋身成為最受歡迎 TOP 15 的編程語言之一。
對于尚未面世的「倉頡」
對于華為這次的自研編程語言「倉頡」,許多網友表達了自己的看法。
1、走穩些,開源幾乎是必須的
事實上,我國此前并非沒有 " 自研編程語言 "。
今年 1 月份,中科院計算技術研究所推出了 " 木蘭 "(μ lang),這是一門基于 Python 實現的編程語言。
然而 " 木蘭 " 項目負責人劉雷,卻用了 " 完全自主設計、開發和實現 " 來形容這門編程語言。
中科院官方隨后回應,劉雷 " 夸大宣傳 ",這樣的說法屬于 " 虛假陳述 ",這門語言也逐漸消失在大眾視野中。
△" 木蘭 " 猜數字例程,圖源知乎 @吳烜
有了 " 木蘭 " 的先例,針對這次華為的「倉頡」,知乎 @吳烜 認為,國產編程語言應該走穩些,而且開源幾乎是必須的。
吸取木蘭的一些教訓吧,趁早開源,盡量避免以訛傳訛。如果目標是通用編程語言,就要和現在市場上的英文編程語言在開放性上對齊。開源幾乎是必須的。在此特殊時期,必然被放到顯微鏡下看,不如早作準備。
2、不應僅僅為了解決 " 自研 "
針對這次的新聞爆料,知乎 @DBinary 則認為," 自研 " 不應是重點,「倉頡」應該拿出更有說服力的價值體現。
一門語言要發展,先不說生態,好歹說說這門語言誕生出來為了解決什么問題。而這個叫倉頡的語言,難道就僅僅是為了解決 " 自研 "?
如果只是拿自研編程語言這件事來說,真的不是很高大上的事情,你看我自己就寫了一個叫 StoryScript 的語言,從詞法分析器開始寫,編譯器、虛擬機、調試器、一應俱全。這個語言,除了我之外應該沒有第二個人會用了,不是因為語言高大上,而是因為沒人看得上。
3、不要用 "Char" 當英文名
當然,如果僅僅就事論事,知乎 @蘇遠 表示,從爆料的「倉頡」英文名 Char 來說,其實不是一個好選擇,希望正式發布時,選個更好的名字。
Char 在計算機里是字符的意思,幾乎所有編程語言里都有 Char 的概念。 如果一個新語言名字和一個計算機通用術語重名,在內容搜索方面已經先天處于不利地位。 開發者想查找倉頡的資料,一定會充斥著大量的無關信息。按照權重排名,很可能前五頁都沒有倉頡語言的結果。
那么,對于華為自研編程語言「倉頡」一事,你怎么看?
@IT 工程師 的微博:https://weibo.com/1749224837/JiAFh0oFM?type=repost#_rnd1599465214374
知乎 @吳烜 的回答:https://www.zhihu.com/question/418762759/answer/1452144290
知乎 @蘇遠 的回答:https://www.zhihu.com/question/418762759/answer/1458729514
知乎 @養貓的哈士奇 的回答:https://www.zhihu.com/question/418762759/answer/1459388553
知乎 @DBinary 的回答:https://www.zhihu.com/question/418762759/answer/1458923757
知乎 @匿名用戶 的回答:https://www.zhihu.com/question/418762759/answer/1454618474
參考鏈接:
https://cs.nju.edu.cn/xyfeng/research/feng-cv.pdf
https://www.lagou.com/jobs/6842654.html?show=
https://blogs.ed.ac.uk/he-lab/2020/08/26/phd-internship-programming-language-engineer/
https://www.cs.bham.ac.uk/~drg/pubs.html