点击上方“Python大本营”,选择“置顶公众号”python大本营  IT人的职业提升平台

整理 | 夕颜

出品 | AI科技大本营(ID:rgznai100)

【导读】近日,GitHub 上一个叫做文言文(wenyan)的编程语言项目火了,就在本文成文期间,GitHub 上的 Star 数已经从 2200 涨到 2800,并还有继续上涨的趋势。只需要在在线编辑器上,或下载一个编译器,就可以用文言文进行编程。让人惊讶的是,这个涉及思路清奇的项目竟然出自卡内基梅隆大学的一名大四学生之手,不禁让人感叹后生可畏。

文言文(wenyan)是一种深奥的编程语言,遵循中国古典文学的语法和文风。据介绍,这种编程语言文字仅包含繁体中文字符和“''引号,因此古代中国人绝对看得懂。是不是觉得很新奇?那不妨动动你的小手尝试一下吧,可以在在线编辑器上试用,也可以下载编译器或查看源代码。

在线编辑器:http://wenyan-lang.lingdong.works/ide.html

下载编译器:https://github.com/LingDong-/wenyan-lang#installation

开源代码:https://github.com/LingDong-/wenyan-lang

这个项目受到了大家很多好评,有人说项目的设计思路奇特,有人表示在学编程的同时还顺带学习了文言文,一箭双雕。

那么,wenyan 究竟是怎么玩的?我们来跟着 GitHub 学习一下。

语法

正如如名,文言文(wenyan)遵循古文言文的语法:

 编辑

wenyan 目前可编译为 JavaScript 或 Python,将来可能会支持更多语言(比如 C)。上面的“ Hello World”示例(或任何编辑)将转换为:

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

输出结果:

問天地好在
問天地好在
問天地好在

标点和换行符是完全可选的(就像古文言文一样),因此上面的代码等效于:

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

上面的代码是可编辑的,你可以自定义问候语并点击▶︎!

另一个稍微复杂一点的示例,使用埃及筛查找素数:

注:埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。来源 | 百度百科       

你可以在在线 IDE 上找到更多示例,例如通用图灵机、曼德勃罗分形图、汉诺塔等。

特征

  • NLP遵循古文言文语法

  • 编译为JavaScript或Python

  • 图灵完备(https://github.com/LingDong-/wenyan-lang/blob/master/examples/turing.wy 在可计算性理论里,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)可以用来模拟单带图灵机,那么它是图灵完备的。)

  • 在线IDE http://wenyan-lang.lingdong.works/ide.html

  • 入门示例 https://github.com/LingDong-/wenyan-lang/tree/master/examples

安装

编译器

克隆存储库(或下载 ./build/wenyan.js 并设置其可执行位 chmod +x wenyan.js)。然后运行 ./build/wenyan.js,把你的 wenyan 源代码编译为目标语言。调用不带参数的编译器将显示帮助消息,如下所示:

Usage: wenyan [options] [input files]Options:
--eval    -e <string>  : Give a string instead of a file (default: `')
--exec    -x <boolean> : Execute ouput (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

构建平台特定的二进制文件

  • 克隆仓库

  • npm install

  • npm run make_cmdline

macOS、Windows和Linux二进制文件将位于./build文件夹中。

语法备忘单

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

变量        管理       数学

容器

数组是1索引的。        

特征       渲染器

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

值得注意的是,这个思路清奇的设计竟然出自一名卡内基梅隆大学的大四学生 Ling Dong Huang。

在作者简介中,Ling Dong Huang 表示自己将于 2020 年获得计算机科学学位,此前,他曾在迪士尼研究院、 Antimodular 研究院和《纽约时报》实习,自己也做了项目网站 https://lingdong.works/。目前已经有将近 30 个项目。项目主题丰富多彩,比如用 emoji 做成的小游戏,使用用户提交的涂鸦做成的计算机动画,以及和本文一样对中国下手,把中国表意文字和部首做成可视化动画,等等,并给出了项目的源代码。

                   

此外,他的项目还包括:

  • 隐士——互动式程序生成景观(CMU 2015 年秋季 CS 15-112 学期项目竞赛优胜者)

    https://github.com/LingDong-/Hermit

  • 普通人脸模拟器——本地2人人脸模拟。(观看次数 180 + K,在 itch.io 上下载 60 + K)

    https://lingdonh.itch.io/normal-human-face-simulator

  • {山,水} **——程序无限生成的中国山水画。(2018 年 5 月在卡耐基梅隆大学展出)

    https://github.com/LingDong-/shan-shui-inf

  • 错山记(Legend of Wrong Mountain)——一部完全由机器使用程序生成和机器学习技术编写、创作和表演的中国戏曲。(论文已被  2 0 1 8 NIPS workshop 接收)

    https://www.youtube.com/watch?v = QPdb28h4qjc我的在线投资组合中的更多项目(https://lingdong.works)

不得不说,作者的脑洞不小,不少项目的创意很是新奇。

这个项目你觉得怎么样?如果你发现了更多好玩有趣的项目,欢迎留言和我们分享。

—— 推 荐 阅 读 ——

你点的每个“在看”,我都认真当成了喜欢

活久见!大四学生发明文言文编程语言,脑洞新奇相关推荐

  1. 年度最骚的编程语言来了!大四学生发明文言文编程语言!

    程序员的成长之路 互联网/程序员/成长/职场 关注 阅读本文大概需要 2.8 分钟. 来自:开源最前线(ID:OpenSourceTop) 这两天刷微博.朋友圈.公众号,发现大家都被一个文言文编程的项 ...

  2. 活久见!新泽西州长急聘COBOL程序员!网传去应聘的程序员最小年龄都在 60 岁以上!...

    " 美国新泽西州的州长 4 月 5 日在电视上宣布当地银行急需 COBOL 程序员来处理政府财务系统的一些问题,包括最近大量增加的失业补助支票的发放等等. 作者:51cto,来自:51cto ...

  3. 被Linux之父骂醒?英伟达破天荒开源GPU内核驱动,网友:活久见

    终于等到了这一天:英伟达开源了他们的 Linux GPU 内核驱动. 「英伟达是我们遇到的硬件厂商中最麻烦的一个.」这是 Linux 内核总设计师 Linus Torvalds 十年前说过的一句原话. ...

  4. 程序员因开发速度太慢被告,公司索赔90万!网友:活久见

    你遇到过哪些糟心 奇葩 事?程序员因为代码写的太慢被告上法庭,算不算? 随着人们法治意识的日益增强,越来越多个人或公司愿意拿起法律武器为自己维权.近日,有一位程序员因开发进度太慢被告上法庭,公司索赔9 ...

  5. 活久见的设备连接故障

    一大早,用户打电话说某部门的服务器到天平的连接存在问题,有时可以telnet到8014端口,有时无法telnet.另外现场人员把所有天平都接到一台8port交换机上进行测试,发现此时电脑可以telne ...

  6. 活久见!程序员开发进度太慢被公司告上法庭,索赔 90 万!

    loonggg 读完需要 5 分钟 速读仅需 2 分钟 大家好,我是校长. 真的是开眼了,活久见啊,公司因为嫌弃程序员开发进度太慢,耽误上线,竟然将程序员告上了法庭,要求程序员赔偿公司经济损失 90 ...

  7. 活久见系列:微信推出收费服务了!

    之前在某个产品经理社区有一个关于微信的问题:假如微信每月付费10元才能使用,你还会用吗? 大家都饶有兴趣的从各种角度分析微信收费后会发生什么,我也写了个段子「假如微信宣布对用户收费...」. 但其实所 ...

  8. 活久见,40W年薪低?35岁测试工程师惨遭女孩嫌弃,估计是被鸡汤洗脑了

    背景 35岁 好像是一个门槛 一道无法让人逾越的门槛 不论如何 你 终究有一天会超过 35岁 这 有点像历史上一段不怎么知名的事件--"六十花甲子",又叫"瓦罐坟&quo ...

  9. 谷歌又崩了!连 Google Search 都不能用,官方道歉,网友:活久见

    在疫情所导致的隔离之下,你很难不依赖互联网带来的沟通便利. 然而,谁能想象到,就在疫情快速在全球蔓延的境况之下,Google,这个世界级的互联网科技巨头,却出现了服务崩溃的情况,甚至让 Google ...

  10. 在B站如何不动一根手指,就可以养成6级大佬?大四学生发明养号神器,看完你也会...

    杨净 发自 凹非寺  量子位 报道 | 公众号 QbitAI 如何像拥有一个小助手一样,每天帮你签到打卡? 或许,现在利用GitHub Action定时任务就可以做到. 而这个小助手,混迹b站,可以每 ...

最新文章

  1. java线程开启不了_Java中多线程启动,为什么调用的是start方法,而不是run方法?...
  2. IBM超越谷歌抵达量子计算里程碑:研制出50量子位计算机
  3. C# addin 开发心得记录
  4. linux的常用操作——lftp、nfs、ssh和scp
  5. yml和properties的加载顺序
  6. 恒大汽车自救进行时:恒驰5进入试产阶段,离量产只差道路准入许可
  7. LeetCode(762)——二进制表示中质数个计算置位(JavaScript)
  8. Bzoj2882 工艺
  9. CSS 字体单位大小对照换算表
  10. 基于matlab的信号频谱分析 开题报告,基于MATLAB的数字信号处理开题报告
  11. Camera 数据通路
  12. 这15个Java多线程面试题及回答你确定不来看看!
  13. qq空间自动评论说说php源码使用教程,仿QQ空间说说 评论/回复 效果源码
  14. 微信公众号之自定义菜单
  15. 微型计算机升级换代的两种,嵌入式的LED点阵显示屏的研究与实现
  16. python 绘制qq图
  17. 微信小程序开发之实现一个弹幕评论
  18. 八年级上学期计算机教学计划,第一学期七八年级信息技术教学计划
  19. # cmake --version -bash: /usr/bin/cmake: Too many levels of symbolic links
  20. 【区块链与密码学】第9-7讲:群签名在区块链中的应用 I

热门文章

  1. 深度学习图像分割(一)——PASCAL-VOC2012数据集(vocdevkit、Vocbenchmark_release)详细介绍
  2. CHIP下游分析(仅ChIPseeker包)
  3. 使用文本编辑器编写Java源代码
  4. JAVA实现简易文本编辑器设计
  5. 推荐好书:《电子设计从零开始》
  6. 带音效的计算机软件,普通电脑WIN7上安装杜比音效增强软件Dolby Home TheaterV4教程...
  7. 硬件与分析-音速小子
  8. 对方qq空间权限需要申请访问怎么破解
  9. 下载谷歌离线地图瓦片图
  10. w ndows 那个比较好用,DOS工具箱哪个好用?DOS工具箱盘点