Categories
創造力

換皮都換不利索?扒一扒中科院”自主研發”的編程語言


換皮都換不利索?扒一扒中科院"自主研發"的編程語言 1

  歡迎關注“創事記”微信訂閱號:sinachuangshiji

  文/谷溪

  來源:古老濕(ID:gulaoshi_ops)

  1

  2020年1月15日,中科院計算所發布了一款“完全自主設計、開發和實現的編程語言”,還配套了徹底自主實現的編譯器和集成開發工具,是“真正掌握核心技術的編程語言”——木蘭編程語言

不過當木蘭發布以後,大家發現,之前新聞稿中所說的“編程語言+編譯器+集成開發工具+跨平台”軟件體系,縮水成了一個僅能在 Windows 平台上運行交互 shell 的 exe 可執行文件。

  這是什麼概念?

  差不多可以理解為,中科院向開發者們承諾了滿漢全席,最後在萬眾矚目之下,上了一盤炒雞蛋。

  你以為現在該噴中科院計算所的這盤炒雞蛋“貨不對版”了?

  呵呵,故事才剛剛開始。

  2

  我通過中科智芯(中科院計算所企業)網站(http://www.dongshouke.com/)下載的這個可執行文件,圖標長成這樣:

換皮都換不利索?扒一扒中科院"自主研發"的編程語言 2

  作為一個使用過 PyQt+PyInstaller 的 Python 工程師,我在看到這個圖標的一瞬間就被中科院計算所的“工匠精神”雷住了。

  這個圖標,是用PyInstaller打包時候自帶的默認圖標啊!

換皮都換不利索?扒一扒中科院"自主研發"的編程語言 3

  也就是說,這個exe可執行文件,是用PyInstaller打包出來,而且工程師懶到連圖標都沒換。當然,可以順便確定,這個文件的生產流程,基本上就是先用Python寫、然後用PyInstaller打包成exe的。

  說好的徹底自主研發的編程語言呢?說好的徹底自主實現的編譯器?咋回事,轉了一圈發現,怎麼還在用早在1991年就問世的Python?

  同行十二年,不知“木蘭”是Python?

(目前木蘭在中科智芯官網下載地址已經被404,但迅雷還有緩存,將下載地址http://www.dongshouke.com/download/ulang-0.2.2.exe 複製到迅雷中,即可成功下載,有興趣的小伙伴可以自己嘗試一下)

  3

  事情逐漸變得有趣起來了。

  我們既然已經知道“木蘭”是用PyInstaller打包的,當然也就有解包的方法——PyInstallerExtractor。

去SourceForge網站下載一個名為pyinstallerextractor.py的腳本,之後在命令行中執行pythonpyinstallerextractor.pyulang-0.2.2.exe(如果腳本與木蘭不在同一文件夾中,記得補全exe文件路徑),就可以將木蘭的源文件ulang-0.2.2.exe解包成為一個文件夾,便於我們一探究竟。

換皮都換不利索?扒一扒中科院"自主研發"的編程語言 4

  通過PyInstallerExtractor,其實已經可以看出,木蘭用的是Python3.7版本了,沒有加密,沒有換圖標……我們不著急,繼續向下扒。

  解包後,可以很直觀的看到木蘭內部長這樣:

換皮都換不利索?扒一扒中科院"自主研發"的編程語言 5

  現在已經可以基本可以確定,這就是Python了。

  我們再深入進去,看看目錄下面這個奇怪的PYZ-00.pyz_extracted文件夾裡面是些什麼東西。

換皮都換不利索?扒一扒中科院"自主研發"的編程語言 6

  這些後綴為.pyc的文件,是Python程序的字節碼文件。文件夾中的這些Python程序,都是Python的標準庫(就是Python語言自帶的一些實用功能)。把它們存放在這裡,顯然是因為木蘭會在這裡統一調用Python3.7的內部函數和接口。

  這基本就是石鎚了:

  中科院計算所的“純自主研發”的木蘭編程語言,其實就是把Python3.7這門全球最流行的開源編程語言打了個包、包裝成一個exe可執行文件,還忘了換圖標……

  如果你要問技術含量有多少,大概等於我買了個iPhone11然後包上了一張廢報紙就號稱這是徹底自主研發的古老濕100S智能手機、最後還毫無工匠精神的忘了畫上我自己的Logo。

  換皮能有多少技術含量?況且還換成這個樣子?這是欺負碼農眼瞎嗎?

  其他誇下的海口,例如跨平台之類,瞬間就可以理解了:Python本身就是一門跨平台語言,既然“木蘭”只是換皮版Python,那麼當然具備Python的一切特性。

  我還幫中科院想好了一句廣告詞——“徹底兼容Python生態環境”,一下子就有走出國門沖向世界的潛力了,豈不美哉?

  4

  扒到這裡,“木蘭”的真身已經曝光在陽光下了。

  但是,還有多少個虛假的“自主研發”項目仍然隱藏在黑暗中?

2002年,上海交通大學微電子學院院長陳進從美國買來10片MOTO-freesca56800芯片,找來幾個民工將芯片表面的MOTO等字樣全部用砂紙磨掉,然後加上漢芯的LOGO,騙取了高達上億元的科研基金,成為2000年後中國最著名的學術造假案件。

2004年,號稱“自主研發”和“自主知識產權”的國產服務器操作系統“麒麟”正式對外公佈,隨後遭到質疑,相關報告顯示“麒麟”操作系統中至少有60%的代碼來自於FreeBSD5. 3,並且二者在函數命名上的相似度高達99.45%。

2018年,號稱“世界第五顆也是唯一一顆屬於中國人自己的瀏覽器內核”的紅芯瀏覽器被曝光使用Blink內核,整個瀏覽器與Chrome瀏覽器嚴重雷同,就是一個“Chrome套殼瀏覽器”,與其宣稱的“自主研發”南轅北轍。

  ……

  像這樣的IT鬧劇,在中國還有無數,打著“自主研發”的幌子,戴著“愛國無罪”的帽子,肥的是誰的肚皮?傷的又是誰的錢財

軟件工程行業的遊戲規則極其簡單:好的代碼,全世界都會用,但大家必須遵守原作者的要求(例如不同的軟件License對使用者有不同的限制),絕不能用了人家代碼還說這是你“自主研發”的“自主知識產權”。這就不叫“共享精神”了,這叫“偷”。

  Linux操作系統作者Linus有一句名言:Talk is Cheap,show me the code.

換皮都換不利索?扒一扒中科院"自主研發"的編程語言 7

  那些至今只敢嘴上厲害、卻一再延遲公開源代碼的“自主研發”產品,能不能把代碼放到聚光燈下,證明你們並不是另一出“愛國”的“換皮”鬧劇呢?

換皮都換不利索?扒一扒中科院"自主研發"的編程語言 8