文言文不能編程乎?中國大四小哥哥曰:非也

  • 2019 年 12 月 22 日
  • 筆記


新智元原創

來源:GitHub

編輯:鵬飛

【新智元導讀】程式設計師何苦為難程式設計師?有人開發了一種「文言文程式語言」,用文言文寫的程式語言,密切遵循文言文語法和中國古典文學的基調,被評價過於硬核。戳右邊鏈接上 新智元小程式 了解更多!

乍一看讓人一頭霧水:文言文和程式語言,好像兩不搭嘎,卻好像又隱約有點關係?

這就是最近被盛傳的:文言文程式語言「wenyan-lang」。GitHub上線5天時間,已經突破了6000星。

文言文也能編程?

最早的彙編語言,在普通人類看起來就是毫無意義的一堆數字,只有少數神秘的高智商天才才能看得懂。

後來程式語言逐漸的進化,現代的程式語言已經越來越接近人類的自然語言了。甚至一個非電腦專業的文科生也能看懂簡單的HTML、CSS、Python等。

但無論語言怎麼進化,總是逃不開英語的範圍。不論是機器學習寵兒Python、「世界最好的程式語言」PHP、業界通用語言Java等等,都是英文寫的。但既然程式語言叫「語言」,憑什麼非得用英文呢?

此前已經有中文的程式語言問世了。相信學電腦的同學對一個叫做「易語言」的程式語言並不陌生,算是非常老牌的現代漢語程式語言了。

那麼既然現代漢語可以,文言文是不是也可以呢?而且你有沒有覺得,其實程式語言的感覺,和文言文有點像呢?都是用非常簡短的詞語來表達非常豐富的含義。

有這種迷惑想法的人還真不少,在知乎上曾經也是非常火的話題。當然,很多人可能只停留在了提出想法的階段,從理論上討論了到底行不行;如果行,那麼怎麼做,鮮有付諸行動來驗證效果。而一位在卡內基梅隆大學(CMU)的大四學生則用實際行動給出了答案:可以!

一名被編程耽誤的古文高手

文言文程式語言的作者名叫Huang Lingdong,是CMU一名大四學生,高中畢業於上海世界外國語中學。就是下圖這位可可愛愛的男生。

他不僅僅是一名電腦高材生,更是一名文藝高手,對中國歷史非常著迷。他給自己這門語言寫的介紹就能非常有意思:

在序中,他將Golang稱為鼠、Rust稱為蟹、Ruby為鑽、fishshell稱為魚,這類語言以快制勝;而蛇(Python)、象(PHP)、駱(Perl)、犀(JavaScript,因為 O'Reilly出版的JS書封面是一隻犀牛)也是各有各的優勢。

程式語言現在已經和《天宮》書中記錄的星宿數量差不多了,但文言文卻一直沒能進入程式語言的殿堂之中。現代人早已不在使用文言文,作者認為需要做一些事情來讓文言文能夠更好的繼續傳承,而用文言編程,是他為古文做出的一大貢獻。

可以看出,圖中所有亮色的文字,幾乎都對應的是一本書。或是神話傳說、或是聖賢經典,或是程式語言,足見作者涉獵廣泛、博聞強識。

文言文與NLP、圖靈完備

別看用的是文言文,但絕對與時俱進!wenyan-lang有如下特性:

  • NLP共享的古文語法
  • 編譯成JS或者Python
  • 圖靈完備
  • 在線IDE

在線IDE長這樣:

很多人可能會說:右邊我看起來頂多算是線性代數,左邊直接跳到離散數學了是怎麼回事?

別急,作者還提供了對照表。看了對照表,估計很多人可能不需要再回去學一遍文言文,就能用wenyan-lang開始寫程式碼了。

除了官方出的IDE外,還有人做了VSCode和Vim的插件,簡直不要太貼心!

讓文言文編程,更像文言文

文言文盛行的時代,書籍都是豎排版的,閱讀方向是從右向左的。如果你是一名資深的日漫讀者,應該會非常習慣於這樣的閱讀體驗。

而為了做的更極致,作者還做了一個文言文排版生成器。你可以將用wenyan-lang寫的程式,直接生成為豎排版的圖片。這種方式來撰寫和閱讀程式碼,是不是有一種強烈的穿越和不真實感?

這不由得讓我想起了非理性四部曲。在這裡,我也非常推薦大家去閱讀一本書叫做《牛頓加農炮》,非理性四部曲其中之一。小說里,牛頓從一個物理學家成為一名化學家(鍊金術師)。

項目地址:

https://github.com/LingDong-/wenyan-lang#features