来自:开源最前线(ID:OpenSourceTop)

这两天刷微博、朋友圈、公众号,发现大家都被一个文言文编程的项目圈粉了。

就连中科院计算所研究员、机器翻译领域知名专家刘群老师都赞叹道:后生可畏

到底是什么神仙项目,竟然获得如此高的评价?原来,这是一位卡内基梅隆大学(CMU)的大四学生开发的基于文言文的编程语言。

这个项目叫做Lingdong,可编译成Javascript,也可编译成Python,而且还有线上编辑器可直接运行。如今已经在Github上标星7K324个Fork(Github地址:https://github.com/LingDong-/)

而且发文前,Lingdong妥妥霸榜GitHub Trending日榜第一,单日斩获4000+Star!下面还是来看看Lingdong怎么用吧。

假如你想知道文言文是如何输出“Hello World”?,你会发现原来是这样的:

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

编译成JavaScript是这样的:

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

输出是这样的

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

再比如,我们大学时候的编程,总会有一道求100以内素数的练习题,放到文言文里会是怎样的呢?这时候,你就要用到一个名为“埃氏筛”的算法,完整文言文如下:

编译成JavaScript就是如下这样:

var 埃氏篩 = () => 0;
埃氏篩 = function(甲) {var 掩 = [];for (var _rand1 = 0; _rand1 < 甲; _rand1++) {掩.push(true);};var _ans1 = 甲 / 2;var 甲半 = _ans1;var 戊 = 2;while (true) {if (戊 == 甲半) {break;};var 戌 = 2;while (true) {if (戌 == 甲半) {break;};var _ans2 = 戊 * 戌;var 合 = _ans2;if (合 <= 甲) {掩[合 - 1] = false;} else {break;};var _ans3 = 1 + 戌;戌 = _ans3;};var _ans4 = 1 + 戊;戊 = _ans4;};var 諸素 = [];var 戊 = 2;while (true) {if (戊 == 掩.length) {break;};var _ans5 = 掩[戊 - 1];var 素耶 = _ans5;if (素耶) {諸素.push(戊);};var _ans6 = 1 + 戊;戊 = _ans6;};return 諸素
};
var _ans7 = 埃氏篩(100);
console.log(_ans7);

最后,我们来看看运行结果:

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97

你找不到文言文来夸它,那就只能说出一个字:牛!!!

此外,作者还提供了一个在线的IDE,你不妨赶紧试试,地址:http://wenyan-lang.lingdong.works/ide.html

你以为这就够了么?当然不,作者还做了个图灵机demo:

相关语法表

下面,我们在来看看相关的语法表,比如他是如何定义一个变量的:

还有一些运算是如何定义的呢?如下:

还有基本的数学运算:

最后还有函数定义:

看到这里,猿妹只能自叹自己没文化了,当年没能好好动脑敲代码。

安装与使用

说了这么多,要如何安装使用呢?你只需要克隆此项目, (或者直接下载 ./build/wenyan.js 然后赋予它执行权限,在终端中输入 chmod +x wenyan.js)。之后执行 ./build/wenyan.js 把源代码编译成为目标语言。如果执行此命令不带任何参数,则输出以下帮助信息。

Usage: wenyan [options] [input files]Options:
--eval    -e <string>  : Give a string instead of a file (default: `')
--exec    -x <boolean> : Execute output (default: `false')
--inspect -i <boolean> : Interactive REPL (default: `false')
--lang    -l <string>  : Language: js/py (default: `js')
--log        <string>  : Log file (default: `/dev/null')
--output  -o <string>  : Output file (default: `/dev/stdout')
--roman   -r <boolean> : Romanize identifiers (default: `true')

然后就可以尝试编译几个简单的例子啦:

./build/wenyan.js examples/helloworld.wy -o helloworld.js

如果你只是尝鲜,就通过前面的IDE地址就可以体验啦。

关于作者

作者是一名卡内基梅隆大学的大四学生,将在2020年取得计算机科学学位,虽然还未毕业但已经有多个实习经历。也有自己的个人项目网站。

通过他的Github主页,你还可以找到很多有趣的项目,例如可以用程序无限生成的中国山水画,age2death(抖音很火的看着自己慢慢变老),edges2calligraphy(把你的涂鸦变成中国书法)格律诗编辑程序,隐士等等,从这些项目可以看出,这是一个对中国文化很感兴趣的小哥哥。

最后再附上他的主页地址:https://lingdong.works/

大家看完本文,有什么想说的,欢迎在评论区留言打卡!


-END-

感谢大家置顶一下公众号,不要错过公众号每月的打卡活动!

第8期赠送20本2019年度最爆款技术书籍!

另外,新关注我们公众号的朋友,可以在公众号后台聊天框回复【1024】,可以免费获取2T的编程视频,算法、人工智能、Python、Java、Linux、Go、C语言、软考、英语等等资源 。

推荐阅读:

2019年互联网公司福利缩水指南!

月薪刚过万的IT人,手头还是有点紧!

搜罗上百本Python电子书免费分享

WPS 2019 最新正版激活到永久,亲测有效!

推荐↓↓↓

开源社区

给这个牛逼的项目点个赞,不得不服!

文言文编程就问你怕不怕?年度最骚的编程语言相关推荐

  1. 年度最骚的编程语言来了!大四学生发明文言文编程语言!

    程序员的成长之路 互联网/程序员/成长/职场 关注 阅读本文大概需要 2.8 分钟. 来自:开源最前线(ID:OpenSourceTop) 这两天刷微博.朋友圈.公众号,发现大家都被一个文言文编程的项 ...

  2. 文言文编程惊艳入世,程序员们有多天马行空?

    前段时间,GitHub 上出现的文言文做代码的项目,成为了世界上第一门文言文编程语言(当然,底层还是转换成 Python 或 JavaScript 运行). 古有科技大厂天才码农开宗立派,今有文言文编 ...

  3. 玩出新花样—文言文编程

    文言文编程 1.什么是文言文: 以下内容涉及到语文方面知识,若有疑问请出门右拐找您的语文老师 古代汉语是与现代汉语相对而言的,它指的是"五四"运动以前历代汉民族所使用的语言. 现今 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Nagios 安装文档
  2. 协作机器人鼻祖“重生”,卷土重来的Rethink能否给行业注入一针强心剂?
  3. oracle共享时监听,Oracle监听---共享连接参数配置介绍
  4. jquery拼接后css样式不生效_JQuery常用选择器以及操作属性和样式的方法介绍
  5. Java,开源,分享
  6. ecu根据什么信号对点火提前角_关于ECU的那点事
  7. boost::owner_hash相关的测试程序
  8. leetcode 769. Max Chunks To Make Sorted | 769. 最多能完成排序的块(Java)
  9. P3954 [NOIP2017 普及组] 成绩(python3实现)
  10. JasperReport学习笔记6-JRXML的标签
  11. Elasticsearch--进阶-match_phrase短语匹配---全文检索引擎ElasticSearch工作笔记012
  12. python中颜色介意用数字表示_利用Python实现颜色色值转换的小工具
  13. java实体null值显示_java反射实现前端接收实体对象,去除“null”字符串(示例代码)...
  14. 同样是数据分析师,他靠“打标签”总被夸,我天天加班取数还被骂
  15. PDF 翻译神器,再也不担心读不懂英文 Paper 了 | 开发攻略
  16. HLS playlist典型示例
  17. 矩表 - 现代数据分析中必不可少的报表工具
  18. 在云测平台对手机进行兼容性测试
  19. 均匀白噪声的定义及特点_白噪声深度分析
  20. tp5 微信新版本商家转到到零钱,v3秘钥,平台证书和平台证书序列号

热门文章

  1. 《生于忧患,死于安乐》
  2. Navicat ODBC驱动器管理器:未发现数据源名称并且未指定默认驱动程序
  3. 2013年移动互联网发展趋势报告
  4. MFS分布式文件系统及监控
  5. Virtual Private Network
  6. apache2.2 设置最大连接数 默认是150个(最详细)
  7. 百分之二十用计算机怎么算,巧用百分里油耗计算器,节省汽车油耗
  8. #详细说明# 解决在Python虚拟化境下,使用pip安装相应开发包 pipfile和pipfile.lock 文件不同步更新的问题
  9. 4-GPIO和LED
  10. 被数学社吊打祭——收集的干货