近日,世界上第一个古汉语编程语言在 Github 上横空出世,由该古汉语编程语言编写的程序现已达到了数十个,有圆周率计算方法,甚至有《易经》的算命算法。
截至目前,该项目在 Github 上已获赞 14.7k,引起诸多关注。
更让人惊奇的是,这套古汉语编程语言(wenyan-lang)的开发者 Lingdong Huang 是一名中国留学生,于去年在卡内基梅隆大学(CMU)获得了计算机和艺术学位,他曾参与创作迄今为止唯一由人工智能生成的中国戏曲,将传统文化融入技术中。
「昔有苍颉作书,而天雨栗,鬼夜哭」,汉字的出现,诞生了世界上一个伟大的文明,将知识传播到四海之外,而如今代码组成了整个庞大的数字世界,用文言文来编程,让古代文字在新时代焕发新生。
传承文脉、保护文心。
「夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸...」
项目开篇,即是作者用文言文写的项目序言,介绍了建立项目的初衷:传承文脉、保护文心。
汉字的出现,让我们看到了中华文明时代到来的灿烂曙光。而编程语言的出现,让计算机也能懂得语言,极大促进了现代文明的发展。
那么,文言文和编程语言相碰撞又会有怎样的火花呢?作者又是怎样实现用文言文编程的呢?
用文言文写代码
用文言文编程不仅仅是将英文字符转换为文言文这么简单,而是需要运用到自然语言处理技术(NLP),将文言编程语言编译成 JaveScript 等编程语言,最后再运行程序得到结果。
若用文言编程语言来表达编程界经典的代码「Helloworld」,应该这样写:
这里具体思路是,先定义一个数为「3」,并将它赋值给「甲」,即甲=3,然后进入一个循环,遍历「問天地好在。」这个语句「甲」次。
将它转换为 JavaScript 语言,是这样的:
结果输出:
你以为文言编程就只有这些吗?那你就太小瞧它了。
著名的「八皇后问题」、「汉诺塔」等问题,它样样精通,甚至还可以画图。
在作者的网站上可以在线编译,大家也可以一试。
Github 网站:https://github.com/wenyan-lang/wenyan
古文代码生成器
此外,作者还开发了一个「古文代码生成器」,将文言文代码转到古书的页面上,从右到左,从上到下,没有标点的古文,带有十足的古典气息。
古汉语编程语言使用的是繁体汉字和古汉语语法,然而如何划分句子却成了难题,因为需要古汉语在不使用空格的前提下将句子分为单词。就如我们看到英语单词「pancakebatter」,我们需要依赖先验知识将其划分为「pancake batter」,而不是「pan cakebatter」。
为了解决这个问题,作者指出文言编程语言只需要拥有一定数量的关键词,这样每次运行时,扫描最长的关键词到最短的关键词来得到目标内容。
语法
作为一种「新语言」,除了有关键词,当然还有语法,无论是定义变量还是执行循环等,文言文都有其对应的语法。
变量命名
循环
网友评价
对于发布世界上第一种古语言编程语言的新闻,早已引发了热议。在 Reddit 上,不少网友发表了自己的看法。
这位网友认为,中国应该支持这种创新,进一步将计算机科学融入中国本土文化,在编译源代码时,可以将英语或任何其他语言作为编程语言,之后将一系列字母或单词解析为有意义的符号,然后将符号转换为机器代码。汉字已经是有意义的符号了,因此此番基于汉字的编程语言可以免去很多解析,这是极好的。
另一位网友也表示赞同,他认为,汉字具有含义,它可以表达任何语言,而且语法是固定且简单的,因此特别适合编程。
其实,这不是第一次将中国文化融入代码文化中,几百年前二进制的诞生竟也与《易经》有密不可分的关系。
二进制与《易经》
当我们在 LCD 屏幕上观看数字图像,在 MP3 上聆听音乐时,我们很难想象这背后的原理是一串二进制信号,通常由 0 和 1 表示。二进制数字系统(0 和 1)构成了所有现代计算系统的基础。它用两个数字就重构了各种场景,进行高速的运算。
17 世纪著名的数学家莱布尼茨(Leibniz)发明了这个重要的数字系统。那么他又是如何创建二进制的呢?据《卫报》专栏作家大卫沃尔特(David Walter)报道,莱布尼茨的灵感来自有着五千年历史的中国哲学核心著作——《易经》。
《易经》是中国最古老的古典文字和占卜系统之一,被认为比有记载的历史更早一些。它的核心是八卦,也可以延伸为六十四卦。《易经》代表了现实的两极,阴和阳,就像 1 和 0 一样,它们都是抽象概念。在八卦中,虚线代表阴,实线代表阳,这些线以三个为一组组合在一起,产生了八个基本的卦,然后又合在一起得到了六十四个卦,每个卦都有自己的含义和解释。
沃尔特解释说,六十四卦代表了人类生命本身的原型状态。在《易经》的哲学中,现实并不完全是真实的,它更像是一个梦想或幻想,现实源于阴和阳的二元性,它们发挥出了无限的组合。
因此,从易经的观点来看,在现实的梦境中,任何事物都可以被表示成由计算机处理的二进制成分模型,即由一串 1 和 0 组成的字符串。
莱布尼茨深受《易经》中哲学思想的影响,在他的《二进制算数的解释》(1703)这本书中写道:卦是二进制数字系统通用的基础,可以采用卦中阴阳符号表示二进制序列。因此 ¦¦¦¦¦¦ 代表 000000,而 ¦¦¦¦¦︳代表 000001,以此类推。
参考链接:
[1] https://spectrum.ieee.org/tech-talk/computing/software/classical-chinese
[2]https://www.theguardian.com/books/2014/mar/21/ancient-book-wisdom-i-ching-computer-binary-code