fbpx
维基百科

木蘭 (程式語言)

木蘭(英語:Mulan),名稱來自模塊單元語言(Module Unit Language)的縮寫,是一种教學用程式語言,其語法規範來自Lua,編譯與執行環境使用Python實現。由中国科学院计算技术研究所入股的中科智芯公司於2020年1月15日發表,團隊領導人為中科院副研究員劉雷[1]。這套程式語言是中科智芯公司的重點產品,主要應用於中華人民共和國境內的中小學及幼兒園,作教育使用[2]

木兰
Mulan
编程范型多范式面向对象指令式函数式过程式面向切面
設計者劉雷
實作者中科智芯公司
发行时间2020年1月15日,​4年前​(2020-01-15
操作系统跨平台

發表之初,研發團隊曾稱這個程式語言可使用於人工智慧物聯網,完全自主研發,編譯器集成开发环境套件也完全由團隊開發。在發表後,被質疑是以Python 3.7套件套殼產生。開發者劉雷承認是基於Python做二次開發,完全自主研發以及針對人工智慧及物聯網應用開發等說法為過度誇大。至2020年1月20日,官方下载网页无法打开,刘雷也被中科院停职接受调查。

簡介 编辑

木兰由中国科学院计算技术研究所国家重点实验室編譯組研發團隊於2020年1月15日發表。在發表時,开发团队领导人刘雷声称這套程式語言完全由這個研發團隊進行自主設計、開發、編程,編譯器與集成開發工具套件也完全自主開發,完全掌握核心技術;刘雷認為這個程式語言將會成為「智能物聯時代的C語言」。刘雷声称,木兰是為針對人工智慧物聯網應用而開發的程式語言;不过因為有易於理解及使用的特性,在尚未被大量使用于应用开发的情况下,木兰已經投入中小學及幼兒園的教育課程中使用。在硬體上,能夠搭配中華人民共和國自主研發的龍芯寒武紀處理器,在作業系統上可搭配AndroidiOSLinuxWindows系統跨平台運作[3][4][5]

中科智芯科技有限公司提供“青少年人工智能教育”相关的服务,其网页上介绍木兰语言时则仅声称该语言是“专为人工智能教育而生的编程语言”。2020年1月20日,中科智芯科技网站所提供的木兰的“语言环境”的安装包名称为ulang-0.2.2.exe。[6]

語法內容 编辑

因為官方尚沒有提供完整開發文件與集成開發套件,這個程式語言的實質內容並不清楚,但在開放 ulang.exe 下載後,開發者社群對它進行逆向工程,對它的特性有基礎了解。通过重现项目,发现了更多语法特性。下面是用木兰源码编写的猜 1-100 数字例程,可用 ulang.exe 运行。

using Cmd in cmd; using exit in sys; using randrange in random type GuessNumber : Cmd { { intro, prompt = "I have a number within 100 in mind, guess which one?", "Try: " numberInMind = randrange(1000) / 10; history = []; closestDiffSoFar = 100 } func $default(row) { try { n = int(row) } catch e : ValueError { println("`row` is not a number, try again"); return } $history.append(n); $compare(n) } func $compare(n) { if n == $numberInMind { println("Bingo!"); exit() } else { println("Too " + (n > $numberInMind ? "large" : "small") + "!") println("Getting close though") if $gettingCloser() } } func $gettingCloser { minDiff = min(map(n -> { diff = n - $numberInMind; return diff > 0 ? diff : -diff }, $history)) { $closestDiffSoFar = minDiff; return true } if $closestDiffSoFar > minDiff } } GuessNumber().cmdloop() 

其語法的最直观特色之一是取消了 Python 的強制縮排,改用大括號。通过语句末尾的分号,支持一行内编写多个语句。

函数方面,可以用 $ 代替 self;在函数无参数时,定义时可以省略 ();支持 lambda 函数内多个语句。

类型方面,类型扩展使用冒号表示;类型变量需用大括号包围,如例程中的 intro、prompt 等。

内置函数方面,添加了 println;isinstance 改为 isa。

注释段用 /* */,注释行用 //。

关键词方面有诸多修改,比如由 Python 使用的 def 改成 func,類似於SwiftGoPHP;try...except 改为 try...catch;None 改为 nil,True/False 改为 true/false;class 改为 type 等等。

不支援漢字作為變數名稱,保留的關鍵字中也沒有漢字,因此不能以中文來進行編程。与此相比,Python 3可以使用Unicode文字(包括汉字)作为变量名。

实现原理 编辑

在程序執行時,用 RPly [7] 進行詞法與語法分析后生成 Python 抽象語法樹,调用 Python 内置函数 compile 生成可执行码,再调用 Python 内置函数 exec 运行。运行速度与 Python 相近。由于基于 Python 的运行时环境,可以跨平臺運作。

除了运行木兰源码,ulang.exe 还有参数支持周边功能。其中 --dump-python 借助 codegen 库将木兰源码生成对应的 Python 代码。

通过扩展 Python 内置函数 __import__,支持导入木兰模块,同时仍支持导入 Python 模块,而且不需 __init__.py 即可找到模块。语法与 Python 基本对应。

using some_module using module1, module2 using some_method in some_module using * in some_module using * in . using ceil in math 

关于核心技术的争议 编辑

在其執行檔ulang-0.2.2.exe開放下載後,CSDN网友“沉迷单车的追风少年”等开发者發現,這個執行檔是直接用PyInstaller將Python 3.7套件打包成一個執行檔,圖標直接使用Python的官方圖標。在解開後,其內容大部份都是python 3.7的官方套件,包括python的建構環境、套件等,自行撰寫的部份不多,與其宣稱完全自主開發不同[8][9][10]。開發者劉雷回應,在8位元單晶片上的編譯器是由他們團隊自主開發,在32位元處理器上則是基於Python二次開發[11],其語法規範來自Lua,但擴充了資料類型,主要使用於中小學教育,而不是人工智慧與物聯網開發[12][13]。1月19日,相关负责人刘雷被中科院停职检查[14]。之后刘雷则表示木兰项目没有使用任何科研经费[15]。1月19日,官方下载网页已经无法打开[16]

處罰 编辑

2020年1月23日,中国科学院计算技术研究所发布《关于“木兰”语言问题的调查与处理意见》,认为刘雷在“木兰”语言的宣传活动中存在欺瞒、虚假陈述和夸大宣传的行为,取消其五年内专业技术岗位晋升的申请资格,取消三年内科研项目的申请资格,岗位等级从工程师一级降为助理工程师一级[17]

评论 编辑

经济日报》(中国经济网)认为,学术界的丑闻“让人痛心”,认为科学不容玷污,应加强科学道德和学风建设。认为科研工作者应该“以身作则,还学术、还科研一片净土”[13]

重现项目 编辑

由于木兰源码并未由官方发布,于1月16日在知乎提出问题‘「木兰」编程语言有什么特色?’的编程语言爱好者吴烜随即创建了木兰编程语言重现项目,并开源在Gitee[18]。2020年11月25日,该项目在开源中国(OSCHINA)主办的评选活动中位列“最积极运营项目”前20名[19]

此项目通过修改词法分析部分,使木兰支持了中文标识符。猜数字例程改用中文命名如下。

using Cmd in cmd; using exit in sys; using 随机范围数 in 随机数 type 猜数字 : Cmd { { intro, prompt = "木兰想了个 100 之内的数,猜是几?", "猜猜吧: " 想的 = 随机范围数(1000) / 10; 历史 = []; 至今最近 = 100 } func $default() { try {  = int() } catch 例外 : ValueError { println("`行` 不是数,请再试"); return } $历史.append(); $比较() } func $比较() { if  == $想的 { println("中了!"); exit() } else { println("太" + ( > $想的 ? "大" : "小") + "了!") println("不过接近咯") if $接近了() } } func $接近了 { 最近 = min(map( -> {  =  - $想的; return  > 0 ?  : - }, $历史)) { $至今最近 = 最近; return true } if $至今最近 > 最近 } } 猜数字().cmdloop() 

註釋 编辑

  1. ^ 赵广立. 中科院计算所发布国产编程语言“木兰”. 中國科學報. 2020-01-16 [2020-01-19]. (原始内容于2021-10-06). 
  2. ^ 中科院计算所发布国产编程语言“木兰”. 科學網. 2020-01-16 [2020-01-18]. (原始内容于2020-02-29). 
  3. ^ 中科院发布“智能物联时代的C语言—木兰”. OFweek人工智能网. 2020-01-17 [2020-01-18]. [永久失效連結]
  4. ^ 孫自法. 面向智能物聯 中國科研團隊發佈「木蘭」編程語言體系. 北京新浪網. 2020-01-16 [2020-01-18]. (原始内容于2020-02-06). 
  5. ^ 孙自法. 面向智能物联 中国科研团队发布“木兰”编程语言体系. 中国新闻网. 2020-01-15 [2020-01-23]. (原始内容于2020-01-16). 
  6. ^ 编程软件. 中科智芯科技有限公司. [2020-01-23]. (原始内容存档于2020-01-20). 
  7. ^ alex/rply: An attempt to port David Beazley's PLY to RPython, and give it a cooler API.. [2021-01-30]. (原始内容于2020-10-31). 
  8. ^ 声称掌握核心技术,实则换皮Python?国产编程语言木兰引起社区热议. 機器之心. 2020-01-17 [2020-01-18]. (原始内容于2021-05-09). 
  9. ^ 换皮都换不利索?扒一扒中科院"自主研发"的编程语言. cnBeta. 2020-01-19 [2020-01-23]. (原始内容于2020-01-23). 
  10. ^ 国产编程语言“木兰”被质疑抄袭Python,负责人道歉. 财富中文网. 2020-01-19 [2020-01-19]. (原始内容于2020-07-20). 
  11. ^ 自主開發編程語言被指Python套殼,中科院開發者道歉. 北京新浪網. 2020-01-18 [2020-01-18]. (原始内容于2020-02-14). 
  12. ^ 邱晨辉. 被指换皮后 编程语言"木兰"研发团队为夸大事实道歉. 中国青年报. 2020-01-18 [2020-01-19]. (原始内容于2020-01-19). 
  13. ^ 13.0 13.1 沈慧. 编程语言“木兰”换皮?中科院计算所:当事人科研不端已停职检查. 经济日报·中国经济网. 2020-01-19 [2020-01-23]. (原始内容于2020-01-19). 
  14. ^ 中科院计算所. . 中科院计算所网站. 2020-01-19 [2020-01-19]. (原始内容存档于2020-01-24). 
  15. ^ 当事人回应:“木兰”没有使用任何科研经费. 观察者网. 2020-01-19 [2020-01-23]. (原始内容于2020-01-20). 
  16. ^ 每经记者 曾剑 每经编辑 梁枭. 首款自主开发编程语言“木兰”被质疑抄袭 现暂无法下载. 每日经济新闻. 2020-01-19. 
  17. ^ 中科院:取消 “木兰”语言问题当事人五年内晋升资格. [2020-01-27]. (原始内容于2020-01-27). 
  18. ^ 木兰编程语言 - OSCHINA - 中文开源技术交流社区. [2021-01-30]. (原始内容于2020-12-25). 
  19. ^ 2020 年度 OSC 中国开源项目评选:最积极运营项目. [2021-01-29]. (原始内容于2021-01-21). 

相關條目 编辑

Template:中国大陆科技造假丑闻

木蘭, 程式語言, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目包含指南或教學內容, 2021年1月31日, 請藉由移除或重寫指南段落來改善條目, 或在討論頁提出討論, 此條目可能包含原创研究, 2021年1月31日, 请协助補充参考资料, 添加相关内联标签和删除原创研究内容以改善这篇条目, 详细情况请参见讨论页, 此條目缺少有關该语言本身具体特征和该语言当前的应用状况, 使用第三方来源, 的信息, 請擴充此條目相關信息, 討論頁可能有詳細細節, 木蘭, 英語, mulan, 名稱來自. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目包含指南或教學內容 2021年1月31日 請藉由移除或重寫指南段落來改善條目 或在討論頁提出討論 此條目可能包含原创研究 2021年1月31日 请协助補充参考资料 添加相关内联标签和删除原创研究内容以改善这篇条目 详细情况请参见讨论页 此條目缺少有關该语言本身具体特征和该语言当前的应用状况 使用第三方来源 的信息 請擴充此條目相關信息 討論頁可能有詳細細節 木蘭 英語 Mulan 名稱來自模塊單元語言 Module Unit Language 的縮寫 是一种教學用程式語言 其語法規範來自Lua 編譯與執行環境使用Python實現 由中国科学院计算技术研究所入股的中科智芯公司於2020年1月15日發表 團隊領導人為中科院副研究員劉雷 1 這套程式語言是中科智芯公司的重點產品 主要應用於中華人民共和國境內的中小學及幼兒園 作教育使用 2 木兰Mulan编程范型多范式 面向对象 wbr 指令式 wbr 函数式 wbr 过程式 wbr 面向切面設計者劉雷實作者中科智芯公司发行时间2020年1月15日 4年前 2020 01 15 操作系统跨平台發表之初 研發團隊曾稱這個程式語言可使用於人工智慧與物聯網 完全自主研發 編譯器與集成开发环境套件也完全由團隊開發 在發表後 被質疑是以Python 3 7套件套殼產生 開發者劉雷承認是基於Python做二次開發 完全自主研發以及針對人工智慧及物聯網應用開發等說法為過度誇大 至2020年1月20日 官方下载网页无法打开 刘雷也被中科院停职接受调查 目录 1 簡介 2 語法內容 3 实现原理 4 关于核心技术的争议 5 處罰 6 评论 7 重现项目 8 註釋 9 相關條目簡介 编辑木兰由中国科学院计算技术研究所国家重点实验室編譯組研發團隊於2020年1月15日發表 在發表時 开发团队领导人刘雷声称這套程式語言完全由這個研發團隊進行自主設計 開發 編程 編譯器與集成開發工具套件也完全自主開發 完全掌握核心技術 刘雷認為這個程式語言將會成為 智能物聯時代的C語言 刘雷声称 木兰是為針對人工智慧與物聯網應用而開發的程式語言 不过因為有易於理解及使用的特性 在尚未被大量使用于应用开发的情况下 木兰已經投入中小學及幼兒園的教育課程中使用 在硬體上 能夠搭配中華人民共和國自主研發的龍芯 寒武紀處理器 在作業系統上可搭配Android iOS Linux Windows系統跨平台運作 3 4 5 中科智芯科技有限公司提供 青少年人工智能教育 相关的服务 其网页上介绍木兰语言时则仅声称该语言是 专为人工智能教育而生的编程语言 2020年1月20日 中科智芯科技网站所提供的木兰的 语言环境 的安装包名称为ulang 0 2 2 exe 6 語法內容 编辑此章節沒有提供參考來源 內容可能無法查證 2020年1月21日 因為官方尚沒有提供完整開發文件與集成開發套件 這個程式語言的實質內容並不清楚 但在開放 ulang exe 下載後 開發者社群對它進行逆向工程 對它的特性有基礎了解 通过重现项目 发现了更多语法特性 下面是用木兰源码编写的猜 1 100 数字例程 可用 ulang exe 运行 using Cmd in cmd using exit in sys using randrange in random type GuessNumber Cmd intro prompt I have a number within 100 in mind guess which one Try numberInMind randrange 1000 10 history closestDiffSoFar 100 func default row try n int row catch e ValueError println row is not a number try again return history append n compare n func compare n if n numberInMind println Bingo exit else println Too n gt numberInMind large small println Getting close though if gettingCloser func gettingCloser minDiff min map n gt diff n numberInMind return diff gt 0 diff diff history closestDiffSoFar minDiff return true if closestDiffSoFar gt minDiff GuessNumber cmdloop 其語法的最直观特色之一是取消了 Python 的強制縮排 改用大括號 通过语句末尾的分号 支持一行内编写多个语句 函数方面 可以用 代替 self 在函数无参数时 定义时可以省略 支持 lambda 函数内多个语句 类型方面 类型扩展使用冒号表示 类型变量需用大括号包围 如例程中的 intro prompt 等 内置函数方面 添加了 println isinstance 改为 isa 注释段用 注释行用 关键词方面有诸多修改 比如由 Python 使用的 def 改成 func 類似於Swift Go與PHP try except 改为 try catch None 改为 nil True False 改为 true false class 改为 type 等等 不支援漢字作為變數名稱 保留的關鍵字中也沒有漢字 因此不能以中文來進行編程 与此相比 Python 3可以使用Unicode文字 包括汉字 作为变量名 实现原理 编辑在程序執行時 用 RPly 7 進行詞法與語法分析后生成 Python 抽象語法樹 调用 Python 内置函数 compile 生成可执行码 再调用 Python 内置函数 exec 运行 运行速度与 Python 相近 由于基于 Python 的运行时环境 可以跨平臺運作 除了运行木兰源码 ulang exe 还有参数支持周边功能 其中 dump python 借助 codegen 库将木兰源码生成对应的 Python 代码 通过扩展 Python 内置函数 import 支持导入木兰模块 同时仍支持导入 Python 模块 而且不需 init py 即可找到模块 语法与 Python 基本对应 using some module using module1 module2 using some method in some module using in some module using in using ceil in math关于核心技术的争议 编辑在其執行檔ulang 0 2 2 exe開放下載後 CSDN网友 沉迷单车的追风少年 等开发者發現 這個執行檔是直接用PyInstaller將Python 3 7套件打包成一個執行檔 圖標直接使用Python的官方圖標 在解開後 其內容大部份都是python 3 7的官方套件 包括python的建構環境 套件等 自行撰寫的部份不多 與其宣稱完全自主開發不同 8 9 10 開發者劉雷回應 在8位元單晶片上的編譯器是由他們團隊自主開發 在32位元處理器上則是基於Python二次開發 11 其語法規範來自Lua 但擴充了資料類型 主要使用於中小學教育 而不是人工智慧與物聯網開發 12 13 1月19日 相关负责人刘雷被中科院停职检查 14 之后刘雷则表示木兰项目没有使用任何科研经费 15 1月19日 官方下载网页已经无法打开 16 處罰 编辑2020年1月23日 中国科学院计算技术研究所发布 关于 木兰 语言问题的调查与处理意见 认为刘雷在 木兰 语言的宣传活动中存在欺瞒 虚假陈述和夸大宣传的行为 取消其五年内专业技术岗位晋升的申请资格 取消三年内科研项目的申请资格 岗位等级从工程师一级降为助理工程师一级 17 评论 编辑 经济日报 中国经济网 认为 学术界的丑闻 让人痛心 认为科学不容玷污 应加强科学道德和学风建设 认为科研工作者应该 以身作则 还学术 还科研一片净土 13 重现项目 编辑由于木兰源码并未由官方发布 于1月16日在知乎提出问题 木兰 编程语言有什么特色 的编程语言爱好者吴烜随即创建了木兰编程语言重现项目 并开源在Gitee 18 2020年11月25日 该项目在开源中国 OSCHINA 主办的评选活动中位列 最积极运营项目 前20名 19 此项目通过修改词法分析部分 使木兰支持了中文标识符 猜数字例程改用中文命名如下 using Cmd in cmd using exit in sys using 随机范围数 in 随机数 type 猜数字 Cmd intro prompt 木兰想了个 100 之内的数 猜是几 猜猜吧 想的 随机范围数 1000 10 历史 至今最近 100 func default 行 try 数 int 行 catch 例外 ValueError println 行 不是数 请再试 return 历史 append 数 比较 数 func 比较 数 if 数 想的 println 中了 exit else println 太 数 gt 想的 大 小 了 println 不过接近咯 if 接近了 func 接近了 最近 min map 数 gt 差 数 想的 return 差 gt 0 差 差 历史 至今最近 最近 return true if 至今最近 gt 最近 猜数字 cmdloop 註釋 编辑 赵广立 中科院计算所发布国产编程语言 木兰 中國科學報 2020 01 16 2020 01 19 原始内容存档于2021 10 06 中科院计算所发布国产编程语言 木兰 科學網 2020 01 16 2020 01 18 原始内容存档于2020 02 29 中科院发布 智能物联时代的C语言 木兰 OFweek人工智能网 2020 01 17 2020 01 18 永久失效連結 孫自法 面向智能物聯 中國科研團隊發佈 木蘭 編程語言體系 北京新浪網 2020 01 16 2020 01 18 原始内容存档于2020 02 06 孙自法 面向智能物联 中国科研团队发布 木兰 编程语言体系 中国新闻网 2020 01 15 2020 01 23 原始内容存档于2020 01 16 编程软件 中科智芯科技有限公司 2020 01 23 原始内容存档于2020 01 20 alex rply An attempt to port David Beazley s PLY to RPython and give it a cooler API 2021 01 30 原始内容存档于2020 10 31 声称掌握核心技术 实则换皮Python 国产编程语言木兰引起社区热议 機器之心 2020 01 17 2020 01 18 原始内容存档于2021 05 09 换皮都换不利索 扒一扒中科院 自主研发 的编程语言 cnBeta 2020 01 19 2020 01 23 原始内容存档于2020 01 23 国产编程语言 木兰 被质疑抄袭Python 负责人道歉 财富中文网 2020 01 19 2020 01 19 原始内容存档于2020 07 20 自主開發編程語言被指Python套殼 中科院開發者道歉 北京新浪網 2020 01 18 2020 01 18 原始内容存档于2020 02 14 邱晨辉 被指换皮后 编程语言 木兰 研发团队为夸大事实道歉 中国青年报 2020 01 18 2020 01 19 原始内容存档于2020 01 19 13 0 13 1 沈慧 编程语言 木兰 换皮 中科院计算所 当事人科研不端已停职检查 经济日报 中国经济网 2020 01 19 2020 01 23 原始内容存档于2020 01 19 中科院计算所 关于 木兰 语言问题处理情况的说明 中科院计算所网站 2020 01 19 2020 01 19 原始内容存档于2020 01 24 当事人回应 木兰 没有使用任何科研经费 观察者网 2020 01 19 2020 01 23 原始内容存档于2020 01 20 每经记者 曾剑 每经编辑 梁枭 首款自主开发编程语言 木兰 被质疑抄袭 现暂无法下载 每日经济新闻 2020 01 19 中科院 取消 木兰 语言问题当事人五年内晋升资格 2020 01 27 原始内容存档于2020 01 27 木兰编程语言 OSCHINA 中文开源技术交流社区 2021 01 30 原始内容存档于2020 12 25 2020 年度 OSC 中国开源项目评选 最积极运营项目 2021 01 29 原始内容存档于2021 01 21 相關條目 编辑红芯 汉芯 银河麒麟Template 中国大陆科技造假丑闻 取自 https zh wikipedia org w index php title 木蘭 程式語言 amp oldid 78774859, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。