聲稱掌握核心技術,實則換皮Python?國產編程語言木蘭引起社區熱議
近日有媒體稱,一款面向智能物聯網和編程教育的國產編程語言出世,名為木蘭。消息一出,引起了開發者社區的討論。但有人發現,下載的程序包解包后——是個 Python?
編程語言是人們和計算機進行交互的重要工具。從 C、C++到 Python、Julia,不同的編程語言因其本身的特性和功能而有著龐大的開發社區。近日有國內報道稱,中國科學院計算技術研究所(中科院計算所)旗下的計算機體系結構國家重點實驗室編譯組主導開發了一門新的編程語言:木蘭(Mulan:Module Unit Language)。
據相關報道稱,該編程語言由編譯組完全自主設計、開發和實現。與之配套的編譯器與集成開發工具也完全由團隊自主實現的,是真正掌握核心技術的編程語言。但機器之心并未在中科院計算所官網找到相關信息。
報道一出,便引起了開發者社區的注意,已有很多開發者進行了使用和研究。解包結果發現,其實這是個 Python 3.7?
目前,木蘭語言已可以下載。
下載地址:http://www.dongshouke.com/download/ulang-0.2.2.exe
「編程教育入手,面向物聯網智能」
據發布的消息稱,這門編程語言面向未來的智能物聯網。
在智能物聯應用領域,尚無一款專用的編程語言。在既有的語言系統中做智能應用開發,需要多個工程師、跨多種語言實現,導致開發效率低下。「木蘭」就致力于打造物聯網智能執行平臺,并為編寫的應用程序提供執行環境。
在物聯網領域,目前沒有專用的編程語言。現有的物聯網應用開發過程中,需要多個工程師合作,通過跨語言的方式實現應用,這樣一來效率也比較低。出于提升效率,打造物聯網智能執行平臺的目的,木蘭應運而生。
但是,由于這門語言的生態尚不成熟,因此在早期培育生態的階段,木蘭將會更多地被用于青少年編程教育入手培育生態。據稱,以「木蘭」為基礎延伸的自主研發編程軟件、人工智能教材、教學裝備等已投入到中小學、幼兒園使用。
據官網介紹,「木蘭」是專為人工智能教育而生的中國自主知識產權編程語言,由中科智芯自主研發。由于其目的是以教育為主,所以從設計上有意避開了一些編程語言的復雜特性,如編程的環境調試等,意在讓學生在學習編程之初時不被細節所牽絆。開發團隊更傾向使「木蘭」突出易理解、易學習、易閱讀、易維護的特性,同時該語言目前支持跨平臺,對 Android、UNIX、Windows 可兼容。
單從軟件角度看,就目前編程教育市場而言,類似的編程軟件不占少數,并且為降低教育門檻同樣使用圖形化編程。所以就實質的差異點相比較,還是得將聚焦點回歸到編程語言「木蘭」上。
木蘭語言是什么樣的
對于「國產語言」,大家的期待都非常大,很多開發者都下載了 ulang-0.2.2.exe「木蘭」語言環境。打開木蘭語言環境后,首先呈現的是類似命令行的編程環境,我們會發現它的函數很多都和 Python 一致。在編程界面中,鍵入 help 就能看到一些相關信息,不過我們并沒有找到更多的編程語言文檔。
總體而言,木蘭語言除了基本的數據結構與函數外,還會特別加一些基本的數學運算,例如取對數、指數、三角函數等等,也許它們更適合做一些基礎教育。
- Welcome to ulang's REPL..
- Type 'help' for more informations.
- a = ['hello', 'world']
- print (a)
- [hello, world]>
- print (typeof (a))
- list>
- print (cos (90))
- -0.4480736161291701>
- print (cos (45))
- 0.5253219888177297>
- print (cos (0)) 1.0>
從解包到熱議
在知乎上,很多開發者發現解包后的木蘭語言其實就是建立在 Python 之上,將 Python 構建的環境、包和項目都編譯成一個可執行文件。所以似乎木蘭只是在頂層做了一個接口,將底層編譯、優化等眾多工作都交給了原版 Python?
如下所示為 EXE 文件的解包結果(采用 PyInstaller Extractor):
從解包結果可知,「木蘭」語言是通過 Pyinstaller 將 Python 文件打包成 EXE 可執行文件。
其實之前我們比較熟悉的文言編程語言,它就非常明確只關注語法和前端,把所有底層操作都留給了 JavaScript 或 Python。如果只考慮面向少兒編程,把 Python 環境打包到一個可運行的文件,那么這可能是沒問題的。如果說要是構建一種自主產權的編程語言,那么要考慮的東西實在是太多了,語言有什么特性、編譯怎么優化、運行速度怎么保證等等都是艱巨的問題。
對于文言編程開源項目,我們認為它是非常好的嘗試,能在閑暇時間寫一些炫酷的文言代碼。但這樣的語言是不能用于生產或研究環境的,只能是一種娛樂性的小項目。如果說是想要針對特定領域做一種新語言,底層優化與設計肯定是需要單獨做的,這樣的產品才能稱得上有特色的自主編程語言。
開發者社區:槽點略多
一位開發者從以下三個角度評價了木蘭語言:
- 能否滿足實際需求:一門編程需要需要很多特性,使其能夠勝任一些場景中的工作。但是目前似乎沒有看到木蘭語言體現的特性。
- 是否融入開源社區:不開源的語言很難進步。
- 是否適合青少年編程:作為教育語言,不像圖形符號語言那樣直觀。而學生學成后在工作中依然需要重新學習編程語言。
更多相關討論可查看鏈接:https://www.zhihu.com/question/366509495
其它很多開發者也都發表了自己的看法,不論是吐槽語言本身的設計,還是吐槽編程語言的周邊資料。與此同時,從大家的評論中可以看出,我們希望在編程語言、系統框架等底層架構與工具上,做出真正的貢獻。這些貢獻可以需要很長的時間來沉淀,很多的工程來優化,但這才是我們該努力攻破的。