最近有个GitHub项目火了——文言文编程语言/wenyan-lang。文言文编程语言的作者名叫HuangLingdong,是卡内基梅隆大学(CMU)一名大四学生,高中毕业于上海世界外国语中学。
据悉,这一项目吸引了大量开发者的目光,已在GitHub上摘得星。该文言文编程语言并不是简单的将程序中的英文字符换成了中文,而是利用NLP的一些技术,可将文言文程序语法转编译成Javascript,也可编译成Python,亦有线上编辑器(IDE)可直接玩耍,下面我们来一起研究下。
项目序言
作者在项目开篇使用了一段文言文,介绍了建立这个项目的初衷。
翻译如下:在尧舜时代,人们使用结绳和数手指来计算。当时怎么能够预料到,几百代人之后计算机的巧妙呢!计算机比鲁班(公输盘)的木鸢更加精巧,比诸葛亮(武侯)的木牛流马更好。此外,编程语言数量众多,如同《天官书》记录的星宿一般多,又比《山海经》中记录的飞禽走兽还要奇特。Go(鼠)、Rust(蟹)、Ruby(鑽)、Fishshell(鱼)因速度而出名。Python(蛇)、Php(象)、Perl(骆)和JavaScript(犀)则各有独特之处。我这才理解到,为什么*会夜哭,天上会下粟雨。但以往从未有人使用过文言文进行编程。
这并不是传承文脉、保护文心的好方法,所以我才产生了用文言文编程的想法。我目前还太年轻,读过的书也没有破万卷。如今身处遥远的国家(美国),也很久没有接触中文了。但是我一直对文学很有兴趣,编写的程序有时候也得到人们的一些肯定。正如王希孟和庄子一般,并不因为年轻或者知识的浩瀚无涯而退缩,于是写下了这些话。我既没有像李贺那样呕心沥血,也没有像李商隐那样口角流沫。
项目完成后,我将继续以干将铸剑的精神勉励自己,带着越王卧薪尝胆的精神继续向前。我自己虽想效仿《算经十书》的笔法,只是遗憾没有唐宋八大家那样淋漓的文笔。正如庾信在《哀江南赋》所写:“陆机听了心甘情愿地拍掌;张衡见了将轻视它也是理所当然”。尽管这项目只有覆瓮的价值,但是还有完善的空间。虽然没有像吕不韦那样有一字千金的本钱,但是我对交流的渴望是一样的。这也是开放源的重要意义,我们以此互相勉励吧。
文言文如何编程
学语言,当然先从“Helloworld”开始,看看文言版怎么写:
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云。
这段代码等效于以下JavaScript代码:
varn=3;
for(vari=0;in;i++){
console.log(問天地好在。);
}
输出:
問天地好在。
問天地好在。
問天地好在。
标点符号和换行都是可选的(就像古汉语中文字是连续的),所以上面的代码等同于:
吾有一數曰三名之曰「甲」為是「甲」遍吾有一言曰「「問天地好在」」書之云云
更多复杂的例子,可以在./examples中找到。比如,埃拉托斯特尼筛法、快速排序、曼德博集合、汉诺塔。
这完全就是中文编程,使用古汉语语法,具有图灵完整性,可以编译成JavaScript或Python。如同古人篆书一般,一顿之乎者也,程序写好了!
项目特点
符合古汉语语法的自然语言处理程序。
可以编译成JavaScript,Python,或者Ruby
图灵完备(