点击上方“码农突围”,马上关注
这里是码农充电第一站,回复“666”,获取一份专属大礼包
真爱,请设置“星标”或点个“在看”
2020年1月15日,中国科学院计算技术研究所(以下简称中科院计算所)计算机体系结构国家重点实验室,由该实验室编译组主导研发的国产编程语言“木兰(Mulan)”正式发布。
此消息一经发出,引发不少开发者质疑。对于完全自主设计的“国产编程语言”,大家的期待都非常大,网友@沉迷单车的追风少年 就在第一时间前往官网下载。
下载完成后却发现图标有点不太对劲。纳尼?和python几乎一毛一样
这不明显是pyinstall打包的吗?该网友吐槽到:我发布pyqt的软件都知道换个图标,这么大的项目连图标都不换?
打开之后就是类似python一样的对话框
提供了这么多函数,和python几乎一毛一样啊
试一下反向破译一下,以为会加密,毕竟是一个商用软件,我们自己写pyqt有时候都加密
但是,结果一点加密都没有,直接破解了:
就是python写的啊。
同样在在知乎上也有很多开发者对此进行讨论。
很多开发者发现解包后的木兰语言其实就是建立在 Python 之上,将 Python 构建的环境、包和项目都编译成一个可执行文件。所以似乎木兰只是在顶层做了一个接口,将底层编译、优化等众多工作都交给了原版 Python?
如下所示为 EXE 文件的解包结果(采用 PyInstaller Extractor):
从解包结果可知,「木兰」语言是通过 Pyinstaller 将 Python 文件打包成 EXE 可执行文件。
根目录下有个driver,添加pyc文件头即可用uncompyle6来反编译:
只有两行,调用了runtime.main里的main函数。
这个文件被放在了pyz_extracted里
main里本身实现了不少东西
但你这个执行是不是有点……?
直接调exec,唯一的区别就是加了一个globals。
命令行版本里的repl里是做了一些处理的……虽然也没发现有什么改进的特性。
关于关键词看到不少同学都是试出来的func2333,这里有一个list:
不忍看下去了。。。
所以它到底跟python有多大区别嘞(⊙o⊙)?
还有说好的面向智能物联应用呢?这通篇也没瞅着哪里跟智能物联有半毛钱关系啊,你好歹封个蓝牙或者zigbee的模块进去嘛233
网友@龙文,直接表示就是Python3.7.4换了皮肤。
作为对比,截了几张图,上面是木兰,下面是Python3.7.2。
以sys库为例
木兰导入包的方式为:
sys = __import__('sys')
Python导入包的方式为:
sys = import sys
报错信息木兰:
版本信息格式也是一样,从左边可以看出木兰是基于Python3.7.4换皮肤的:
当然,你可以死皮赖脸地说是参考了Python。
但是。。。。重点来了,copyright居然有Python字样,哈哈哈哈,这太尴尬了,这下没法抵赖了吧:
Python的如下:
还有一个sys.prefix属性引起了我的注意,我倒要看看这个C:\Users\huawei\AppData\Local\Temp\_MEI143282路径下有什么东西,
打开一看尼玛我傻眼了都,全是Python的文件,结果不言而喻:
其实之前我们比较熟悉的文言编程语言,它就非常明确只关注语法和前端,把所有底层操作都留给了 Java 或 Python。双兔傍地走,安能辨我是Python。
一位开发者从以下三个角度评价了木兰语言:
把 Python 环境打包到一个可运行的文件,那么这可能是没问题的。但将其号称为拥有自主产权的编程语言就太言过其实了。对此,你怎么看呢?
最新情况:1.18晚上,研发木兰编程语言的团队负责人刘雷(已打码),做出回应。
本人系中科院计算所编译实验室员工。基于我在编译技术上的科研积累创办了中科智芯(北京)科技有限公司,该公司围绕青少年编程教育,设计开发编程语言、编译器和集成开发环境等产品。
为了更好地在中小学中普及计算思维,本人带领团队开发了一种称为“木兰“的编程语言。它包含三个组成部分:一、在语言规范上借鉴了 Lua 语言的特性并进行了扩展,增加数据表达方法等新的特性;二、开发了支持少儿编程教育的可视化编程环境;三、针对 8 位 AVR 单片机,实现了相应的编译器和运行时系统,开发了能模拟多任务执行的虚拟机。以上产品已经在数百所中小学中,开展了 10 万人次的编程科普活动。
针对 STM32 单片机,我们是基于 Python 开源编译器进行的二次开发,也就是先将木兰语言的源程序转换为 Python 的中间表示(AST),再在Python虚拟机上运行。这就是在开发和运行环境中会包含 Python 系统的原因。
在 1 月 15 日接受媒体采访时,本人在对木兰编程语言的介绍中,犯了以下错误:
1. 木兰编程语言主要是用于中小学教育,在介绍中将它扩大到智能物联领域。
2. 木兰语言在 8 位单片机上的编译器是本团队开发的,在 32 位单片机上的编译器是基于 Python 开源编译器进行的二次开发,但在接受采访中将木兰编程语言和编译器夸大为完全自主开发。
对于此次在网络上造成的不良影响,本人郑重道歉,对给中科院、中科院计算所带来的不良后果表示诚挚的歉意。本人感谢大家的监督与批评,并深刻反省,保证不再出现类似问题。
刘雷
2020年1月18日
网友评论
来源:程序员前线,程序员的那些事
重磅!码农突围-技术交流群已成立
扫码可添加码农突围助手,可申请加入码农突围大群和细分方向群,细分方向已涵盖:Java、Python、机器学习、大数据、人工智能等群。
一定要备注:开发方向+地点+学校/公司+昵称(如Java开发+上海+拼夕夕+猴子),根据格式备注,可更快被通过且邀请进群
▲长按加群
有热门推荐????
1、刚刚!国产统一操作系统 UOS 正式对外公开,太牛逼了!
2、地震了!这一次苹果太强硬,如果你的 App 拒绝抛弃这些技术,将在2020年3月全面下架!
3、聊一聊字节跳动的面试
4、Python用不好?终于有官方中文文档啦