欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

文言文亦能编程,该项目在GitHub摘得5500星!

程序员文章站 2022-04-05 22:51:17
...

文言文亦能编程,该项目在GitHub摘得5500星!

 

「昔者苍颉作书,而天雨粟,鬼夜哭」,汉字的出现,诞生了世界上一个伟大的文明。而编程语言的出现,让人类和计算机产生了真正的联系,推动了现代文明的发展。

那么,将古代汉语和编程语言结合又会产生怎样的火花?最近,GitHub 上出现了一个文言文做代码的项目,几乎是世界上第一门文言文编程语言(当然,底层还是转换成 Python 或 JavaScript 运行)。

文言文编程语言横空出世

文言文亦能编程,该项目在GitHub摘得5500星!

如果中文是编程语言中使用的主要语言,我们中国人学习编程是否会更简单?

这是知乎上讨论非常火热的话题。很多接触过编程的人都知道「易语言」,这是一种使用中文代替编程语言中的英文的编程语言,同样可以实现程序功能。近日,一位卡内基梅隆大学(CMU)的大四学生开发了基于文言文的编程语言,高中语文三大怕的文言文终于找上程序员了。

这一项目并不是简单的将程序中的英文字符换成了中文,而是利用 NLP 的一些技术,将文言文程序语法转换到 JavaScript 或 Python 运行,有一定的技术难度。截至发文,项目已经获赞 5K+,还得到了很多人的微博转发。

文言文亦能编程,该项目在GitHub摘得5500星!

 

众多网友纷纷对这一项目进行了测试,项目作者的脑洞、文采和创意着实令人惊讶。

如果读者想快速试一试,你也可以玩一玩在线 IDE,上面有很多预定义的函数。即使在手机上,我们也能编辑并运行「文言文代码」。

文言文亦能编程,该项目在GitHub摘得5500星!

                                                                                       (文末有传送地址)

 

文言文怎么编程?

 

Huang Lingdong同学应该是读过《易经》,毕竟易经是最早论述二进制的古书。他用易经的阴和阳代表布尔变量中的0和1。

“吾有”系列则被用来做定义:

吾有一数是定义int变量

吾有一爻是定义布尔变量

吾有一言是定义字符串

吾有一术是定义函数

吾有一列是定义数组

……

一般的编程里,循环判断有if、while、for,文言文编程在这件事上更是变化无穷。下面就是一段文言文书写的判断语句:

若三弗大於五者。乃得「「想當然耳」」。若非。乃得「「怪哉」」也。

翻译过来就是:


if(3<=5)
  {return "of course"}
else
  {return "no way"}

也许你会觉得if…else…语句用文言文太啰嗦,但是常用的for循环,用文言文表达却更为简洁。

為是百遍。⋯⋯ 云云。

它的意思是:


for (var i = 0; i < 100; i++)
  { ... }

如果需要判断某个变量human是否在world中,我们一般用for (var human of world),初学者看到for的这种用法可能会很困惑,而文言文的表示更接近普通人的理解。

凡「天地」中之「人」。⋯⋯ 云云。

古有《易经》,今有金庸小说,在展示定义函数的时候,Huang同学又皮了一下:

吾有一術。名之曰「六脈神劍」。欲行是術。必先得六數。曰「甲」。曰「乙」。曰「丙」。曰「丁」。曰「戊」。曰「己」乃行是術曰。⋯⋯是謂「六脈神劍」之術也。

这里Huang同学将函数名定义为“六脉神剑”,这个函数总共有6个输入。


funcion f(a,b,c,d,e,f)
  {…}

看厌了黑底的代码?项目还提供了一个炫酷的「古文代码生成器」,我们可以把自己的文言文代码转换成古书中从右到左,从上到下,没有标点的古文。是不是更有 B 格了?这个生成器还有 SVG 文件,可以将代码再提取出来,重新运行。

以下为项目作者尝试的「图灵机」代码:

文言文亦能编程,该项目在GitHub摘得5500星!

 

语法规则

考虑到文言文和其他编程语言的转换有一定的理解难度,作者提供了一些语法转换规则表,供参考。

变量命名

文言文亦能编程,该项目在GitHub摘得5500星!

条件/循环

文言文亦能编程,该项目在GitHub摘得5500星!

 

数学计算

文言文亦能编程,该项目在GitHub摘得5500星!

 

数组(列表)

这里从「1」开始计数。

文言文亦能编程,该项目在GitHub摘得5500星!

 

函数

文言文亦能编程,该项目在GitHub摘得5500星!

 

他是“何方神圣”?

值得注意的是,这个思路清奇的设计竟然出自一名卡内基梅隆大学的大四学生 Ling Dong Huang。

文言文亦能编程,该项目在GitHub摘得5500星!

 

在作者简介中,Ling Dong Huang 表示自己将于 2020 年获得计算机科学学位,此前,他曾在迪士尼研究院、 Antimodular 研究院和《纽约时报》实习,自己也做了项目网站 https://lingdong.works/。目前已经有将近 30 个项目。项目主题丰富多彩,比如用 emoji 做成的小游戏,使用用户提交的涂鸦做成的计算机动画,以及和本文一样对中国下手,把中国表意文字和部首做成可视化动画,等等,并给出了项目的源代码。

他还做了一些很有趣的东西,比比如微信终端版,格律诗编辑程序,真实一个传统文学的爱好者啊!

文言文亦能编程,该项目在GitHub摘得5500星!

文言文亦能编程,该项目在GitHub摘得5500星!

如果大家想试玩下,可以直接克隆作者的项目,然后按照语法去调试一下即可,macOS、Wondows、Linux的二进制文件将位于./build文件夹中。


Usage: wenyan [options] [input files]

Options:
--eval    -e <string>  : Give a string instead of a file (default: `')
--exec    -x <boolean> : Execute output (default: `false')
--inspect -i <boolean> : Interactive REPL (default: `false')
--lang    -l <string>  : Language: js/py (default: `js')
--log        <string>  : Log file (default: `/dev/null')
--output  -o <string>  : Output file (default: `/dev/stdout')
--roman   -r <boolean> : Romanize identifiers (default: `true')
./build/wenyan.js examples/helloworld.wy -o helloworld.js

作者还有一些其它好玩的项目,例如可以用程序无限生成的中国山水画,错山记(中文翻译哈),格律诗编辑程序,隐士等等,GitHub上都能找到,大家不妨去看一下

文言文亦能编程,该项目在GitHub摘得5500星!

  • GitHub链接:https://github.com/LingDong-/wenyan-lang

传送门:

项目代码:

https://github.com/LingDong-/wenyan-lang

项目主页:

http://wenyan-lang.lingdong.works/

线上IDE试玩:

http://wenyan-lang.lingdong.works/ide.html

个人主页:

https://lingdong.works/

赶紧去看看小哥的神创造!

安装与使用

文言文编程只需将repo下载到本地,而且本地已经安装Node,就能立即使用。现在它支持将wenyan lang转换成JavaScript和Python:


./build/wenyan.js examples/helloworld.wy -o helloworld.js

在这段命令中,如果不指定语言,程序将自动转化为JavaScript,若想转化成Python,请加入参数“—lang py”或是“-l py”。

用户也可以自行编译二进制文件。如果你只想尝尝鲜,在线IDE也是个不错的选择。

小编先去玩了!

文言文亦能编程,该项目在GitHub摘得5500星!

                                                                                           程序员生活志

                                                                    关注我,不错过任何一件程序员新鲜事儿!