毕竟有易语言在前,有人认为中文可以降低国人学习编程的门槛,也增强汉语的国际地位。然而最近大火的文言文编程语言,让你明白什么叫“中文比英语还难”。

Hello wenyan

最近有个 GitHub 项目火了 —— 文言编程语言 / wenyan-lang。

现在这个项目已经超过 10K Stars 了(昨天看还是 9K,一夜涨了 1K),咱赶紧来研究下。

学语言嘛,当然先从 “Hello world” 开始,看看文言版怎么写:

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

没看懂,编译成 JavaScript:

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

运行:

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

完全的中文编程有木有,使用古汉语语法,具有图灵完整性,可以编译成 JavaScript 或 Python。

如同古人篆书一般,一顿之乎者也,程序写好了!

基础语法

赶紧学起来,第一章变量走起,中文编程肯定不能用 abc,还好我们有甲乙丙:

wenyan JavaScript
吾有一數。曰三。名之曰「甲」。 var a = 3;
有數五十。名之曰「大衍」。 var dayan = 50;
吾有一言。曰「「噫吁戲」」。名之曰「乙」。 var b = "alas!";

true/false 我们也有对应的 陽/陰(繁体的阳/阴),类型就称为“爻”(卦符的基本符号):

wenyan JavaScript
吾有一爻。曰陰。名之曰「丙」。 var c = false;

if 判断也没问题:

wenyan JavaScript
若三不大於五者。乃得「「想當然耳」」。若非。乃得「「怪哉」」也。 if(3<=5){return "of course"}else{return "no way"}

循环更为简洁,直接声明次数,最后以云云结尾:

wenyan JavaScript
為是百遍。⋯⋯ 云云。 for (var i = 0; i < 100; i++){ ... }
恆為是。⋯⋯ 云云。 while (true) { ... }
乃止。 break;

加减乘除一应俱全,连逻辑运算符都支持:

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

容器类型也支持,而且尊重汉语习惯,首个下标是从一开始:

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

下面是进阶语法了,定义一个函数 吾有一術:

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

代码实例

作者提供了经典程序题目的文言版代码,比如埃拉托斯特尼筛法、 快速排序、曼德博集合、汉诺塔。

另外作者还提供了在线 IDE,可以直接编译执行代码。

快排

曼德博集合

看完这些代码让我感觉:

《九章算术》就是一本算法导论;

《孙子兵法》就是一本安全攻防;

《易经》大概是一本二进制逆向吧…

一些题外话

该项目的作者名叫 Huang Lingdong,卡内基梅隆大学(CMU)计算机专业大四学生。这么一位世界顶级高校的大佬,做这个项目其实只是一个期末作业亦或业余爱好。

点进 issues,广大中国编程爱好者也表达了对作者的敬佩:

然而当我也惊叹这个项目的脑洞和创意时,在 issues 里还是看到了一些令我非常不悦的话题:

这位兄弟的脑洞看来比作者还大…

不然怎么把一个编程语言联系到风投…

这位兄弟前半句是对的,但后半句似乎有一些鄙夷和不屑?

我在下边回复给他一个表情:

当然哪里都少不了“意义党”:

真是哪里都有上纲上线的人,作者自娱自乐写了一个开源项目,为此查阅大量古汉语资料,也不图什么名利,就获得几千 Stars,就成为了某些人嘴里的恰烂钱、无意义、垃圾项目。

而当我点开这些人的头像时,发现他们挂着都是一些 Fork 和不明所以的 Repo,我也不知道他们挂这些的意义是什么…

我当然也从源码看出,这个项目可能叫“解释器”更贴切一些,但作者也从来没说这是一个多么认真、能用于生产环境的正式项目。

Esolang

如果你和上面的他们有类似的想法,那么我给你普及一个编程名词:

Esoteric programming language,简称 Esolang,它们的设计被用于测试计算机语言设计的极限,作为一个概念的证明,或仅仅是一个玩笑。Esolang 创作者通常并不打算让它成为主流编程语言,他们几乎不会在意语言的可用性,甚至恰恰相反,会故意增加使用难度。

比如 Brainfuck,它是在 1993 年被创造的编程语言,语法仅包含八种符号,没有任何单词,用它打印 Hello world 是这样的:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.

再比如 MarioLANG,它同样只能使用符号,需要使用形似马里奥关卡的语法来书写:

++++:       >       >  +:+:+:+:+:+:+:::::
====+      >^===    """=================+:-):(:^=   =                       !=========    =                      #= !             .+.,:-<=###           ======"

Parenthesis Hell,言如其名,括号地狱,只能使用括号来书写:

(()()(()()(()()()()((()()(()(()((()((()()()((()((()()()((()((((()()(()(
)()()()()(((()(((()((()((((()(((()()(()()((()((()()()((()()(()()()()(()
()()()(()()()()(()(())))))))))))))))))))))))))))))))))))))))))))))))))

所以 wenyan-lang 实际也属于 Esolang,并不是用于生产的语言,你在这些语言中寻找意义,我觉得你这种行为就挺没意义的…

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

文言文编程火了,可我完全学不懂相关推荐

  1. 文言文编程背后-语言的本质

    一.文言文编程 最近github上有个文言文编程火了,效果看起来还比较牛B,看起像是是文言文,读起来也能明白一定的意思.(可以留言给我索取官网体验) 上图代码比较简单就是输出三遍hello world ...

  2. 用c语言写一个唐诗的程序,文言文编程95后又出新作,在287051行古诗中找出了“唐诗幻方”!...

    还记得那位用文言文编程的中国小伙吗? 图 | 文言文编程(来源:受访者) 2019 年 ,22 岁的上海小伙黄令东用文言文编程,当时他还在读大四,凭借该项目小伙子瞬间"原地出道". ...

  3. 文言文编程?厉害了程序员!

    点击蓝字 关注我们 因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 来源于网络,侵删 你能看出来,这首诗妙在哪里吗? 来源:量子位(ID ...

  4. 太秀了!那个在 GitHub 用文言文编程的小哥,竟从 28 万行唐诗中找出了对称矩阵

    来自量子位 下面这张图,你能看出来,这首诗妙在哪里吗? 其实,横着读是一首诗,竖着读还是这首诗! 而且,这首诗可不是乱编的,其中的诗句都来自<全唐诗>,读起来也颇有意境. 创造这个奇妙组合 ...

  5. 太秀了!那个在 GitHub 用文言文编程的小哥,竟从 28 万行唐诗中找出了对称矩阵...

    点击上方"Github中文社区",关注 触达Github项目 来源:量子位 大家好,请看下面这张图,你能看出来,这首诗妙在哪里吗? 其实,横着读是一首诗,竖着读还是这首诗! 而且, ...

  6. 厉害了!那个用文言文编程的小哥,竟从28万行唐诗中找出了对称矩阵

    本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处 梦晨 萧箫 发自 凹非寺 你能看出来,这首诗妙在哪里吗? 其实,横着读是一首诗,竖着读还是这首诗! 而且,这首诗可不是乱编的,其中 ...

  7. 打算自学编程,但是不知道该先学哪门语言入门?

    最近,看到这样的一个话题:"打算自学编程,但是不知道该先学哪门语言入门?编程初学者应该先学C++.Java还是Python?",作为一个新手,应该学什么语言入门比较好呢?相信这是困 ...

  8. 文言文编程可以编译成PHP吗,人人都可以学会编译原理-开篇

    编译技术在我们日常的工作中可以说无处不在,React JSX语法的解析,Typescript转化为Javascript,XML.JSON的解析,Spring字节码生成技术,PHP的模板引擎,还有最近很 ...

  9. 文言文编程就问你怕不怕?年度最骚的编程语言

    来自:开源最前线(ID:OpenSourceTop) 这两天刷微博.朋友圈.公众号,发现大家都被一个文言文编程的项目圈粉了. 就连中科院计算所研究员.机器翻译领域知名专家刘群老师都赞叹道:后生可畏 到 ...

最新文章

  1. python是个啥-初识python: 面向对象是个啥?
  2. 04 ffmpeg 从媒体文件解封装,输出YUV420图像
  3. 百雀羚、林清轩、逐本走红背后,植物基护肤品的春天来了?
  4. No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv7 armv6)
  5. string容量JAVA_java的StringBuilder类的长度和容量有什么区别呢?
  6. 消息队列_消息队列:kafka
  7. (计算机组成原理)第一章计算机系统概述-第四节:计算机的性能指标
  8. c语言RTK算法,C-RTK 9P定位系统
  9. 封装Js事件代理方法
  10. 数据绑定如何在AngularJS中运行?
  11. Hadoop工具让数据仓库迁移更轻松
  12. 谷歌翻译api小尝试
  13. 练习4-11 统计素数并求和
  14. SQL Server存储过程文本加密与解密过程详解 2019版可用
  15. 微信小程序报错40163-“errmsg“解决方案
  16. 2019奥鹏四月份考试英语计算机,中石油华东2019年秋季学期《大学英语4》在线考试补考(适用于2020年4月份考试)题目【标准答案】...
  17. MATLAB遗传算法解决旅行商(TSP)问题
  18. 通过 JavaMail 访问 Hotmail 邮箱(hotmail不提供smtp和pop3服务)
  19. 我94年的,做了一年外包我就跑路了
  20. java 横向 打印出来_java jacob调用打印,word,excel横向打印

热门文章

  1. 阿里巴巴Java开发手册.pdf
  2. 阿里巴巴数学竞赛详细解答(据说晋级的直接P8岗)
  3. 阿里巴巴九大美女高管个个身价上亿,你最佩服谁?
  4. xcode不支持ios12beta系统
  5. 开关问题 POJ - 1830 高斯消元
  6. 科研合作应该互相尊重
  7. APP二维码下载 自动跳转
  8. 气象站可以用计算机分析什么数据,自动气象站监控软件窗口显示信息分析与应用...
  9. RocketChat 代码目录结构
  10. dlink 备份文件_dlink基本配置命令