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