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

news/2024/10/17 20:34:17/

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

学语言嘛,当然先从 “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

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

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

作者何许人也

作者: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/

来源:养码场 


http://www.ppmy.cn/news/581978.html

相关文章

codemirror6 制作markdown编辑器(源码模式)

codemirror 制作markdown源码模式编辑器 安装 安装codemirror和codemirror的markdown语言扩展 npm install codemirror npm install codemirror/lang-markdownvar code "5b23b2ed-bdce-4088-b229-1c092761c49b"在vue中使用 <template><div ref"do…

Synchronized锁

概览 锁的实现基于对象头重的MarkWord&#xff0c;分为 无锁 -> 偏向锁 -> 轻量锁 -> 重量锁 四个状态 状态转换 锁的获取与释放 模型&#xff1a; Markword&#xff1a;指向Monitor的指针Monitor&#xff1a;_cxq&#xff0c;_EntryList,_WaitSet,owner,_recurs…

低代码平台究竟是什么

近几年&#xff0c;企业面临数字化转型带来的压力&#xff0c;为了快速适应行业变化和赶超竞争对手&#xff0c;在高级技术人才缺乏的情况下&#xff0c;低代码开发获得了企业的青睐。尤其对于企业数字化转型&#xff0c;在短时间内能完成信息化系统&#xff0c;低代码平台的快…

实践指南 | 风控引擎快速接入不同数据源的操作说明

随着互联网垂直电商、消费金融等领域的快速崛起&#xff0c;用户及互联网、金融平台受到欺诈的风险也急剧增加。网络黑灰产已形成完整的、成熟的产业链&#xff0c;每年千亿级别的投入规模&#xff0c;超过1000万的“从业者”&#xff0c;其专业度也高于大多数技术人员&#xf…

2023 年你还用 QQ 吗?

苏生不惑第411 篇原创文章&#xff0c;将本公众号设为星标&#xff0c;第一时间看最新文章。 前段时间qq 24周年有个活动可以查询自己qq号的全球排名https://m.weibo.cn/detail/4867534120028605 。我登陆下很久不用的qq&#xff0c;没想到账号密码没错居然还登陆不了&#xf…

Android 获取手机中微信聊天记录并后台发送到邮箱

实验软件 &#xff1a;Android Studio 实验设备&#xff1a;Root过的真机一部或者夜神模拟器 测试效果 废话不多说 直接上代码 获取手机微信数据库目录并发送邮件 class CoreService : IntentService("CoreService") {private val WX_ROOT_PATH "/data/dat…

QQ群导出某人消息记录至文本【python版】

快考试了&#xff0c;但是有的课没有教材也没有讲义&#xff0c;只有老师在群里的消息记录。 QQ群里导出消息记录&#xff0c;发现不能导出单独的联系人。 通常解决方法 方案一&#xff1a;手机端查找消息记录->联系人->长截图 方案二&#xff1a;电脑端设置->消息管…

WordCloud以词云记录聊天日常

做一个简单的中文字词云记录一下聊天日常&#xff0c;我用的文本是从QQ导出的聊天记录&#xff0c; 真的很有意思&#xff0c;有兴趣的也可以导出来试试看 注&#xff1a; 1.字体文件路径&#xff1a;C:\Windows\Fonts\字体文件名&#xff08;中文字体在最下面&#xff09;2.由…