zoukankan      html  css  js  c++  java
  • 【华为云技术分享】文言文也能编程?此诚年度最骚语言也

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

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

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

    没看懂?编译成 JavaScript:

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

    运行:

    1 問天地好在。
    2 問天地好在。
    3 問天地好在。

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

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

    编译成JavaScript:

     1 var 埃氏篩 = () => 0;
     2 埃氏篩 = function(甲) {
     3     var 掩 = [];
     4     for (var _rand1 = 0; _rand1 < 甲; _rand1++) {
     5         掩.push(true);
     6     };
     7     var _ans1 = 甲 / 2;
     8     var 甲半 = _ans1;
     9     var 戊 = 2;
    10     while (true) {
    11         if (戊 == 甲半) {
    12             break;
    13         };
    14         var 戌 = 2;
    15         while (true) {
    16             if (戌 == 甲半) {
    17                 break;
    18             };
    19             var _ans2 = 戊 * 戌;
    20             var 合 = _ans2;
    21             if (合 <= 甲) {
    22                 掩[合 - 1] = false;
    23             } else {
    24                 break;
    25             };
    26             var _ans3 = 1 + 戌;
    27             戌 = _ans3;
    28         };
    29         var _ans4 = 1 + 戊;
    30         戊 = _ans4;
    31     };
    32     var 諸素 = [];
    33     var 戊 = 2;
    34     while (true) {
    35         if (戊 == 掩.length) {
    36             break;
    37         };
    38         var _ans5 = 掩[戊 - 1];
    39         var 素耶 = _ans5;
    40         if (素耶) {
    41             諸素.push(戊);
    42         };
    43         var _ans6 = 1 + 戊;
    44         戊 = _ans6;
    45     };
    46     return 諸素
    47 };
    48 var _ans7 = 埃氏篩(100);
    49 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

    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 把源代码编译成为目标语言。如果执行此命令不带任何参数,则输出以下帮助信息。

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

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

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

    作者何许人也

    作者:Huang Lingdong 。其在线简历中透露是一名卡内基梅隆大学(CMU)的大四学生,将于 2020 年获得计算机科学学位。

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

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

    直接上传送门

    项目代码:

    https://github.com/LingDong-/wenyan-lang

    项目主页:

    http://wenyan-lang.lingdong.works/

    线上IDE试玩:

    http://wenyan-lang.lingdong.works/ide.html

    个人主页:

    https://lingdong.works/

    来源:养码场

  • 相关阅读:
    CentOS6.2编译安装Nginx1.2.0
    mysql之主从复制篇
    CentOS6.2编译安装PHP5.4.0
    c# 多线程 编程
    QQ空间及邮箱验证码登录的校验方式及自动登录的解决方案
    C# 动态编译、动态执行、动态调试
    在Visual C#中用ListView显示数据记录
    推荐一个免费的HTTP抓包分析工具 Fiddler Web Debugger
    C#简繁体转换方法(Microsoft.Office.Interop.Word)
    C#读取字符串类型XML
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/12526320.html
Copyright © 2011-2022 走看看