22

你以为文言编程只是闹着玩?三个月后,人家IDE、教程、包管理器都有了

 4 years ago
source link: http://news.51cto.com/art/202003/612432.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

用文言文写的官方编程教程《文言陰符》,类似 pip 那样的包管理工具「文淵閣」,还有文言编程开源 IDE「文言齋」,文言编程语言已经这么成熟了?

机器之心曾介绍过 CMU 计算机专业大四学生 Lingdong Huang 的文言编程项目,因为完全采用文言文的方式编程,该项目受到很多开发者的关注,在 GitHub 上开源 4 天就获得两千星,目前更是有 15K 的 Star 量。

大家都说 Star 量是推动项目更新的第一生产力。这不,经过三个月的时间,这个项目就已经发展成了一门完整的「编程语言」。它有文档、有 IDE、有第三方库、有官方教程、有代码高亮方案等等,所以还要啥 Python,文科生「玩转」编程的首选语言就是它。

7RFbQj7.jpg!web

因为目前文言编程已经有了挺多更新,本文后面主要介绍 IDE、官方教程和第三方库,看它如何一步步升华到合格的编程语言。

文言齋:开源 IDE 来了

之前文言编程不是没有 IDE,我们可以在线使用,并编译。但当时 IDE 并没有开源,它的高亮也有点「神奇」,在输入与编辑过程中了并不能高亮,只有编译后才能修改语句的颜色。而且有些中文会被认为是关键词,并不能直接使用,例如机器之心的「之」,如下是我们 2019 年年会的推文,它采用的就是当时的在线 IDE。

B7vaAzq.jpg!web

运行后会输出「今日无文,请阅「机器之心 Pro」」。

当时在线 IDE 似乎还不会报错,编译出错只有一个反应「输出为空」,而现在,这个新开源的 IDE,它已经会在线高亮、返回编译误差了。

J3MJFnY.jpg!web

现在的 IDE,用着已经算比较舒服了,我们可以部署或嵌入到其它地方,甚至可以通过 API 直接调用。每次调用,在 URL 中传入标题、代码以及其它各种缺省配置就行。

在线 IDE 地址:https://ide.wy-lang.org/

如下是当前 IDE 整体展示,其最左边导航栏主要分为用户代码脚本、示例脚本、第三方库列表三部分。值得一提的是,相比当时十来个示例脚本,现在的官方脚本已经有近 50 个,连「水墨画」的脚本都有。

73Ize2I.jpg!web

此外,文言代码除了编译为 JS 代码,IDE 上还可以选择编译为 Python 或 Ruby 代码。只不过当前的在线 IDE 并不支持以 Python 或 Ruby 语言作为后端执行文言代码。

整个 IDE 的主题、编译方式、展现方式都能自由选择,它的可玩性已经非常不错了。

7viUbmr.jpg!web

文言陰符:官方教程

作为官方的文言教程,势必需要懂文言文才能看懂,不然就显示不出它的「优越性」。在之前的文言编程示例或解释中,作者都是通过英文或实例来展示,描述语句都比较通俗易懂。

然而作为一本经典的官方教程,不用文言文写实在是太浪费了,因此也就有了《文言陰符》,它的风格是这样的:

mmYvMjZ.jpg!web

上图是《文言陰符》项目的开篇描述,它以文言文的方式「生动地」描述了开发者与编程语言之间的关系。文言文加上繁体字,果然是天生一对,如果再加上一些通假字,说不定我们就回到了曾经的语文课堂。

《文言陰符》共有十三篇教程,从字面上大概也能了解这本书的主题,例如明义篇主要阐述什么是文言编程,变数篇主要介绍变量这个概念与用法。

u2iayuB.jpg!web

总体来说,该书籍从基本控制语法、数据结构、函数与第三方库这几个角度展示了文言编程的主要内容,然后还要加上 Error 处理、制图和高级函数等进阶内容。如果读者们能把这些官方教程看一遍,估计你的文言文水平已经超越了大多数人。

这个教程确实很难,主要体现在文言文功底。相信很多读者对字典(Dict)这个数据类型十分了解了,它以 Key -> Value 的方式组织所有数据。然而在格物第十的开篇中,作者将字典这种数据格式解释为格物,「物」的的每一个元素都有一个「名」,或者称之为 Key,每一个「名」对应的属性值就是 Value。

2MRr2aV.jpg!web

如上类似于定义了名为「白马」的字典,字典里面的 Key 为白马的属性,它对应有一个属性值。夫「白馬」之「「名」」,即调用字典「名」对应的值。

当然,我们也能从类与属性的角度去思考,「白马」是「物」的实例化,实例化的过程中需要为物的各种属性赋值,并且可以在实例化后继续调用它们。

Bb2aY37.jpg!web

该教程还支持在线阅读,从右向左滑动的那种,这感觉有点上头。

这种风格的教程,俨然需要真材实料的文言知识。

文淵閣:连软件包都有?

一个编程语言,第三方软件包的数量就反映了社区的活跃度。想象一下,如果有 NumPy 或 PyTorch 这样的软件包,那么说不定就能用文言文写一个神经网络出来,如下 Lotayou 就用文言文写出了一个神经网络,完整代码可见项目的 Issue。

7Bn2AfR.jpg!web

虽然,文言编程目前并没有「火炬心法」这个第三方包,但也不能阻止众多 DL 炼丹师的激情,Lotayou 写的「文言神经网络」尽管编译不了,但逻辑和语法都非常完整。

目前「文渊阁」这个第三方软件包管理器一共包含以下扩展包:

iqm2Qr7.jpg!web

正如 Pyhton 有 pip,js 有 npm,文言编程语言也有包管理——文渊阁。尽管目前第三方库并不是太多,但一个合理的包管理器还是需要的,这样才是一个完整的编程语言。

文渊阁可以直接通过 NPM 安装,使用的时候,代码类似 pip 或 npm,只要带有「wyg」、「i」(install)和包名(如「子曰」)即可。

wyg i ziyue 
 
wyg i 子曰 

上面两种都是可行的,运行后包会被下载到藏書樓/子曰这一路径下,藏書樓类似于 js 的 node_modules。

然后就是导入包了,就像 Python 中的 import 一样,文言编程的导入格式如下所示:

吾嘗觀「「子曰」」之書。方悟「子曰」之義。 
 
子曰「「巧言令色,鮮矣仁!」」。 

此外,你还可以发布自己的文言编程语言包,有了这种开源模式,这门语言就真正像是独立的编程语言了。

很难想象,经过两三个月后该项目就有了这么大的变化,也成为了一万五收藏量的大项目。将文言文这种传统文化,与编程语言这样的当代工具相结合,也许是非常不错的尝试。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK