文言文编程语言来了,可是好像比英文更难写了!

oschina
 oschina
发布于 2019年12月19日
收藏 33

近日有开发者开源了一门新的编程语言,吸引了大量开发者的目光,短短几天获得了 3k+ star。

该语言名为“文言(wenyan-lang)”,这是一门采用文言文输入的编程语言,该语言不包括英文字符,仅包含繁体中文字符,并保留繁体引号「」。

先看看 Helloworld 怎么写:

吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
	吾有一言。曰「「問天地好在。」」。書之。
云云。

这段代码等效于以下 JavaScript 代码:

var n = 3;
for (var i = 0; i < n; i++) {
	console.log("問天地好在。");
}

输出:

問天地好在。
問天地好在。
問天地好在。

同时,标点和换行符是完全可选的,与古汉语一致,所以上面的代码等效于:

吾有一數曰三名之曰「甲」為是「甲」遍吾有一言曰「「問天地好在」」書之云云

Helloworld 看上去虽然简单,但是其实作为一门编程语言,这里的语法都有严格的定义:

变量

wenyan JavaScript
吾有一數。曰三。名之曰「甲」。 var a = 3;
有數五十。名之曰「大衍」。 var dayan = 50;
昔之「甲」者。今「大衍」是也。 a = dayan;
吾有一言。曰「「噫吁戲」」。名之曰「乙」。 var b = "alas!";
吾有一爻。曰陰。名之曰「丙」。 var c = false;
吾有一列。名之曰「丁」。 var d = [];
吾有三數。曰一。曰三。曰五。名之曰「甲」曰「乙」曰「丙」。 var a=1,b=3,c=5;

控制

wenyan JavaScript
若三大於二者。乃得「「想當然耳」」也。 if (3>2){ return "of course"; }
若三不大於五者。乃得「「想當然耳」」。若非。乃得「「怪哉」」也。 if(3<=5){return "of course"}else{return "no way"}
為是百遍。⋯⋯ 云云。 for (var i = 0; i < 100; i++){ ... }
恆為是。⋯⋯ 云云。 while (true) { ... }
凡「天地」中之「人」。⋯⋯ 云云。 for (var human of world){ ... }
乃止。 break;

运算

wenyan JavaScript
加一以二。 1+2
加一於二。 2+1
加一以二。乘其以三。 (1+2)*3
除十以三。所餘幾何。 10%3
減七百五十六以四百三十三。名之曰「甲」。 var a = 756-433;
夫「甲」「乙」中有陽乎。 a || b
夫「甲」「乙」中無陰乎。 a && b

容器

数组从 1 开始索引。

wenyan JavaScript
吾有一列。名之曰「甲」。充「甲」以四。以二。 var a = []; a.push(4, 2);
銜「甲」以「乙」。以「丙」 a.concat(b).concat(c);
夫「甲」之一。 a[0]
夫「甲」之其餘。 a.slice(1);
夫「玫瑰」之「「名」」。 rose["name"]
夫「寶劍」之長。 sword.length;

函数

wenyan JavaScript
吾有一術。名之曰「吸星大法」。是術曰。⋯⋯是謂「吸星大法」之術也。 function f(){...}
吾有一術。名之曰「六脈神劍」。欲行是術。必先得六數。曰「甲」。曰「乙」。曰「丙」。曰「丁」。曰「戊」。曰「己」乃行是術曰。⋯⋯是謂「六脈神劍」之術也。 function f(a,b,c,d,e,f){...}
吾有一術。名之曰「翻倍」。欲行是術。必先得一數。曰「甲」。乃行是術曰。乘「甲」以二。名之曰「乙」。乃得「乙」。是謂「翻倍」之術也。 function double(a){var b = a * 2; return b;}

但是作者表示上下文无关的语法描述还在构建中。

文言语言采用自然语言处理共享了古典汉语语法,将语言编译为 JavaScript 或 Python,并且图灵完备。同时它不仅提供了一个配套在线 IDE,还提供了大量算法与数据结构示例,包括快排、汉诺塔问题与斐波那契数列表示等。

--------------------------------

华为云邀请您关注【最强AI技术博客号】,包括最前沿的技术动态、技术文章、案例实战等,此外关注还有机会赢取精美大奖(HDC.Cloud门票、AI课程、AI书籍)。点击 https://url.cn/5klEr02 ,登入华为云账号,关注。(抽奖方式请见论坛文章 https://bbs.huaweicloud.com/blogs/139292

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:文言文编程语言来了,可是好像比英文更难写了!
加载中

精彩评论

icoffin
icoffin
如果计算机和编程语言是中国首先发明的,那真的是老外的噩梦
百科上神
百科上神
嗯,中国终于是做研究的闲人了。这是文艺爆发的初潮。
Nainse9
Nainse9
有这古文造诣你写啥程序,做个国学大师多好
画面
画面
评论里别那么严肃嘛,作者也是写着玩儿。。。
量子超算
这是脑残呀 把简单的 故意搞得 复杂
应该这样写
若(诸葛亮.活着)
{
屏幕.打印("诸葛亮还活着");
}然{
屏幕.打印("诸葛亮已经死了");
}

最新评论(98

SPFA之死
SPFA之死
我问一下:这玩意速度有没有C快?代码有没有Py简洁?通用性有没有Java好?综合素质比得过谁?在国际上使用这个语言容易理解吗?如果以上回答都是否定,那这玩意和花瓶有什么区别?
Yu7
Yu7
你自己做不出来就说人家闲的。我看你是酸的。你也别告诉我你会做,不屑去做,做出来再说,不然就是酸。
757390
757390
逻辑鬼才 你也是闲的 你去打游戏吧
supperman
supperman
文言文在精简压缩,作者完全乱来;

关键词应该为:

公 类 人(){

公 空 主法(文串[] 入参){
系统 .出.映出("好,天下");
}

}
曾建凯
曾建凯
作为对文言文文法的研究,表示万分敬佩。可是却不认可将研究的精力放在这里。写程序的目的不是为了艰深难读,而是通俗易懂易于维护。文言文本身作为语言体系,就已经是过去式的文体,现代人理解尚且费劲,更遑论以此为编程的语言。这只是闭门造车的又一产物,实在不值得大力提倡和广为流传。应该将研究的成果,作为文言文的转译器,帮助现代人理解古文的思想和哲学,才是更好的产品。
卞林
卞林
可以当加密库
中华人民共和国程序员
中华人民共和国程序员
这是有多看不起国学?
中华人民共和国程序员
中华人民共和国程序员
字或词的意思在不同的语境中可能不同。
中华人民共和国程序员
中华人民共和国程序员
创造精神值得学习,只是这文言水平……一言难尽
B
Braycep
人才。。。
返回顶部
顶部