大四学生用文言文编程,竟然还设计了全套的语言?
Github,全世界最大的代码集中地。它为全球开发者提供免费的Git代码托管服务,也给了程序员们一个自由讨论技术的空间。这里是他们心中的圣地,更是开源技术的天堂。当然同时,这里也被戏称为”全球最大同性交友平台“。
就在上周,Github上的一个项目异军突起,短短一周就收获了1万个Star,截止目前已经超过了1万2,有传说在Github上能收获1000颗星,就能收到来自BAT的Offer,那这个一夜爆火的万星项目,到底是何方神圣?
“文言文编程语言”,是的你没看错,一位在读华人大学生,将古汉语和编程结合,开发出了一套非常特别的编程语言——该语言不包括英文字符,仅包含繁体中文字符,并保留了繁体中的引号“”。简单说,就是把编程中常用的英文全部替换成了文言文。
比如新手学习编程输出的第一句话:Hello world。用文言文编程语言写,就成了这样:
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云。
同时,标点和换行符都与古汉语完全一致,所以上面这段代码整理一下就是:
吾有一數曰三名之曰“甲”為是“甲”遍吾有一言曰“「問天地好在”」書之云云
最终输出如下:
問天地好在。問天地好在。問天地好在。
很多程序员大佬看到这儿要问了,为什么要输出三遍?因为这段代码中还埋了一个for循环:“為是「甲」遍…云云”。”甲“代表”三“,”為是「 」遍。... 云云。“就是for循环的写法。
创造这套语言的天才少年,名叫Huang Lingdong,来自卡耐基梅隆大学,没错,它是一名大四的本科生,高中毕业于上海世界外国语中学。他设计的这套语言,并非简单的将英文字符换成了文言文,而是利用 NLP 技术,将文言文语法转换到 JavaScript、Python或Ruby语言下运行,且满足图灵完备。
为了让这套语言更完善,作者还用文言文严格定义了编程中的各种语法,除此之外,Huang Lingdong 还提供了在线代码编辑器,可供网友现场体验,并给出了大量著名的应用案例,其中包括快排、汉诺塔问题与斐波那契数列表示等。
最令人佩服的是,作者觉得传统编程界面跟这套语言太违和了,专门设计了一套渲染器,可将写好的代码渲染成古汉语书籍的样式,生成矢量图文件,还能将矢量图反向解析回原始代码。
这套语言的出现,在技术圈里迅速掀起了巨大波澜,除了Github上的各种顶礼膜拜,微博上很多程序员大牛也直呼神人,与此同时也有不少人表达了相反的观点,说作者在秀文言文、这套语言华而不实、没有意义。但巧的是,作者设计的这套看似无用的语言,并非真的没有意义。
这个地球上所有的编程语言,按照其应用领域,可以粗略地分成三类。
在各种不同领域都能派上用场的编程语言,叫 general-purpose language,简称 GPL。大家学过的语言很多都属于这一类,比如 C、Java、Python。
另外一种语言,专注于某一特定的领域,甚至只能用在特定的软件中。这类编程语言叫 domain-specific language,简称 DSL。典型的例子如 Game Maker Language,只用在一个叫 Game Maker 的游戏开发软件中。
还有一种语言,则完全没有实际作用。它们不以高效生产为目的,甚至有时候就是为了让你没法好好编程,这类语言的出现,是为了测试语言设计的边界,这就是 esoteric programming language,有的人简称 EPL,但多数人叫它 esolang,这次出现的文言文编程语言就是典型的 esolang,这类语言本身就带有一定的科学探究意义、以及作者所赋予的艺术价值。
类似的编程语言有很多,比如看起来像抽象画的、以音乐为源代码的、看起来像星空的、只有括号的、或者只有单引号和双引号的、指令隐藏在多项式的零点当中的、还有像超级玛丽关卡一样的。
写代码这件事其实并非外界普遍认为的那样,充斥着刻板和理性。要写出更高效的代码,往往需要极其强大的创造性思维,那些大家用了都说好的编程语言,其创造者通常都有一颗天马行空的大脑。
而像这些脑洞大开的第三类编程语言,对语言边界和极限的每一次探索,正是创造一套更通用、更好用的语言的必要前提,不是吗?