前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文言文也能编程?此诚年度最骚语言也

文言文也能编程?此诚年度最骚语言也

作者头像
C语言中文社区
发布2022-05-30 14:50:59
6380
发布2022-05-30 14:50:59
举报
文章被收录于专栏:C语言中文社区

近日,GitHub 上一个叫做文言文(wenyan)的编程语言项目火了,该项目迅速引发了猿们的关注热议,其 Star数一路涨到过万,热度还在持续上涨。只需要在在线编辑器上,或下载一个编译器,就可以用文言文进行编程?

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

代码语言:javascript
复制
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
    吾有一言。曰「「問天地好在。」」。書之。
云云。

没看懂?编译成 JavaScript:

代码语言:javascript
复制
var n = 3;
for (var i = 0; i < n; i++) {
    console.log("問天地好在。");
}

运行:

代码语言:javascript
复制
問天地好在。
問天地好在。
問天地好在。

再比如,一道求100以内素数的练习题,放到文言文里

用到一个名为“埃氏筛”的算法,完整文言文如下:

编译成JavaScript:

代码语言: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);

运行:

代码语言:javascript
复制
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

wenyan-lang 有哪些特性

> 可编译成 JS 或 Python;

> 图灵完备;

> 包括在线 IDE 和 编译器;

> 源码开源了

语法备忘单

该项目团队正在加紧构建与上下文无关的语法描述。同时,可以查看以下备忘单或src/parser.js 了解该项目语法。

变量

控制

数组(从 1 开始的)

渲染器

src / render.js 可以将 wenyan 程序渲染为有历史感的印刷书籍页面图像。它还可以将生成的SVG 文件解析回原始程序。下面是用 wenyan 编写的通用图灵机的渲染图:

安装与使用

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

代码语言:javascript
复制
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')

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

代码语言:javascript
复制
./build/wenyan.js examples/helloworld.wy -o helloworld.js

精通的编程语言有:Python、 JS (& HTML & CSS)、Processing、C/C++、C#, MATLAB、Lua、SML 和 AppleScript。

此前,他曾在迪士尼研究院、 Antimodular 研究院和《纽约时报》实习,目前已经有将近 30 个项目。项目主题丰富多彩,比如用 emoji 做成的小游戏,使用用户提交的涂鸦做成的计算机动画,以及和本文一样对中国下手,把中国表意文字和部首做成可视化动画,等等,并给出了项目的源代码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档