文言文程式語言,讓你明白什麼叫「中文比英語還難」.

2021-03-06 藍橋杯

畢竟有易語言在前,有人認為中文可以降低國人學習編程的門檻,也增強漢語的國際地位。然而最近大火的文言文程式語言,讓你明白什麼叫「中文比英語還難」。

Hello wenyan

最近有個 GitHub 項目火了 —— 文言程式語言 / wenyan-lang。

項目地址:https://github.com/LingDong-/wenyan-lang

這一項目並不是簡單的將程序中的英文字符換成了中文,而是利用 NLP 的一些技術,將文言文程序語法轉換到 JavaScript 或 Python 運行,有一定的技術難度。項目問世幾日即獲贊 2.2K,還得到了很多人的微博轉發。

學語言嘛,當然先從 「Hello world」 開始,看看文言版怎麼寫:

吾有一數。曰三。名之曰「甲」。為是「甲」遍。    吾有一言。曰「「問天地好在。」」。書之。云云。

沒看懂,編譯成 JavaScript:

var n = 3;for (var i = 0; i < n; i++) {    console.log("問天地好在。");}

運行:

完全的中文編程有木有,使用古漢語語法,具有圖靈完整性,可以編譯成 JavaScript 或 Python。

如同古人篆書一般,一頓之乎者也,程序寫好了!

基礎語法

趕緊學起來,第一章變量走起,中文編程肯定不能用 abc,還好我們有甲乙丙:

wenyanJavaScript吾有一數。曰三。名之曰「甲」。var a = 3;有數五十。名之曰「大衍」。var dayan = 50;吾有一言。曰「「噫籲戲」」。名之曰「乙」。var b = "alas!";

true/false 我們也有對應的 陽/陰(繁體的陽/陰),類型就稱為「爻」(卦符的基本符號):

wenyanJavaScript吾有一爻。曰陰。名之曰「丙」。var c = false;

if 判斷也沒問題:

wenyanJavaScript若三不大於五者。乃得「「想當然耳」」。若非。乃得「「怪哉」」也。if(3<=5){return "of course"}else{return "no way"}

循環更為簡潔,直接聲明次數,最後以云云結尾:

wenyanJavaScript為是百遍。⋯⋯ 云云。for (var i = 0; i < 100; i++){ ... }恆為是。⋯⋯ 云云。while (true) { ... }乃止。break;

加減乘除一應俱全,連邏輯運算符都支持:

wenyanJavaScript加一以二。乘其以三。(1+2)*3除十以三。所餘幾何。10%3減七百五十六以四百三十三。名之曰「甲」。var a = 756-433;夫「甲」「乙」中有陽乎。`a

容器類型也支持,而且尊重漢語習慣,首個下標是從一開始:

wenyanJavaScript吾有一列。名之曰「甲」。充「甲」以四。以二。var a = []; a.push(4, 2);夫「寶劍」之長。sword.length;夫「甲」之一。a[0]夫「玫瑰」之「「名」」。rose["name"]

下面是進階語法了,定義一個函數 吾有一術:

wenyanJavaScript吾有一術。名之曰「吸星大法」。是術曰。⋯⋯是謂「吸星大法」之術也。function f(){...}吾有一術。名之曰「六脈神劍」。欲行是術。必先得六數。曰「甲」。曰「乙」。曰「丙」。曰「丁」。曰「戊」。曰「己」乃行是術曰。⋯⋯是謂「六脈神劍」之術也。function f(a,b,c,d,e,f){...}吾有一術。名之曰「翻倍」。欲行是術。必先得一數。曰「甲」。乃行是術曰。乘「甲」以二。名之曰「乙」。乃得「乙」。是謂「翻倍」之術也。function double(a){var b = a * 2; return b;}施「翻倍」於「大衍」。double(dayan);吾有一數。曰五。書之。console.log(5);代碼實例

作者提供了經典程序題目的文言版代碼,比如埃拉託斯特尼篩法、 快速排序、曼德博集合、漢諾塔。

另外作者還提供了在線 IDE,可以直接編譯執行代碼。

快排點擊查看大圖曼德博集合點擊查看大圖

看完這些代碼讓我感覺:

《九章算術》就是一本算法導論;

《孫子兵法》就是一本安全攻防;

《易經》大概是一本二進位逆向吧...

相關焦點

  • 程式設計師用中文編程不遠咦——居然是用「文言文」寫出來的
    畢竟有易語言在前,有人認為中文可以降低國人學習編程的門檻,也增強漢語的國際地位。然而最近大火的文言文程式語言,讓你明白什麼叫「中文比英語還難」。Hello wenyan最近有個 GitHub 項目火了 —— 文言程式語言 / wenyan-lang。
  • 文言文程式語言
    最近,文言文編程在GitHub上火了。據了解,這是一門採用文言文輸入的程式語言,該語言不包括英文字符,僅包含繁體中文字符,並保留繁體引號「」。據了解,該語言項目的作者是CMU 計算機專業大四學生Lingdong Huang,他利用 NLP 的一些技術,將文言文程序語法轉換到 JavaScript 或 Python 運行。該項目問世幾日即獲贊 2.2K,還得到了很多人的微博轉發。文言語言採用自然語言處理共享了古典漢語語法,將語言編譯為 JavaScript 或 Python,並且圖靈完備。
  • 世界上第一個文言文程式語言誕生,創造它的是一個大學生
    為什麼用文言文?因為這是一個文言文程序。程式語言叫做「文言郎」。它是由卡內基梅隆大學(Carnegie Mellon University)的中國學生黃凌東(Lingdong Huang)去年創立的,也在網際網路之上引起了熱議。
  • 這味兒上頭,前有文言文,又來東北話,中文編程玩得挺得勁!
    全宇宙都知道,東北話容易上頭,不知道用東北話編程,會不會上頭。Google的一位華人高級軟體工程師/技術主管就開發了一款以東北方言為關鍵字的程式語言,並且在GitHub上進行了開源,並且還寫了一篇詳細教程來介紹這款語言。
  • 「文言文」也可以用來編程了
    w2qEETC-電子工程專輯那麼,你是否想過用中文來編寫程序?w2qEETC-電子工程專輯去年剛從美國卡內基梅隆大學(Carnegie Mellon University)計算機科學系畢業的Lingdong Huang最近開發出稱為「文言」(Wenyan-Lang) 的程序語言,相較於主要以英文編寫的方式,新的「文言文程序語言」完全採用繁體中文文字以及古典中文語法系統編寫。
  • 語言:在外國人眼裡中文到底有多難?
    去韓國,司機師傅說中文太難了,他們都沒有聲調,滴裡嘟嚕就說完了,中文還要啊啊啊啊(分別是一聲二聲三聲四聲),然後就一副抓狂的樣子。聽一個教中文的老師說,一個「就夠」她講上幾百遍了你中文到八級時,就會知道有個叫文言文的怪物,記不記得初中第一次接觸古文,那種爽到舌頭轉筋的朗讀體驗:既替餘以蕙纕兮,又申之以攬茝。
  • 世界上第一種古典漢語程式語言
    圖片:用文言文編寫寫的佔卜程序。他說,黃在燕文郎最喜歡的節目之一是「佔卜」。這是在易經,「中國最古老的經典。他補充道:「我本來打算自己實施,但一個熱情的貢獻者搶先了我一步。"編程用了繁體中文字符和文言文語法。
  • 8k+ star的文言文程式語言你寫得動嗎?
    本文經授權轉自公眾號 開源中國(ID:oschina03)近日有開發者開源了一門新的程式語言該語言名為「文言(wenyan-lang)」,這是一門採用文言文輸入的程式語言,該語言不包括英文字符,僅包含繁體中文字符,並保留繁體引號「」。先看看 Helloworld 怎麼寫:吾有一數。
  • 別吐槽四六級難了,國外「中文試卷」更難,中國學生都不一定會
    很多國外留學生,和中國學生出去留學一樣,也要進行中文考級,很多學校也有開設中文課堂,那外國學生的中文試卷難嗎? 小編至今都沒弄明白,不知是我語文太差,還是國外中文試卷太難。
  • 如果把各程式語言比作各國語言,哪種語言對應中文?
    Quora 問答社區最近有人提了一個有趣的問題:如果把程式語言比作各國語言,會分別對應什麼
  • 用文言文來編程,97 年 CMU 本科生火遍全網!
    設為 「星標」,每天帶你逛 GitHub!轉自機器之心,參與:思、一鳴「昔者蒼頡作書,而天雨粟,鬼夜哭」,漢字的出現,誕生了世界上一個偉大的文明。而程式語言的出現,讓人類和計算機產生了真正的聯繫,推動了現代文明的發展。那麼,將古代漢語和程式語言結合又會產生怎樣的火花?
  • 英語四六級很難?看了外國學生的中文試卷,我心裡平衡了
    英語,謎一般的科目。你永遠都不知道,那26個字母到底能排列組合出來多少個單詞。也永遠都無法理解,為什麼同是地球人,語法的差異能有「辣麼」大。上學時,我就不明白為什麼我一個能用中文寫文言文的人,非得去學一門別的語言。但是,別管我能不能想明白原因,反正英語考試,從初中開始就沒缺席過一次。
  • 為什麼系統編程全都用英文而不用中文?聽完專家的解釋恍然大悟
    由此可見,一個系統編程有多麼的重要了,我們現在用的手機主要有兩個系統,一個是蘋果系統,一個就是廣泛使用的安卓系統。不管是什麼樣的系統,我們會發現它們都是用英文編寫的,對於很多英語不怎麼好的人們來說,看英文編程就像是在看天書,根本不明白說得什麼。於是有人提出了這樣一個疑問:為何系統編程全都用英文而不用中文?
  • 高手把電腦程式語言替換成中文!程式設計師看了表示一言難盡
    首先大概的看一下中文編碼:你以為會寫中文就會編程嗎?這就像你以為會寫漢字就會寫出好文章一樣。
  • 都說編程難,編程到底難在哪裡?
    編程的定義簡單來說就是編定程序,程序是什麼,就是人類為了解決某個問題,針對計算機設定一定的運算方式方法,讓計算機按照我們的程序指令一步步地去工作,達到某種結果。一般沒有接觸了解過這個行業,單從字面理解是不是就覺得挺難的,首先你要能操控計算機,其次是開發創造一個新的東西或解決一個問題。但是術業有專攻,程式設計師也會覺得其他行業難,所以判斷一個行業專業難不難,不能簡單看字面,要深入了解接觸一下。首先,編程是一門技術,技術就是需要多操作練習的。
  • 美國高中漢語試卷,出現「最難背」文言文,中國學生:我都沒學過
    文/阿荃聊教育「漢語」是世界上最難的語言,也正因難度係數高,有了獨特的魅力,吸引了世界各地學生學習,但是漢語不是你想學就能學會的,沒有特定的語言環境,是很難完全理理解、學明白漢語的。而同義詞反義詞,在中國中學語文試卷上也常常出現,多數情況下是難不倒中國學生的,但是看美國漢語試卷出現的同義詞反義詞,難倒一眾中國學生,連小編這個成年人有很多詞語連認識都不認識,更何況是寫同義詞反義詞了。、憬悟、不啻這幾個詞語你知道都怎麼讀?都什麼含義?
  • 中文是最難學的語言?
    看了篇文章說據UNESCO(聯合國教科文組織)統計,漢語是世界上最難的學的語言 -我們可以學會世界上最難的語言,還怕別的嗎?仿佛是無論在什麼地方我們都要爭個排名一樣。首先, 語言學上說「Languages are equally complex and valid.」 我也沒有找到可信的資料證明UNESCO有過這樣的統計(如果你找到了歡迎分享給我)。 其次,這個命題也不夠清楚,「漢語是世界上最難學的語言」是對誰來說的?是對英語母語的人還是日語韓語為母語的人? 「最難學」的界定是在什麼基礎之上?
  • 你應該學習的最好的程式語言是什麼?
    跳過HTML/CSS這些不說,我認為這個問題的答案取決於你想用代碼去做什麼事情。你得明白的一些東西只使用一種語言去做項目,那麼使用Javascript和它的諸多框架就輕鬆又愉快了。例如基本的搜尋引擎,驗證表單的新方法(確保在你創建表單的時候,人們會在裡面輸入正確的內容)。使用Angular,你可以讓你的網站更有靈氣,更加生動,不需要太多設置和條件,真好看的說。Python簡明易懂,近來甚至有不少大學考慮把其列為計算機科學裡面的程式語言課要學習的語言。
  • 主打「中文編程」的易語言,為何鮮有公司採用?
    易語言是一門非常有趣的程式語言,它讓程式設計師可以用中文來實現程序編寫,簡單易上手的特性也讓易語言一直存活至今,但易語言似乎僅僅限於「有趣」,目前來看極少有公司或是產品採用易語言,所以易語言到底是什麼?它用在哪兒了?為什麼沒有公司願意用它?
  • 英國教育官員說:中文將來是世界語言,就像現在英語一樣