来源丨开源最前线(ID:OpenSourceTop)
猿妹这两天刷微博、朋友圈、公众号,发现大家都被一个文言文编程的项目圈粉了。 就连中科院计算所研究员、机器翻译领域知名专家刘群老师都赞叹道:后生可畏
到底是什么神仙项目,竟然获得如此高的评价?原来,这是一位卡内基梅隆大学(CMU)的大四学生开发的基于文言文的编程语言。 这个项目叫做Lingdong,可编译成Javascript,也可编译成Python,而且还有线上编辑器可直接运行。如今已经在Github上标星7K,324个Forkhttps://github.com/LingDong-/而且发文前,Lingdong妥妥霸榜GitHub Trending日榜第一,单日斩获4000+Star!下面还是来看看Lingdong怎么用吧。假如你想知道文言文是如何输出“Hello World”?,你会发现原来是这样的:吾有一數。曰三。名之曰「甲」。 為是「甲」遍。 吾有一言。曰「「問天地好在。」」。書之。 云云。
var n = 3; for (var i = 0; i < n; i++) { console.log('問天地好在。'); }
再比如,我们大学时候的编程,总会有一道求100以内素数的练习题,放到文言文里会是怎样的呢?这时候,你就要用到一个名为“埃氏筛”的算法,完整文言文如下: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.s/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(把你的涂鸦变成中国书法)格律诗编辑程序,隐士等等,从这些项目可以看出,这是一个对中国文化很感兴趣的小哥哥。
|