文言 (编程语言)

文言（又称“文言文編程語言”，）是一门以汉语文言文为基础进行程序编写所用的语言。編譯器主要以JavaScript實作，支持將源碼編譯為JavaScript、Python或Ruby程式碼。

不同於大部分中文程式語言，文言文編程語言不只是以中文取代其他程式語言的關鍵字。它定義了自己的語法，使之讀起來接近古文。文言文編程語言常用的符號只有中文字和引號，亦不須分行，以符合古人的書寫習慣。

历史
文言文編程語言的开发者是来自卡内基梅隆大学的大四学生黄令东。在这一语言之前，他曾成功设计出了电脑自动作中国山水画的程序。2019年，他萌生出文言编程的想法，那时他刚完成编程语言核心的课程。他希望能够设计出一门“能够让古老的中国典籍在命令行的字符间重获新生”的语言，而这就是文言文編程語言的雏形。

“我总是想拖延这个语言的设计。当时我给自己的借口就是‘我想要多读一些中国古籍’，但后来我转念一想，所谓的‘想多读点书’仅仅是‘拖延症’这种字眼的美化罢了。我决定付诸实践，入手开发了。”在接受IEEE采访时他如是说，“那段时间是期末考试周，我们没有课。所以我没有选择复习任何东西，而是去利用闲暇开发‘文言’；不过四天，我就已经实现了核心功能。”当问及他是否对文言文情有独钟时，他给出了肯定回答——当时他正在阅读《淮南子》。

语法
文言编程语言的语法基本遵循中国古籍中的文言规则。本语言僅需要使用中文字和引號，其餘的標點符號、斷行、縮排都不是必要的，原則上以繁體中文書寫。下面将会列出一些例子。《文言0.0.2指南》

Hello, world!
吾有一言。曰「「問天地好在。」」
書之。

例题：A+B问题
吾有二數。曰「甲」。曰「乙」。
施「除空」於「「「輸入」」」於「丙」。
夫「丙」之「甲」。變之為數。名之曰「甲」。
夫「丙」之「乙」。變之為數。名之曰「乙」。
加「甲」於「乙」。書之。

变量
使用汉字组合作为变量的名称，而不是拉丁字母。这些变量有各自的类型，如「数」、「言」等。
+变量文言代码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 % 310 % 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:...

使用模組
吾嘗觀「「易經」」之書。方悟「運」「占」之義。

参考内容

Category:中文編程語言
Category:文言文