文言 (编程语言)
文言(又称“文言文编程语言”,英语:wenyan-lang)是一门以汉语文言文为基础进行程序编写所用的语言。编译器主要以JavaScript实现,支持将原始码编译为JavaScript、Python或Ruby代码。[5][6]
编程范型 | 多范型:函数式、指令式、结构化、面向对象、反射式 |
---|---|
设计者 | 黄令东(Lingdong Huang) |
实现者 | 文言开发团队 |
发行时间 | 2019年[1] |
当前版本 |
|
操作系统 | 跨平台 |
许可证 | MIT授权条款 |
文件扩展名 | .wy |
网站 | https://wy-lang.org |
派生副语言 | |
爪哇文言、标准文言[3] | |
启发语言 | |
Python、JavaScript、《易经》 |
不同于大部分中文编程语言,文言文编程语言不只是以中文取代其他编程语言的关键字。它定义了自己的语法,使之读起来接近古文。文言文编程语言常用的符号只有中文字和引号,亦不须分行,以符合古人的书写习惯。[7][8][9]
历史
编辑文言文编程语言的开发者是来自卡内基梅隆大学的大四学生黄令东。在这一语言之前,他曾成功设计出了电脑自动作中国山水画的程序。2019年,他萌生出文言编程的想法,那时他刚完成编程语言核心的课程。他希望能够设计出一门“能够让古老的中国典籍在命令行的字符间重获新生”的语言,而这就是文言文编程语言的雏形。
“我总是想拖延这个语言的设计。当时我给自己的借口就是‘我想要多读一些中国古籍’,但后来我转念一想,所谓的‘想多读点书’仅仅是‘拖延症’这种字眼的美化罢了。我决定付诸实践,入手开发了。”在接受IEEE采访时他如是说,“那段时间是期末考试周,我们没有课。所以我没有选择复习任何东西,而是去利用闲暇开发‘文言’;不过四天,我就已经实现了核心功能。”当问及他是否对文言文情有独钟时,他给出了肯定回答——当时他正在阅读《淮南子》。[10]
语法
编辑文言编程语言的语法基本遵循中国古籍中的文言规则。本语言仅需要使用中文字和引号,其余的标点符号、断行、缩进都不是必要的,原则上以繁体中文书写。[11]下面将会列出一些例子。[12][13]
Hello, world!
编辑吾有一言。曰「「問天地好在。」」
書之。
变量
编辑使用汉字组合作为变量的名称,而不是拉丁字母。这些变量有各自的类型,如“数”、“言”等。
文言代码 | JavaScript对应代码 | Python对应代码 |
---|---|---|
吾有一数。曰三。名之曰「甲」。
|
var a = 3
|
a = 3
|
有数五十。名之曰「大衍」。
|
var dayan = 50
|
dayan = 50
|
吾有一言。曰「「噫吁嚱」」。名之曰「乙」。
|
var b="Alas!"
|
b = "Alas!"
|
布尔值
编辑布尔值用“爻”作为类型名。其值真、假分别用“阳”“阴”表示。
文言代码 | JavaScript对应代码 | Python对应代码 |
---|---|---|
吾有一爻。曰阴。名之曰「丙」。 |
var c = false |
c = False
|
条件与流程控制
编辑用“若……乃得……”句式作为if判断,用“为是”作为循环关键字。
文言代码 | JavaScript对应代码 | Python对应代码 |
---|---|---|
若三不大于五者。乃得「「想当然耳」」。若非。乃得「「怪哉」」也。 |
if (3 <= 5) {
return "of course";
} else {
return "impossible";
}
|
if 3 <= 5:
print("of course")
else:
print("impossible")
|
为是百遍。……云云。
|
for (var i = 0; i < 100; i++) { ... }
|
for i in range(0, 100):
...
|
恒为是。……云云。
|
while(true) { ... }
|
while True:
...
|
乃止。 |
break; |
break
|
运算
编辑文言代码 | JavaScript对应代码 | Python对应代码 |
---|---|---|
加一以二。乘其以三。 |
(1 + 2) * 3 |
(1 + 2) * 3
|
除十以三。所余几何。 |
10 % 3 |
10 % 3
|
减七百五十六以四百三十三。名之曰「甲」。 |
var a = 756 - 433 |
a = 756 - 433
|
容器类型
编辑使用文言文中的衔接词来表达容器类型。由于尊重汉语习惯,数列的下标都是从一开始的。
文言代码 | JavaScript对应代码 |
---|---|
吾有一列。名之曰「甲」。充「甲」以四。以二。 |
var a=[]; a.push(4, 2);
|
夫「剑」之长。 |
sword.length;
|
夫「甲」之一。 |
a[0]
|
夫「玫瑰」之「「名」」。 |
rose["name"]
|
定义函数
编辑使用“吾有一术”进行声明。
文言代码 | JavaScript对应代码 | Python对应代码 |
---|---|---|
吾有一术。名之曰「大法」。是术曰。...是谓「大法」之术也。 |
function f() {...} |
def f:...
|
使用模块
编辑吾嘗觀「「易經」」之書。方悟「運」「占」之義。
争议
编辑作为一个纯中文的编译语言,文言在国内外受到了广泛争议。多数持反对意见的人认为,这一语言因为文言文本身具备的复杂性和在现代社会的不普及性,很难收到广泛使用,会抬高中国人学习编程语言的门槛而不是降低;而持支持态度的人认为,大四学生能够吸取古籍,制作出如此完备而且系统的语言,其意志与精神令人惊叹。
参考内容
编辑- ^ 文言历次发布列表. [2021-11-17]. (原始内容存档于2021-12-03).
- ^ Release 0.3.4. 2020年7月29日 [2022年12月19日].
- ^ 文言方言等事项列表. [2021-11-17]. (原始内容存档于2021-11-17).
- ^ 版本0.0.2. [2021-11-17]. (原始内容存档于2021-11-17).
- ^ wenyan - Esolang. esolangs.org. [2021-09-06]. (原始内容存档于2021-09-06).
- ^ 文言文也能寫程式,中國留美大學生開發出 wenyan-lang 程式語言. 电脑王阿达. 2020-02-04 [2021-09-06]. (原始内容存档于2021-12-11) (中文(繁体)).
- ^ 文言文也可以用來寫程式?!. 电子工程专辑. 2020-02-13 [2021-09-03]. (原始内容存档于2021-12-11) (中文(繁体)).
- ^ World's First Classical Chinese Programming Language. IEEE Spectrum. 2020-01-31 [2021-09-03]. (原始内容存档于2021-11-17) (英语).
- ^ 大四学生发明文言文编程语言,设计思路清奇. 腾讯云. [2021-09-06]. (原始内容存档于2021-12-11).
- ^ Charles Q. Choi. World's First Classical Chinese Programming Language. IEEE Spectrum. 2020-01-31 [2021-12-11]. (原始内容存档于2021-11-17) (英语).
- ^ GitHub - wenyan-lang/wenyan: 文言文編程語言 A programming language for the ancient Chinese.. GitHub. [2021-09-03]. (原始内容存档于2021-10-13) (英语).
- ^ 《文言阴符·wenyan-lang操作指南》. [2021-12-20]. (原始内容存档于2021-10-11).
- ^ 《文言0.0.2指南》
- ^ Wenyan-lang. esoteric.codes. 2020-11-12 [2021-09-06]. (原始内容存档于2021-10-14) (英语).