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


Hello wenyan

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

项目地址:https://github.com/LingDong-/wenyan-lang

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

学语言嘛,当然先从 “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

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

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,可以直接编译执行代码。

快排

点击查看大图

曼德博集合

点击查看大图

看完这些代码让我感觉:

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

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

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

中文编程语言_文言文编程语言,让你明白什么叫“中文比英语还难”。相关推荐

  1. 可视化编程语言_可视化编程语言影响图

    可视化编程语言 Gephi和Sigma.js的网络可视化教程 (A network visualization tutorial with Gephi and Sigma.js) Here's a p ...

  2. mysql数据库 中文乱码_在CMD中操作mysql数据库出现中文乱码解决方案

    百度了一下..有说将cmd字符编码用chcp命令改为65001(utf8字符编码),可这样之后根本无法输入中文,查询出的中问结果依旧乱码 其实,只要保证cmd客户端和MySQL两者编码一致即可. 但现 ...

  3. 易语言 mysql查询 中文乱码_大佬们E语言连接MYSQL输出中文乱码怎么破

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 .版本 2 .支持库 mysql .支持库 iext .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击 数据库连接句柄 = 连接MySql (& ...

  4. springmvcget中文乱码_解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题...

    新配置一个spring的MVC项目,发现对Get请求的中文参数出现了乱码: 查看了SpingMVC中关于编码的配置(在web.xml中),如下: encodingFilter org.springfr ...

  5. python输入中文教程_如何用Python从头开始实现一个中文拼音输入法?

    中文输入法是一个历史悠久的问题,但也实在是个繁琐的活,不知道这是不是网上很少有人分享中文拼音输入法的原因,接着这次NLP Project的机会,我觉得实现一发中文拼音输入法,看看水有多深,结果发现还挺 ...

  6. python可不可以用中文编写_震惊!!!python可以用中文来写代码

    说明: 偶尔间试了一下,python可以用中文来写代码,除了一些python内置函数,和运算符不能用中文外,其它的比如新定义的类名.函数名.变量名,甚至是函数间传的参数都可以用中文来代替.这是国人全民 ...

  7. lua 不支持中文字符_英雄联盟跳票?不支持中文?别急看这里!界面最强翻译!...

    大家期待英雄联盟手游已经很久了,16 号放出消息苦苦等待 28 号.老范跟大家的心情是一样的,注册拳头账号遇到种种问题,半天注册不成功等,要么就是卡在最后一步. 注册麻烦就不用说了,约定好的日子就跳票 ...

  8. idea设置中文界面_《英雄联盟手游》游戏界面中文翻译图文分享 如何设置中文...

    导读 英雄联盟手游怎么设置中文?英雄联盟手游界面英文什么意思?我们都知道这款游戏刚进入以后都是英文或者其他的确的语言,很家都想知道游戏界面对应的中文意思!话不多说,下面,就随小编来了解一下吧! 英雄联 ...

  9. birt什么意思中文翻译_有含义的英文网名带中文翻译

    Later(后来) Virus(病毒) Review(旧爱) wave(浪) Dimples(小酒窝) Rascal(痞子) Blove pupil(蓝色瞳孔) 比较有含义的英文游戏名字 holic( ...

最新文章

  1. 6个快速优化回归测试套件的方法,你都知道吗?
  2. 电影天堂React Native 客户端
  3. 查看idea的错误日志信息
  4. bootstrap中导航、导航栏、表单及自定义表单
  5. 从程序员到项目经理(9):程序员加油站 -- 再牛也要合群【转载】
  6. 中lisp文件_关于 Emacs 中的变量你需要知道的事情 | Linux 中国
  7. 优化网页代码提高网页访问速度
  8. ORACLE备份策略(ORACLE BACKUP STRATEGY)
  9. 红旗与火狐携手打造优质开源体验,推出红旗Linux专版火狐浏览器
  10. 搭建自己的ngrok服务
  11. cisco ASA
  12. shell脚本操作hbase的命令
  13. 开源 ASP.NET CMS
  14. Dorado7自定义下拉框
  15. Centos校准时间
  16. 2020伊始,电动车又给自己刷了一遍谎言buff
  17. 11.1-4日,RTE2022 第八届实时互联网大会邀您“聚享万象”,线上报名开启
  18. 智能家居系统模型设计2.0
  19. 保护信息安全,实名认证该怎么选?
  20. vue3+ts+vite,使用高德api实现搜索城市展示在地图上

热门文章

  1. 提问征集:对话VLC首席开发者Jean-Baptiste Kempf
  2. 网易云信今年发布的WE-CAN有哪些亮点?
  3. 【公开课预告】:六款开源LL-HLS/LL-DASH播放器评测
  4. 刘文峰:让科技成就艺术创意
  5. 音视频技术开发周刊 67期
  6. 倒计时2天,WebRTCon 2018有哪些有趣有料分享与活动?
  7. 服务器tail正常,cat正常,vim打开中文乱码
  8. kafka _命令行操作
  9. Storm 04_Storm单机模式搭建完全分布式安装部署集群drpc
  10. java基础---try后小括号(1.7后IO流的关闭方式)