整理 | 夕颜

【导读】近日,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. 在B站如何不动一根手指,就可以养成6级大佬?大四学生发明养号神器,看完你也会...

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

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

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

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

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

  5. 这款文言文编程语言是什么神物?

    中国有个 GitHub 帐号为 Lingdong Huang 的工程师,开发了一款「文言文编程语言」,让你用文言文写程序,在万行程序代码中展现你的人文情怀. 序 夫唐.虞之世,結繩而足治,屈指而足算. ...

  6. 文言文编程可以编译成PHP吗,GitHub开源的文言文编程语言、程序生成中国山水画、格律诗编辑程序...

    目录 一位叫做Lingdong的大四学生在GitHub上开源了一系列非常有意思的项目,其中文言文编程语言.程序生成中国山水画.格律诗编辑程序,吸人眼球,符合主旋律,弘扬传统文化. 1.文言文编程语言 ...

  7. GitHub开源的文言文编程语言、程序生成中国山水画、格律诗编辑程序

    目录 1.文言文编程语言 2.程序生成中国山水画 3.格律诗编辑程序 一位叫做Lingdong的大四学生在GitHub上开源了一系列非常有意思的项目,其中文言文编程语言.程序生成中国山水画.格律诗编辑 ...

  8. 中文编程语言_文言文编程语言,让你明白什么叫“中文比英语还难”。

    毕竟有易语言在前,有人认为中文可以降低国人学习编程的门槛,也增强汉语的国际地位.然而最近大火的文言文编程语言,让你明白什么叫"中文比英语还难". Hello wenyan 最近有个 ...

  9. 腾讯 QQ 产品已经实现全量上云;中科院计算所发明新编程语言“木兰”;Electron 7.1.9 发布 | 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  10. 创造一个计算机语言,世界上第一个文言文编程语言诞生,创造它的是一个大学生...

    究竟是怎么用古文来编程的呢? 夫唐.虞之世,結繩而足治,屈指而足算.是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬:程式語言之多,繁若<天官>之星宿,奇勝<山經> ...

最新文章

  1. PCL中outofcore模块---基于核外八叉树的大规模点云的显示
  2. linux wine 中文乱码,Linux下使用Wine出现中文乱码的解决方法
  3. 针对各组项目的改进意见
  4. C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制
  5. Linux游戏0 A.D.操作说明(持续更新中)
  6. py哪个函数可以返回输入的变量类型_[Python基础]二、pycharm,python变量
  7. Eclipse添加JDK源码
  8. java 如何去掉http debug日志_Spring Boot手把手教学(3):从零配置logback日志
  9. oracle ocr掉盘,恢复OCR磁盘组一则
  10. Visualization的学习笔记
  11. 煤矿行业设备管理系统
  12. 7. JavaScript HTML DOM - 改变 CSS
  13. Dreamweaver实战技能从入门到精通-李炎恢-专题视频课程
  14. 关于抢购秒杀的实现思路与事例代码
  15. Set集合:求交集、并集和差集
  16. 什么样的女人才是老婆(感动)
  17. 单例模式——解决MDI子窗体实例化的问题
  18. 个人项目---音乐视频播放器
  19. 大数据运维工程师 base 上海
  20. 照片格式如何批量更改成jpg

热门文章

  1. 什么是NAS.什么是黑白群晖?(转)
  2. Webstorm中文乱码的问题
  3. 线性与非线性规划问题求解
  4. Excel线性回归分析
  5. 计算机主机前耳机没声音,电脑前面耳机没声音的解决办法 电脑前面插耳机没声音怎么办...
  6. 中文转unicode编码英文不转
  7. 【产品】保险业务收付管理系统概要
  8. Windows10下编译Nginx源码
  9. Centos8下nginx源码编译安装
  10. hd获取硬盘序列号_获取硬盘序列号