来源:爱范儿
夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱……
这不是「请朗读并背诵全文」系列,而是一个 GitHub 一个代码项目的序言,为什么要用文言文?因为这就是一个用文言文编程的项目。
这套编程语言叫做「文言编程语言(wenyan-lang)」是卡内基梅隆大学(CMU)一个中国留学生 Lingdong Huang 在去年创建的,也曾在网上引起热议。
▲ 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 表示自己对于文言文十分着迷,在读大学之前就阅读了大量文言文书籍,现在他正在读的是《淮南子》,而这本书里有一句话:
昔者苍颉作书,而天雨粟、鬼夜哭。
这句话讲的仓颉造字,惊天地泣鬼神的故事。文字是世界上伟大的发明之一,从此历史得以记载,知识可以传播。而在这个互联网时代,组成整个庞大数字世界的,则是一行行代码。用文言文来编程,确实也给古代文字的传承找到了一条新路。