整理 | 夕颜

出品 | 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 : Give a string instead of a file (default: `')--exec -x : Execute ouput (default: `false')--inspect -i : Interactive REPL (default: `false')--lang -l : Language: js/py (default: `js')--log : Log file (default: `/dev/')--output -o : Output file (default: `/dev/stdout')--roman -r : 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)

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

这个项目你觉得怎么样?如果你发现了更多好玩有趣的项目,欢迎留言和我们分享,AI科技大本营将进行追踪报道,让更多人了解项目细节~

语言怎么搜包的源代码_大四学生发明文言文编程语言,设计思路清奇相关推荐

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

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

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

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

  3. b站前端大佬_在B站如何养成6级大佬?大四学生发明养号神器,看完你也会

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

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

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

  5. asp实现注册登录界面_(06)ASP登录页面的设计思路

    一.登录面页的设计思路 登录页面有3个部分组成: 1. 用户名 2. 密码 3. 验证码 登录页面的显示是由下图所示的index.asp文件在服务器端执行后返顺到浏览器显示的.这个index.asp文 ...

  6. 语言 班费管理系统源代码_固定资产管理系统开源的各种语言翻译

    固定资产管理系统开源指的是将固定资产管理系统源代码进行开发,进而得到可以免费使用的固定资产管理系统,即是开源的固定资产管理系统.固定资产管理系统简单来说就是利用现代信息技术智能化管理企业资产的管理系统 ...

  7. 语言毕业设计选题及源代码_区块链毕业设计论文「11」

    区块链作为一种崭新的.颠覆性的技术,是国内外活跃的研究领域和毕业设计选题方向. 本文列出最新的一组区块链方面的论文,希望可以对选择区块链毕业设计的同学们有所帮助, 这是汇智网编辑整理的区块链毕业设计论 ...

  8. c语言结构体编辑学生成绩管理,【C语言】结构体的应用以及学生成绩管理系统的设计...

    一.结构体 数组中的各元素是属于同一个类型的.有时需要将不同类型的数据组合成一个整体,以便于引用.如,一个学生的学号.姓名.性别.年龄.成绩.家庭地址等项.这些项都与某一学生相联系.如果分别定义为互相 ...

  9. JAVA狗叫源代码_从头认识java-1.1 编程语言抽象过程以及java的基础特性

    这一章节我们来简单的聊聊对象抽象的过程. 1.所有语言都提供抽象机制. 例如:a=1(下面都是举例子,里面所提及的内容有可能是错误的,因为笔者没学过机器码和汇编) 在机器码当中:10001001110 ...

  10. 数据库管理系统设计Java源代码_《数据库应用》课程设计人事管理系统(java源代码)...

    <数据库应用>课程设计人事管理系统(java源代码) <数据库应用>课程设计人事管理系统(java源代码) <数据库应用>课程设计--人事管理系统(java源代码) ...

最新文章

  1. 总结个人项目设计保障5大原则
  2. CSRF 1 (转)
  3. 王道操作系统考研笔记——1.1.2 操作系统的特征
  4. 【英语学习】【Level 08】U04 What I love L4 Take your sweet time
  5. 开源项目选择许可证License
  6. 自己搭建服务端前透析
  7. TwoStep Cluster
  8. mysql存表情出错的解决方案(类似\xF0\x9F\x98\x86\xF0\x9F)
  9. 一篇比较好的高数的学习规划分享
  10. 深入理解浏览器的缓存机制
  11. 关于卸载迈克菲全方位实时保护的时候出现已取消网页导航的一下观点
  12. polyval matlab 怎么用,matlab polyfit polyval
  13. 怀旧服服务器一般什么时候维护,魔兽世界怀旧服9月16日重启维护结束时间 9.16怀旧服登录不了游戏解决方法_蚕豆网新闻...
  14. VBA WORD 光标处理
  15. 有关获取并保存微信头像到本地服务器
  16. 哦麦艾斯!AI设计的丑衣服将引领时尚?数据结构与算法代码面试题;将文件藏在图片里的隐写工具;蒙古语语音合成语料库
  17. 大数据处理算法--Bloom Filter布隆过滤
  18. C语言用递归和迭代实现斐波那契数列
  19. Java毕设项目共享充电宝系统(java+VUE+Mybatis+Maven+Mysql)
  20. SQL Server无法连接服务器

热门文章

  1. CMS-订单系统的分布式事务如何处理
  2. 用数据,创造下一个可能
  3. linux oracle client 安装,linux服务器上 oracle instantclient 客户端的安装和配置
  4. 2020 macbook pro 16寸 前端开发 我的装机软件整理
  5. 批量添加手机联系人 | csv/excel转vcf
  6. 如何才能更好发挥WinRunner,实现真正的自动化测试
  7. 【eoeAndroid社区索引】android开发混淆
  8. 如何发布一个BT种子文件
  9. 频谱仪的更改ip_频谱仪器如何使用?操作界面如何正确使用
  10. 华硕升级bios的问题