盘点由中国人开发的编程语言
2022-09-03 21:28:48 阿炯

本文收集和介绍下中国人主导的编程语言。

易语言 -- 国产中文编程语言

易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛。其早期版本的名字为E语言,也通常代指与之对应的集成开发环境。其最早的版本的发布可追溯至2000年9月11日。创造易语言的初衷是进行用中文来编写程序的实践,方便中国人以中国人的思维编写程序,并不用再去学习西方思维。易语言的诞生极大的降低了编程的门槛和学习的难度。从2000年以来,易语言已经发展到一定的规模,功能上、用户数量上都十分可观。

项目地址:http://www.dywt.com.cn/

洛书 -- 国产中文编程语言

洛书编程语言旨在打造开源、高效、强大的国产中文编程语言。

项目地址:https://www.oschina.net/p/losu

ReScript -- 类型化 JavaScript

ReScript 是一种强大的类型化语言,可以编译成高效且可读性高的 JavaScript。ReScript 包含了一个快速的编译器工具链,可以扩展到任何代码库的大小。

项目地址: https://www.oschina.net/p/rescript

文言 -- 文言文编程语言

文言(wenyan-lang)是一门采用文言文输入的编程语言,该语言不使用英文字符,仅包含繁体中文字符,并保留繁体引号「」。

项目地址: https://www.oschina.net/p/wenyan-lang

Go+ -- 为数据科学而生的编程语言

Go+ 是一门适用于工程、STEM 教育和数据科学的编程语言。主要特性包括:静态类型语言、与 Go 完全兼容、脚本化的风格,以及比 Go 更易于阅读的数据科学代码。

项目地址:https://www.oschina.net/p/goplus

凹语言 -- 国内 Go 开发者设计的实验性编程语言


凹语言™(凹读音 “Wa”)是国内 Go 开发者设计的实验性编程语言。发起者称其为“披着 Go 和 Rust 语法外衣的 C++ 语言”。

国内 Gopher 发起的纯社区构建的开源国产编程语言项目,同时也是国内第一个实现纯浏览器内编译、执行全链路的自研静态类型的编译型通用编程语言,即针对 WebAssembly 平台设计的通用静态类型编译型语言。2022年项目正式启动并于7月20日开源。

项目地址:https://www.oschina.net/p/wa-lang

HVML -- 可编程标记语言

HVML 即 Hybrid Virtual Markup Language,能够让熟悉 C/C++ 或其他编程语言的开发者可以通过 HVML 使用 Web 前端技术(如 HTML/SVG/MathML 和 CSS)轻松开发 GUI 应用程序。

项目地址:https://www.oschina.net/p/hvml

CovScript -- 跨平台脚本编程语言

CovScript 是一门跨平台、开放源代码的动态类型脚本编程语言,具有高效、易懂、可靠的特点,充分吸收了现代编程语言研究的成果,与 C、C++ 等现代语言有良好的可交互性。

项目地址:https://www.oschina.net/p/covscript

Calcit -- 缩进语法的 Clojure 方言

Calcit 是缩进语法的 Clojure 方言,基于 Rust 解释执行,支持编译为 *.mjs 使用。

项目地址:https://www.oschina.net/p/calcit-lang

Cicada(蝉语) -- 依赖类型编程语言

Cicada(蝉语)是一门依赖类型编程语言,一个交互式定理证明器。蝉语项目主要是为了帮助大众理解开发软件和研究数学事实上是同一类活动,实践这两项活动的人可以相互学习,并以非常好的方式相互帮助。

项目地址:https://www.oschina.net/p/cicada-lang

Aya -- 形式化数学编程语言

Aya 是一种编程语言和证明助手,专为形式化数学和类型导向编程而设计。Aya 的类型系统具有类似于 Arend 的同源性 (homotopical) 特征、重叠但汇合的模式匹配以及对定义等式 (definitional equalities) 的抽象。

项目地址:https://www.oschina.net/p/aya

OpenBlock -- 可视化块编程语言

OpenBlock 是可视化块编程语言,是一门希望通过将编程简化、将业务逻辑可视化的图形化编程语言,语言特性上有 Erlang 和 Smalltalk 的影子,语法层面借鉴了 Scratch,使用 Blockly 作为语言前端。

项目地址:https://www.oschina.net/p/openblock

草蟒 -- 基于 Python 的全中文编程语言

草蟒是 Python 汉化版,开发草蟒的目的是消除英语门槛,提供一种简单自然、易学易用、功能强大、应用广泛的中文编程语言,让普通国人能自由地使用母语进行编程。

项目地址:https://www.oschina.net/p/grasspy

木兰编程语言 -- 基于 Python 实现的编程语言

木兰编程语言是基于 Python 实现的编程语言,木兰源代码转换为 Python 的中间表示(AST)后执行,可实现各种语法设计与周边功能,并可方便地利用 Python 现有生态。

项目地址:https://www.oschina.net/p/mulan-rework

KCL -- 开源配置策略语言

Kusion 配置语言 (KCL, Kusion Configuration Language) 是一种开源配置语言,主要用于 Kusion Stack 开放协同技术栈。并且 KCL 是一种基于声明性和面向对象编程 (OOP) 范式等概念,用于配置和策略场景的静态类型语言。

项目地址:https://www.oschina.net/p/kcl

气 (Qi) -- 轻量级中文编程语言

气 (Qi) 是一种轻量级、快速、开源的中文编程语言。作者表示希望这种语言能够快速、轻巧,并且完全透明,就像空气一样。

保留关键字:打断 继续 类 切换 案例 预设 否则 功能 而 对于 如果 空 返回 超 真假 这 变量 和 或 等 不等 打等 小等

项目地址:https://www.oschina.net/p/qi-lang

Unilang -- 轻量级中文编程语言

深度科技社区(Deepin)于2022年9月对外宣布的自研全新通用目的编程语言:Unilang,采用C++开发,对标QT。

项目地址:https://github.com/linuxdeepin/unilang

MoonBit(月兔) -- 云计算和边缘计算的 WebAssembly 端到端编程语言工具链

MoonBit专为云计算、边缘计算设计,是一个用于云计算和边缘计算的 WebAssembly 端到端编程语言工具链,集开发、编译、测试、部署于一体 —— 涵盖了通用程序语言设计、编译器、构建系统、IDE、部署工具等。在语言设计、编译器和构建系统上实现高度的垂直整合,为用户提供更佳的开发体验和性能,致力打造未来世界级的基础软件生态。


月兔由粤港澳大湾区数字经济研究院(IDEA 研究院)基础软件中心负责人张宏波领导的团队开发,目标是打造下一代智能开发平台。于2023年8月面世。主要优势:
生成与现有解决方案相比显著更小的 WASM 文件;
更高的运行时性能与先进的编译时性能;
简单但实用的数据导向语言设计。

相比于主流语言,Moonbit 具备后发优势,如基于 Webassembly 设计同时支持多后端,生成代码的性能高、体积小。它还具备高效的增量式代码解析和类型检查;多范式编程,函数式内核+OOP 风格;多层次的中间代码优化;低延迟的智能化 IDE 等特性。未来计划新增 Trait system,高效稳健的内存管理和垃圾回收机制等机制,完善标准库+生态,提供更好的 FFI 调用机制,结合 AIGC 技术等。张宏波本人不仅为多种编程语言做出了贡献,包括 OCaml、ReScript(原 ReasonML/BuckleScript)和 Flow,还曾是 Rescript 语言工具链几乎所有关键组件的作者,包括高速编译器、标准库以及构建系统等。

项目地址:https://www.moonbitlang.cn/


青语言 -- 基于中文语言习惯打造,突破语言障碍,让编程梦想触手可及

青语言作为一门面向青少年、儿童和非专业人员的编程语言,提供良好的学习和编程体验。基于.Net,青语言能够全面兼容主流的操作系统,在2023年9月发布的 V1.0 的基础上添加特性,确定了青语言的核心语法,但会尽量避免破坏性改动,力保向下兼容。在确保语法稳定的基础上,青语言的发展将迈向新的阶段,语言生态的发展将作为我们后续工作的主要方向。一方面我们将积极开发青语言的动态链接库,拓展应用范围。另一方面我们将提供更全面、更丰富的教学资源,帮助更多人学习编程、爱上编程。


作为一门中文编程语言,青语言自发布起便面临非议,但作为一个用爱发电的项目,我们希望等到更多的理解和支持。从发布的第一个版本开始,我们就对核心代码提供了十分详尽的注释,并提供了开发文档帮助开发者了解青语言的核心实现方式。

项目地址:https://qingyuyan.cn/


Nature -- 静态编译强类型语言

Nature 是一款静态编译强类型语言,语法上追求简洁优雅,关注使用者的编写与阅读体验;于2023年5月发起。由C语言开发构建并采用MIT协议授权。


特点
类型系统,null 安全,泛型,联合类型
静态交叉编译,能够不借助任何第三方组件从 nature 源码编译成目标机器可执行文件
渐进式 GC,支持自动回收与手动回收
内置 list/map/set/tuple 数据结构
包管理与模块管理
函数标签/闭包/错误处理/协程
集成SSA/线性扫描寄存器分配/反射机制/汇编器与连接器

随着标准库以逐步完善,nature 可以应用于游戏引擎与游戏制作、科学与 AI 计算、操作系统与物联网、Web 开发。其中游戏引擎将作为 nature 1.0+ 的主要任务。其适合于开源创作者/独立创作者以及学习和研究使用,不仅希望你能够在语言中得到便利,同样也希望你使用它创作快乐且有趣的事情。

设计理念

编程语言中存在一等公民的说法,比如 javascript 中的一等公民是函数,虽然 nature 中的函数也能够作为值传递等高阶用法,但是 nature 的一等公民并不是函数。那对于 nature 来说最重要的是什么呢?

编译速度?运行速度?安全性?简洁性?都不是。即使我们追求简洁之道,但是绝对不会为此而牺牲开发者的使用便利。

所以对于 nature 来说最重要的一定是开发者,为开发者带来便利,让开发者看起来顺眼,写起来顺手。当然这不代表 nature 不具备编译速度/运行速度/安全性/简洁性等等特性,我们致力于协调便利性与这些常见特性的平衡。但是一旦遇到不可协调的冲突时,则优先考虑的是开发者的便利性,而不是编译速度/复杂度/简洁性等等。

例如在单引号和双引号字符串的选择中,虽然绝大多数强类型语言选择了双引号作为标准字符串,但是单引号能够减少一次 shift 的输入,减轻开发者的小拇指负担。同时让阅读更加简洁。关于取消 if 和 for 中的括号同样如此。例如在 nature 中很少去发明新语法糖,而是尽可能在其他语言中选择已经存在的众所周知的语法糖,从而减轻开发者的学习与心理负担。包括关键字的缩写也应该选择众所周知的缩写。如 i8 代替 int8_t,fn 代替 func/function 是因为 rust 已经传播发展了这种关键字的含义,所以能够极大的避免理解歧义与学习负担。

项目地址:https://nature-lang.org/