37

华人留学生开发首个古汉语编程语言,实现易经算命、圆周率计算,Github获赞14.7k

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=Mzg4MDE3OTA5NA%3D%3D&%3Bmid=2247491775&%3Bidx=1&%3Bsn=8f98c8366b2e26aecf7550758453b3ef
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

近日,世界上第一个古汉语编程语言在 Github 上横空出世,由该古汉语编程语言编写的程序现已达到了数十个,有圆周率计算方法,甚至有《易经》的算命算法。

截至目前,该项目在 Github 上已获赞 14.7k,引起诸多关注。

v6bUjqi.png!web

更让人惊奇的是,这套古汉语编程语言(wenyan-lang)的开发者 Lingdong Huang 是一名中国留学生,于去年在卡内基梅隆大学(CMU)获得了计算机和艺术学位,他曾参与创作迄今为止唯一由人工智能生成的中国戏曲,将传统文化融入技术中。

「昔有苍颉作书,而天雨栗,鬼夜哭」,汉字的出现,诞生了世界上一个伟大的文明,将知识传播到四海之外,而如今代码组成了整个庞大的数字世界,用文言文来编程,让古代文字在新时代焕发新生。

传承文脉、保护文心。

「夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸...」

项目开篇,即是作者用文言文写的项目序言,介绍了建立项目的初衷: 传承文脉、保护文心。

汉字的出现,让我们看到了中华文明时代到来的灿烂曙光。而编程语言的出现,让计算机也能懂得语言,极大促进了现代文明的发展。

那么,文言文和编程语言相碰撞又会有怎样的火花呢?作者又是怎样实现用文言文编程的呢?

用文言文写代码

用文言文编程不仅仅是将英文字符转换为文言文这么简单,而是需要运用到自然语言处理技术(NLP),将文言编程语言编译成 JaveScript 等编程语言,最后再运行程序得到结果。

若用文言编程语言来表达编程界经典的代码「Helloworld」,应该这样写:

j2AJfqU.png!web

这里具体思路是,先定义一个数为「3」,并将它赋值给「甲」,即甲=3,然后进入一个循环,遍历「問天地好在。」这个语句「甲」次。

将它转换为 JavaScript 语言,是这样的:

JZnQv2N.png!web

结果输出:

IvY7RnR.png!web

你以为文言编程就只有这些吗?那你就太小瞧它了。

著名的「八皇后问题」、「汉诺塔」等问题,它样样精通,甚至还可以画图。

fIVZzea.jpg!web

在作者的网站上可以在线编译,大家也可以一试。

Github 网站: https://github.com/wenyan-lang/wenyan

古文代码生成器

此外,作者还开发了一个「古文代码生成器」,将文言文代码转到古书的页面上,从右到左,从上到下,没有标点的古文,带有十足的古典气息。

YJfeqem.jpg!web

古汉语编程语言使用的是繁体汉字和古汉语语法,然而如何划分句子却成了难题,因为需要古汉语在不使用空格的前提下将句子分为单词。就如我们看到英语单词「pancakebatter」,我们需要依赖先验知识将其划分为「pancake batter」,而不是「pan cakebatter」。

为了解决这个问题,作者指出文言编程语言只需要拥有一定数量的关键词,这样每次运行时,扫描最长的关键词到最短的关键词来得到目标内容。

语法

作为一种「新语言」,除了有关键词,当然还有语法,无论是定义变量还是执行循环等,文言文都有其对应的语法。

变量命名

QJ7bqaU.jpg!web

循环

Bzya2qF.jpg!web

网友评价

对于发布世界上第一种古语言编程语言的新闻,早已引发了热议。在 Reddit 上,不少网友发表了自己的看法。

6VniMfE.jpg!web

这位网友认为,中国应该支持这种创新,进一步将计算机科学融入中国本土文化,在编译源代码时,可以将英语或任何其他语言作为编程语言,之后将一系列字母或单词解析为有意义的符号,然后将符号转换为机器代码。汉字已经是有意义的符号了,因此此番基于汉字的编程语言可以免去很多解析,这是极好的。

aMBzmqe.png!web

另一位网友也表示赞同,他认为,汉字具有含义,它可以表达任何语言,而且语法是固定且简单的,因此特别适合编程。

其实,这不是第一次将中国文化融入代码文化中,几百年前二进制的诞生竟也与《易经》有密不可分的关系。

二进制与《易经》

当我们在 LCD 屏幕上观看数字图像,在 MP3 上聆听音乐时,我们很难想象这背后的原理是一串二进制信号,通常由 0 和 1 表示。二进制数字系统(0 和 1)构成了所有现代计算系统的基础。它用两个数字就重构了各种场景,进行高速的运算。

zyiAviF.jpg!web

17 世纪著名的数学家莱布尼茨(Leibniz)发明了这个重要的数字系统。那么他又是如何创建二进制的呢?据《卫报》专栏作家大卫沃尔特(David Walter)报道,莱布尼茨的灵感来自有着五千年历史的中国哲学核心著作——《易经》。

《易经》是中国最古老的古典文字和占卜系统之一,被认为比有记载的历史更早一些。它的核心是八卦,也可以延伸为六十四卦。《易经》代表了现实的两极,阴和阳,就像 1 和 0 一样,它们都是抽象概念。在八卦中,虚线代表阴,实线代表阳,这些线以三个为一组组合在一起,产生了八个基本的卦,然后又合在一起得到了六十四个卦,每个卦都有自己的含义和解释。

ry2EzeJ.png!web

沃尔特解释说,六十四卦代表了人类生命本身的原型状态。在《易经》的哲学中,现实并不完全是真实的,它更像是一个梦想或幻想,现实源于阴和阳的二元性,它们发挥出了无限的组合。

因此,从易经的观点来看,在现实的梦境中,任何事物都可以被表示成由计算机处理的二进制成分模型,即由一串 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

RFfiMzu.jpg!web

mAz6nuj.gif

qIf6V3F.gif
UVj6jeE.jpg!web
qIf6V3F.gif

扫码关注学术头条 

点击 “阅读原文”  查看 2020 AI 2000 榜单↓


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK