理科的人往往會笑文科的人不會用電腦、看不懂程式等等。不過,如果用文言文也能寫程式的話,會不會文科的人也能寫程式呢?就因為電腦是外國人發明的,程式語言就一定要是英文或是算式嗎?一位卡內基美隆大學(CMU)的中國留學生就不這麼認為,因此,他開發出了一套文言文的程式語言,希望能夠讓你也能用文言文寫程式,說不定因此還能讓一些文科的人,意外發現自己有寫程式的天分。
「唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱……」
這不是「請朗讀並背誦全文」系列,而是一個 GitHub 一個程式碼項目的序言,為什麼要用文言文?因為這就是一個用文言文程式的項目。
這套程式語言叫做「文言程式語言(wenyan-lang)」是卡內基美隆大學(CMU)一個中國留學生 Lingdong Huang 在去年創建的,也曾在網上引起熱議。
而在上個月, Huang 利用畢業前的最後一週的時間,完成了這套程式語言的核心功能,世界上首個用文言文的程式語言正式誕生。
儘管文言程式語言誕生只有一個月,但已經吸引了不少人用它來寫程式。據 Huang 介紹,目前已經有數十個用文言程式語言寫的程式,其中一大半都是由其他人編寫的。其中很多程式都是基於中國古代的數學著作,比如三國時代數學家的圓周率計算方法,甚至還有《易經》的算命演算法。
那到底是怎麼用文言文來程式的呢?這並不是將英文字符轉換為文言文這麼簡單,而是要用自然語言處理(NLP)技術,將文言程式語言編譯成編譯成 JavaScript,Python 和 Ruby 等程式語言。
比如程式界經典的程式碼「Helloworld」,如果用文言程式語言是這樣寫的:
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云。
如果將這段程式碼轉換成 JavaScript 語言,是這樣的:
var n = 3;
for (var i = 0; i < n; i++) {
console.log(「 問天地好在。」);
}
當中的原理不在這裡贅述,如果想瞭解更多文言程式的技巧,可以關注這個項目在 GitHub 的頁面,當然如果你已經有一定程式基礎,也可以嘗試程式一些更加複雜的程式,在知乎上就有網友用文言文編寫割圓法算圓周率的程式,而在 Huang 的個人主站上,還展示了不少更加複雜的文言程式案例,比如曼德博集合和考拉茲猜想。
為什麼 Huang 要創造一套使用文言文的程式語言,其實在 GitHub 項目上的序言已經說出了答案,這段序的大意是,如今的電腦十分精妙,程式語言數量眾多,但過去從未有人嘗試用文言文來程式,他認為這也是傳承文脈、保護文心的一種方式。
此外 Huang 還開發了一個「古文程式碼產生器」,可以將枯燥的文言文程式碼轉換為一本古書的頁面,在視覺上更有古典的氣息。
Huang 在去年 12 月已經在卡內基美隆大學(CMU)獲得了電腦科學與藝術學位,他除了文言程式語言,他還曾用電腦程式作出了一幅中國山水畫,還參與開發了第一個由人工智慧合成的崑曲影片。
Huang 目前正在用文言文編寫文言程式的入門指南,目的是讓更多完全沒有程式經驗的人使用文言程式語言,目前已經完成了 40%。
在接受媒體採訪時,Huang 表示自己對於文言文十分著迷,在讀大學之前就閱讀了大量文言文書籍,現在他正在讀的是《淮南子》,而這本書裡有一句話:
昔者蒼頡作書,而天雨粟、鬼夜哭。
這句話講的倉頡造字,驚天地泣鬼神的故事。文字是世界上最偉大的發明之一,從此歷史得以記載,知識可以傳播。而在這個 Internet 時代,組成整個龐大數位世界的,則是一行行程式碼。用文言文來程式,確實也給古代文字的傳承找到了一條新路。
- 本文授權轉載自:ifanr(愛范兒)
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!