来源:量子位
近日,华为要自主研发编程语言的消息忽然在网上火了。
据微博博主 @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