世界上第一個(gè)文言文編程語(yǔ)言誕生,創(chuàng)造它的是一個(gè)大學(xué)生
- 夫唐、虞之世,結(jié)繩而足治,屈指而足算。是時(shí)豈料百代之後,計(jì)算機(jī)械之巧,精於公輸之木鳶,善於武侯之流馬;程式語(yǔ)言之多,繁若《天官》之星宿,奇勝《山經(jīng)》之走獸。鼠、蟹、鑽、魚,或以速稱……
這不是「請(qǐng)朗讀并背誦全文」系列,而是一個(gè) GitHub 一個(gè)代碼項(xiàng)目的序言,為什么要用文言文?因?yàn)檫@就是一個(gè)用文言文編程的項(xiàng)目。
這套編程語(yǔ)言叫做「文言編程語(yǔ)言(wenyan-lang)」是卡內(nèi)基梅隆大學(xué)(CMU)一個(gè)中國(guó)留學(xué)生 Lingdong Huang 在去年創(chuàng)建的,也曾在網(wǎng)上引起熱議。
而在上個(gè)月, Huang 利用畢業(yè)前的最后一周的時(shí)間,完成了這套編程語(yǔ)言的核心功能,世界上首個(gè)用文言文的編程語(yǔ)言正式誕生。
盡管文言編程語(yǔ)言誕生只有一個(gè)月,但已經(jīng)吸引了不少人用它來(lái)寫程序。據(jù) Huang 介紹,目前已經(jīng)有數(shù)十個(gè)用文言編程語(yǔ)言寫的程序,其中一大半都是由其他人編寫的。其中很多程序都是基于中國(guó)古代的數(shù)學(xué)著作,比如三國(guó)時(shí)代數(shù)學(xué)家的圓周率計(jì)算方法,甚至還有《易經(jīng)》的算命算法。
那到底是怎么用文言文來(lái)編程的呢?這并不是將英文字符轉(zhuǎn)換為文言文這么簡(jiǎn)單,而是要用自然語(yǔ)言處理(NLP)技術(shù),將文言編程語(yǔ)言編譯成編譯成 JavaScript,Python 和 Ruby 等編程語(yǔ)言。
比如編程界經(jīng)典的代碼「Helloworld」,如果用文言編程語(yǔ)言是這樣寫的:
- 吾有一數(shù)。曰三。名之曰「甲」。
- 為是「甲」遍。
- 吾有一言。曰「「問(wèn)天地好在?!埂?。書之。
- 云云。
如果將這段代碼轉(zhuǎn)換成 JavaScript 語(yǔ)言,是這樣的:
- var n = 3;
- for (var i = 0; i < n; i++) {
- console.log(“ 問(wèn)天地好在。”);
- }
當(dāng)中的原理不在這里贅述,如果想了解更多文言編程的技巧,可以關(guān)注這個(gè)項(xiàng)目在 GitHub 的頁(yè)面,當(dāng)然如果你已經(jīng)有一定編程基礎(chǔ),也可以嘗試編程一些更加復(fù)雜的程序,在知乎上就有網(wǎng)友用文言文編寫割圓法算圓周率的程序,而在 Huang 的個(gè)人主站上,還展示了不少更加復(fù)雜的文言編程案例,比如曼德勃羅集和考拉茲猜想。
為什么 Huang 要?jiǎng)?chuàng)造一套使用文言文的編程語(yǔ)言,其實(shí)在 GitHub 項(xiàng)目上的序言已經(jīng)說(shuō)出了答案,這段序的大意是,如今的計(jì)算機(jī)十分精妙,編程語(yǔ)言數(shù)量眾多,但過(guò)去從未有人嘗試用文言文來(lái)編程,他認(rèn)為這也是傳承文脈、保護(hù)文心的一種方式。
此外 Huang 還開(kāi)發(fā)了一個(gè)「古文代碼生成器」,可以將枯燥的文言文代碼轉(zhuǎn)換為一本古書的頁(yè)面,在視覺(jué)上更有古典的氣息。
Huang 在去年 12 月已經(jīng)在卡內(nèi)基梅隆大學(xué)(CMU)獲得了計(jì)算機(jī)科學(xué)與藝術(shù)學(xué)位,他除了文言編程語(yǔ)言,他還曾用計(jì)算機(jī)程序生成了一幅中國(guó)山水畫,還參與開(kāi)發(fā)了第一個(gè)由人工智能合成的昆曲視頻。
Huang 目前正在用文言文編寫文言編程的入門指南,目的是讓更多完全沒(méi)有編程經(jīng)驗(yàn)的人使用文言編程語(yǔ)言,目前已經(jīng)完成了 40%。
在接受媒體采訪時(shí),Huang 表示自己對(duì)于文言文十分著迷,在讀大學(xué)之前就閱讀了大量文言文書籍,現(xiàn)在他正在讀的是《淮南子》,而這本書里有一句話:
昔者蒼頡作書,而天雨粟、鬼夜哭。
這句話講的倉(cāng)頡造字,驚天地泣鬼神的故事。文字是世界上最偉大的發(fā)明之一,從此歷史得以記載,知識(shí)可以傳播。而在這個(gè)互聯(lián)網(wǎng)時(shí)代,組成整個(gè)龐大數(shù)字世界的,則是一行行代碼。用文言文來(lái)編程,確實(shí)也給古代文字的傳承找到了一條新路。