国产编程语言「木兰」被扒原是 Python,中科院相关人员已停职

国产编程语言「木兰」被扒原是 Python,中科院相关人员已停职

原创:HyperAI超神经

关键词:国产编程语言 木兰 道歉

短短 3 天时间,标榜国产编程语言「木兰」就经历了重重风波。「木兰」被质疑「换皮 Python」的事件陷入舆论中心,大家应该已经有所了解。

就在今天下午,中科院计算所对此事做出了回应,已对当事人刘雷做出停职检查的决定,并就管理责任责令编译实验室负责人作深刻检讨。

中科院计算所于 1 月 19 日下午 14:42 分发布了通告

从发布到被揭露,仅用 24 小时

1 月 15 日,由中国科学院计算技术研究所(以下简称中科院计算所),计算机体系结构国家重点实验室编译组主导研发的国产编程语言「木兰」正式发布。

发布会上,团队负责人刘雷副研究员介绍「木兰」编程语言体系研发过程及应用进展

结果,前脚因国产、自主研发而刷爆媒体头条,后脚就引来了质疑,很多开发者下载试用之后严重怀疑其「换皮 Python」。

不仅对话框、函数等类似 Python,就连安装包图标也与 Python「神似」

质疑声愈演愈烈。「木兰」项目的负责人、中科院计算所计算机体系结构国家重点实验室研究院刘雷已经在 1 月 18 日进行情况说明并道歉。而此前公布的「木兰」下载地址已经 404。

遭此质疑风波之后,「木兰」的下载链接已经无法打开

「我们做了很多工作,只是扩大宣传而已」

对于木兰「套壳」事件,网络上已经闹得沸沸扬扬,纷纷丢出质疑证据。

知乎上一位开发者称「木兰就是 Python3.7.4 换了皮肤」

一个个的质疑实锤抛出来,「自主研发」的外衣披不住,当事人很快坐不住了。

1 月 18 日,项目负责人、刘雷及时发布了情况说明,承认自己在接受记者的采访中有夸大的成分,并对本次事件「在网络上造成的不良影响」表示「郑重道歉」。

刘雷关于「木兰」编程语言的情况说明全文

接下来我们对这份「情况说明」进行一个简单解读。

【情况说明重点 1: 】

一、在语言规范上借鉴了 Lua 语言的特性并进行了扩展,增加数据表达方法等新的特性;

二、开发了支持少儿编程教育的可视化编程环境;

三、针对 8 位 AVR 单片机,实现了相应的编译器和运行时系统,开发了能模拟多任务执行的虚拟机。以上产品已经在数百所中小学中,开展了 10 万人次的编程科普活动。

【解析】

只有第一条是在「木兰」的 exe 文件中体现出来,第二、三条都尚未发布。注意第一条中的「借鉴 Lua 语言」,知乎用户 @刘缙 对此发出质疑:

他「设计」的这个「新语言」能够在语法规则上一一对应到 Python AST 节点的唯一可能,就是这个语言从一开始就是在 Python 语法上小改的,语法结构都没动,只能改到关键字拼写,缩进改括号这个程度。任何跨语句的语法改动都会造成无法简单映射到 Python AST。但在刘雷的说明里,声称这个语言「借鉴了 Lua」,你「编译」到 Lua AST 试试?

【情况说明重点 2:】

针对 STM32 单片机,我们是基于 Python 开源编译器进行的二次开发,也就是先将木兰语言的源程序转换为 Python 的中间表示(AST),再在 Python 虚拟机上运行。这就是在开发和运行环境中会包含 Python 系统的原因。

【解析】

知乎用户 @刘缙 对此做了进一步分析,总结道:「木兰」的语法,本是上就是改了一下词法的 Python。

@刘缙 对此给出的通俗解释

他表示,一位开发者反编译了「木兰」语言的实现,从中可以看到它的确自己写了一个 parser(解析器),但这个 parser 的每条规则都可以直接生成对应的 Python AST 节点。注意,不是翻译,不是对 AST 作变换,而是「木兰」语言的语法规则直接对应到 Python AST 的节点。

如果你学过 parser,应该明白只有一种情况能这样做:这个语言的语法本质上就是改了下词法的 Python。一个新设计的语法,不可能与另一个语法有如此简单的映射。然后它对整个 AST 的变换只有两个:给方法加上 implicit self。插入匿名函数。都是局部改动,AST 结构没变。比较搞笑的是第一项改动其实都不需要 parser,在 Python 里就能实现。

【情况说明重点 3:】

刘雷称他在 1 月 15 日接受媒体采访时,对木兰编程语言的介绍中,犯了以下错误:

1. 木兰编程语言主要是用于中小学教育,在介绍中将它扩大到智能物联领域。

2. 木兰语言在 8 位单片机上的编译器是本团队开发的,在 32 位单片机上的编译器是基于 Python 开源编译器进行的二次开发,但在接受采访中将木兰编程语言和编译器夸大为完全自主开发。

对于此次在网络上造成的不良影响,本人郑重道歉,对给中科院、中科院计算所带来的不良后果表示诚挚的歉意。本人感谢大家的监督与批评,并深刻反省,保证不再出现类似问题。

【解析】

承认错误,道歉态度诚恳,但使用的字眼都是「扩大」、「夸大」,所以说,没被发现就是「自主研发」,被发现了就是「夸张宣传」?

「木兰」背后:科研经费去哪儿了

除了用「换皮」冒充自主研发外,很多人也格外关注这个项目的科研经费问题。

知乎用户 @yang leonier 说,它挂着中科院的名号,实际上却是一个中科院的二级三级企业控股 20% 的小公司做的,把自己吹成「下一代物联网编程语言」,发布出来的产品却是一个只能用于「少儿编程」而且还不够用的、runtime 直接用 Python3 的早期版本出来忽悠人。

这让人不禁联想到网络上流行的一个笑话,一个上千万元经费的项目,层层分拨下去后,竟然只有一个程序员拿着几千元的酬劳来完成。

对此,一些人也很淡定,表示「日常骗经费为正常操作」、「毕竟面向经费编程」……

看来科研圈的水还是蛮深的,但是,纸里终究包不住火,作假之前,也别低估了同行们的智商。

参考资料:

https://www.zhihu.com/question/366698484/answer/977940891

https://www.zhihu.com/people/yang-leonier/activities