華為被曝自研編程語言“倉頡”
近日,華為要自主研發編程語言的消息忽然在網上火了。
據微博博主@IT工程師 稱,華為正在研發新的自主編程語言倉頡,領頭人是南京大學的計算機科學與技術系博士生導師,馮新宇。
目前這件事尚未得到官方證實,但據知乎@匿名用户 透露,華為有意研究自己的程序語言,在行業內早已是公開的秘密。
“編譯器實驗室早已有之”
事實上,華為在編譯器與編程語言方面早有動向。
方舟編譯器,就是華為在編譯器方向的研究成果之一。
2019年8月31日,華為在開源平台上放出了方舟編譯器的源代碼,這是華為首個完全自主研發的編譯器平台。
知乎@養貓的哈士奇表示,華為2012實驗室的中央軟件研究院下面有一個編譯器與編程語言實驗室,這個實驗室已經存在很多年了。
從拉勾網上的招聘信息可以看見,華為2012實驗室的中央軟件院下面的確有一個編譯器實驗室&芯片軟件協同設計部,「在編譯器及芯片軟件協同設計領域耕耘10餘年」。
那麼,為什麼要進行這方面的研究?
知乎@養貓的哈士奇 表示,去年一次交流中,華為消費者BG軟件部的總裁王成錄博士,提到了華為為什麼要搞這個實驗室、做編譯器這些東西。
簡單來説,就是華為很早以前就發現,在核心網設備上自己編譯,可以大大提高性能(通信設備也是有性能要求的),後來就開始有小規模的團隊來做編譯。也就是説,在做方舟編譯器之前,華為已經做了很多年編譯的相關工作了。
在做智能手機的過程中,華為想把手機做到像iPhone一樣流暢,但遇到很多困難,其中很重要的一點就是Android的虛擬機機制。
所以他們做了一個很重要的決定——(研發)方舟編譯器,事實上這不僅是針對手機平台、還包括通信設備等,將華為所有的編譯工作都統一起來,全面提升效能。
然而,方舟編譯器面臨着Java的反射機制等問題,這些是需要解決的。
所以,對於這次消息稱華為要自研編程語言的消息,知乎@養貓的哈士奇 推測,自研編程語言是遲早要邁出的一步。
“相關領域專家加入”
此外,有知乎網友爆料,華為近段時間在相關方向的招人也非常大手筆。
2014年的時候,華為在美國的研究實驗室就聘用了Peng Wu,她此前曾經在IBM工作十幾年,是並行計算語言和編譯器領域的專家,曾經獲得過2012年PACT的最佳論文獎。
而就在今年,華為在愛丁堡大學成立了編程語言實驗室(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