美文网首页码农崛起(iOS、Android、java、c++等)
文史上最骚的编程语言来了!大四学生发明文言文编程语言!秀的我头皮

文史上最骚的编程语言来了!大四学生发明文言文编程语言!秀的我头皮

作者: 程序员阿狸 | 来源:发表于2020-01-06 16:12 被阅读0次

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

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

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

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

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

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

    吾有一數。曰三。名之曰「甲」。

    為是「甲」遍。

        吾有一言。曰「「問天地好在。」」。書之。

    云云。

    编译成JavaScript是这样的:

    varn =3;

    for(vari =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   : Give astringinsteadofa file (default: `')

    --exec    -x  : Execute output (default: `false')

    --inspect -i  : Interactive REPL (default: `false')

    --lang    -l   : Language: js/py (default: `js')

    --log          : Log file (default: `/dev/null')

    --output  -o   : Output file (default: `/dev/stdout')

    --roman   -r  : Romanize identifiers (default: `true')

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

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

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

    欢迎刚入门的Java小白朋友们加入Java技术交流群:686,827,638  群内提供免费的Java的学习资料源码,笔记,PDF教程,学习视频,开发工具等

    关于作者

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

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

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

    不知道大家是怎么看的呢?欢迎评论,说说你的看法!

    相关文章

      网友评论

        本文标题:文史上最骚的编程语言来了!大四学生发明文言文编程语言!秀的我头皮

        本文链接:https://www.haomeiwen.com/subject/xwykactx.html