热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

跪服!大四学生开发了一整套文言编程

机器之心报道参与:思、Jamin用文言文写的官方编程教程《文言陰符》,类似pip那样的包管理工具「文淵閣」,还有文言编程开源IDE「文言齋

机器之心报道

参与:思、Jamin

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

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

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

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

文言齋:开源 IDE 来了

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

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

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

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

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

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

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

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

文言陰符:官方教程

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

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

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

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

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

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

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

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

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

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

文淵閣:连软件包都有?

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

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

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

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

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

wyg i ziyue
wyg i 子曰

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

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

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

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

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


推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
author-avatar
着袖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有