戳破針對「木蘭」編程語言的拙劣謠言

謠言一:「木蘭」就是 Python 換了個名字

在各色媒體的含沙射影和誤導下,恐怕現在大部分公衆都誤認爲「木蘭」編程語言就是完完全全的 Python 語言換個名頭而已。一個某問答網站的高贊回答中就有這樣的“證言”:

在這裏插入圖片描述

然而,謊言重複千遍也不能成爲真理!

這些口誅筆伐和流言中,沒有任何一個敢於貼出「木蘭」實際的運行截圖。爲什麼?

難道是不會運行 exe 文件?還是因爲,只要運行出來就會讓大衆看到,它和 Python 的明顯差別?

萬幸的是有一批開發者在第一時間就獲得了「木蘭」編程語言的可執行文件,包括我自己。

同樣功能(連着打印出 5 個數字)的代碼,分別在 Python(左)和「木蘭」編程環境(右)。

稍加對比可見明顯不同,謊言不攻自破!
在這裏插入圖片描述

這還只是我自己嘗試了的一小部分功能而已,還有大量的功能和差異限於時間還未探索。

謠言二:沒有解決痛點

編程語言技術圈內,已經基本公認了「木蘭」絕不是 Python 換名字而已。但還是有所謂大佬,就憑着兩者代碼視覺上的相似之處,就聲稱『木蘭』編程語言沒有解決任何“痛點”,沒有任何實質性的改進。

說這話的要麼對 Python 或『木蘭』完全不瞭解,要麼是睜眼說瞎話。

只要用過 Python 編程的,都應該喫過它非常嚴格的縮進規則的虧。比如開頭的 Python 代碼,如果稍不小心,在某些地方把空格多了一個或者少了一個,那就倒大黴了:

 def f(x):
    for i in range(5):
        i = i + x
        print(i)


def f(x):
    for i in range(5):
       i = i + x
        print(i)


def f(x):
    for i in range(5):
        i = i + x
       print(i)

上面的代碼全部無法運行!可以試試看,要花多大勁才找得出哪裏有問題?

最最坑的是,下面的代碼看似對齊了,但仍然無法運行!
在這裏插入圖片描述

就是因爲不小心混用了 tab 和空格鍵。而這種問題對於新手來說,無異於折磨。這也是一個圈內臭名昭著、幾乎所有 Python 開發者遲早都會掉進不止一次的大坑。我在學習和使用 Python 時,同樣栽過,也抱怨過“怎麼這麼死板!設計的真二!”

就是這樣的一個問題,Python 1991 年問世至今,沒有任何人解決過。神奇吧!

但『木蘭』就很好地解決了這個問題。即使有開頭空格、混合 tab 和空格鍵都支持:
在這裏插入圖片描述

甚至還支持更自由的寫法:
在這裏插入圖片描述

現在說它沒有解決“痛點”?到底要多痛的點?切膚之痛、痛徹心扉嗎?那樣的痛點怎麼可能在一個編程語言問世近三十年後還沒有解決呢!

這也同樣是謠言一的剋星。這樣的功能差別,還說成是 Python 換個名字,良心不會痛嗎?

謠言三:是個本科生就能做

同樣在技術圈內,還有人號稱,這不過是本科、碩士生畢設水平云云,甚至將它和本科生作業相提並論。

是不是自己把自己忽悠瘸了?還是當所有人都不懂行,會相信「木蘭」編程語言當做是像文章抄襲那樣簡單的文本替換、格式化就能做出來的了?

這個荒唐論調的最致命處在於,爲什麼之前幾乎沒有在國內聽說過像『木蘭』這樣的產品??

不客氣地說,在木蘭開始研發之前,全中國就算一千萬程序員,百分之九十九點九的只把編譯器當工具用,其中也包括我自己。就像是開機牀的,有幾個有興趣瞭解機牀內部構造的?即使有像上面的縮進規則大坑,也不敢對編譯器輕舉妄動,而只是捏着鼻子,強行讓自己適應繼續用。畢竟——“大家都是這麼過來的嘛”。

這就只剩下一萬人敢於看看編譯器的源代碼。但看歸看,九成的都不會或者沒動力把它從源代碼編譯成可運行的編譯器,更不用說修改源代碼了。就好比有多少人樂意自己組裝一臺機牀出來的?哪怕給你全套零件和圖紙?

在剩下這一千人樂意動動源代碼的當中,九成的編譯器相關知識背景和實踐經歷都不足,而即便是像上面演示出的定製語法,也需要頂層設計和將編譯器的模塊拆分的能力。

就這樣,我們只剩下了一百人。那麼這其中有多少人有動力、毅力完成它,還要下不亞於做編譯器本身的功夫,完成周邊配套的輔助工具,最後做成產品,進行推廣呢?

「木蘭」這樣的產品少之又少,正是由於國內編程語言設計、編譯器實現、以及相關輔助工具開發領域的極大落後才導致的!

退一萬步說,假如現在的計算機本科生教育真的已經到了這個水平,能夠輕鬆完成這樣對開源編譯器的改造,豈不是國之幸事?豈不是可以在「木蘭」的技術基礎上,迅速進行進一步的改進和創造,逐步扭轉編程語言這一領域長期受制於人的現狀了?

要知道,任何工程項目,思路可能是一句話的事情,但實現起來總會有各種各樣的問題和難關,正所謂“細節是魔鬼”。是不是至少應該深入研究「木蘭」的技術細節,該學習的學習,該推廣的推廣呢?

過是過,功是功

作爲當事人在宣傳方面縱然有千錯萬錯,也絕不應該任意詆譭「木蘭」編程語言的意義。

無論它前途如何,僅憑至今爲止的這次短暫亮相,就已經將國內編程語言研發的整體水平提高了一個層次。

因爲它,明確指出了一條經過實踐驗證、完全可行的定製和改進一個開源編譯器的技術路線!對它的逆向分析也已經多方驗證了當事人袒露的實現方式(見文末)。

從此之後,上面那些敢於動動編譯器源代碼但沒有明確思路的九百人當中,也都會嘗試順着這個思路對所有編程語言的編譯器進行改造;那九千個本來只敢看看源代碼的,也會發覺,原來編譯器的源代碼並不是那麼神聖不可觸碰,也會有更多的人加入動手修改的行列;更不用說那九千多萬原本視編譯器爲神器不可褻瀆的開發者,會有一大批開始對它的實現細節感興趣,進而投身於編譯器研發領域。

從這個意義上說,『木蘭』已經創造了歷史!

正是因爲如此,我們更應該期待『木蘭』的更多技術細節,而不是任由它被流言埋沒。

在流言大肆其道,事實尚未澄清的現在,正是『木蘭』前途命運的關鍵時刻。

任何一個有良知的人,都應用理性思考,明辨流言蜚語,絕不讓『木蘭』蒙受不白之冤!


來源於技術論壇的逆向分析

上圖源自:https://www.zhihu.com/question/366509495/answer/978966908源自技術討論羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章