• 技术文章 >头条

    文言文也可以用来编程了?作者竟是大四学生

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-12-20 16:43:17转载2978

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

    df2c4184303e76a757b259f4573153d.png

    python学习网,大量的免费python视频教程,欢迎在线学习!

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

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

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

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

    04a2749691de49d00c0700c4c7e06db.png

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

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

    语法

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

    1229b90f4a3ed7e94972d445893dcca.png

    编辑

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

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

    输出结果:

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

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

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

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

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

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

    5c432a7986ef1f3dcc62ffeadf06bd4.png

    你可以在在线 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 astringinsteadofa 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/null')
    --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 了解该项目语法。

    变量

    管理

    b8607a9eae2be3ea471bab653d7a7be.png

    数学

    be45da1038f65e3140b89cfcf2f0ac3.png

    f16c679703e486f02bd148a9eba840e.png

    容器

    数组是1索引的。

    10df2777cb8fb49f99d791ede9ec7db.png

    特征

    渲染器

    66da3f81b400abb3761d9b715fc500d.png

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

    出自CMU大四学生之手

    b5aa16d46782b359d14064f0b513235.png

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

    5e512cbe7cb867e471d68ba4dce0ccc.png

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

    ca02773aa470c638a4cfb9725a74fde.png

    f9d1534d757f6d413858a0bbea5d2a4.png

    python学习网,免费的在线学习python平台,欢迎关注!

    本文转自:https://www.jianshu.com/p/40c6219f9255

    专题推荐:文言文 编程 大四学生
    上一篇:Python:使用Cookie绕过验证码 下一篇:庆祝胖五发射成功, 来用Python发射火箭!

    相关文章推荐

    • 编程语言2019年5月Top 20排名Python排名第4位• 520情人节!教你用Python给自己造了一个女朋友• 2019 Python 计算生态五月推荐榜• 全栈开发高手必备的10款优秀Python Web框架• 为什么推荐你学Python?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网