畢竟有易語言在前,有人認為中文可以降低國人學習編程的門檻,也增強漢語的國際地位。然而最近大火的文言文程式語言,讓你明白什麼叫「中文比英語還難」。
Hello wenyan
最近有個 GitHub 項目火了 —— 文言程式語言 / wenyan-lang。
現在這個項目已經超過 10K Stars 了,咱趕緊來研究下。
學語言嘛,當然先從 「Hello world」 開始,看看文言版怎麼寫:
吾有一數。曰三。名之曰「甲」。為是「甲」遍。 吾有一言。曰「「問天地好在。」」。書之。云云。
沒看懂,編譯成 JavaScript:
var n = 3;for (var i = 0; i < n; i++) { console.log("問天地好在。");}
運行:
問天地好在。問天地好在。問天地好在。
完全的中文編程有木有,使用古漢語語法,具有圖靈完整性,可以編譯成 JavaScript 或 Python。
如同古人篆書一般,一頓之乎者也,程序寫好了!
基礎語法
趕緊學起來,第一章變量走起,中文編程肯定不能用 abc,還好我們有甲乙丙: JavaScript
true/false 我們也有對應的 陽/陰(繁體的陽/陰),類型就稱為「爻」(卦符的基本符號):
if 判斷也沒問題:
循環更為簡潔,直接聲明次數,最後以云云結尾:
加減乘除一應俱全,連邏輯運算符都支持:
容器類型也支持,而且尊重漢語習慣,首個下標是從一開始:
代碼實例
作者提供了經典程序題目的文言版代碼,比如埃拉託斯特尼篩法、 快速排序、曼德博集合、漢諾塔。
另外作者還提供了在線 IDE,可以直接編譯執行代碼。
快排
曼德博集合
看完這些代碼讓我感覺:
《九章算術》就是一本算法導論;
《孫子兵法》就是一本安全攻防;
《易經》大概是一本二進位逆向吧...
一些題外話
該項目的作者名叫 Huang Lingdong,卡內基梅隆大學(CMU)計算機專業大四學生。這麼一位世界頂級高校的大佬,做這個項目其實只是一個期末作業亦或業餘愛好。
點進 issues,廣大中國編程愛好者也表達了對作者的敬佩:
然而當我也驚嘆這個項目的腦洞和創意時,在 issues 裡還是看到了一些令我非常不悅的話題:
這位兄弟的腦洞看來比作者還大...
不然怎麼把一個程式語言聯繫到風投...
這位兄弟前半句是對的,但後半句似乎有一些鄙夷和不屑?
我在下邊回復給他一個表情:
當然哪裡都少不了「意義黨」:
真是哪裡都有上綱上線的人,作者自娛自樂寫了一個開源項目,為此查閱大量古漢語資料,也不圖什麼名利,就獲得幾千 Stars,就成為了某些人嘴裡的恰爛錢、無意義、垃圾項目。
而當我點開這些人的頭像時,發現他們掛著都是一些 Fork 和不明所以的 Repo,我也不知道他們掛這些的意義是什麼...
我當然也從源碼看出,這個項目可能叫「解釋器」更貼切一些,但作者也從來沒說這是一個多麼認真、能用於生產環境的正式項目。
Esolang
如果你和上面的他們有類似的想法,那麼我給你普及一個編程名詞:
Esoteric programming language,簡稱 Esolang,它們的設計被用於測試計算機語言設計的極限,作為一個概念的證明,或僅僅是一個玩笑。Esolang 創作者通常並不打算讓它成為主流程式語言,他們幾乎不會在意語言的可用性,甚至恰恰相反,會故意增加使用難度。
比如 Brainfuck,它是在 1993 年被創造的程式語言,語法僅包含八種符號,沒有任何單詞,用它列印 Hello world 是這樣的:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
再比如 MarioLANG,它同樣只能使用符號,需要使用形似馬裡奧關卡的語法來書寫:
++++: > > +:+:+:+:+:+:+:::::====+ >^=== """================= +:-):(:^= = ! ========= = # = ! .+.,:-< =### ======"
Parenthesis Hell,言如其名,括號地獄,只能使用括號來書寫:
(()()(()()(()()()()((()()(()(()((()((()()()((()((()()()((()((((()()(()()()()()()(((()(((()((()((((()(((()()(()()((()((()()()((()()(()()()()(()()()()(()()()()(()(())))))))))))))))))))))))))))))))))))))))))))))))))
所以 wenyan-lang 實際也屬於 Esolang,並不是用於生產的語言,你在這些語言中尋找意義,我覺得你這種行為就挺沒意義的...