deepin 宣布了自研的全新通用目的编程语言:Unilang,其仓库提供了文档和作为参考实现的解释器。
deepin 表示,目前桌面应用开发虽然有许多选项,例如 Qt、Electron、PySide 和 Flutter 等。但它们存在各自的优势和不足。
据介绍,Unilang 目标是成为一门现代的通用目的编程语言,能够有效、灵活地开发桌面环境应用,去统筹解决现有不足的新的方案中的语言部分。为了保持通用性,Unilang 不内建提供 GUI 功能,而通过库提供相关 API 。当前计划中,Unilang 将会支持基于 Qt 绑定的库,以便衔接过渡现有的一些桌面应用项目。Unilang 的语言设计保持足够的抽象能力和可扩展性,未来支持直接实现 GUI 框架。
此外,Unilang 在语言特性的层次上被设计为能支持不同的应用开发场景,但原则上对这些场景保持中立。也就是说,Unilang 可以同时支持服务端和客户端应用的开发,不需要用户切换思维范式或者大幅更改对语言的使用习惯。
以下内容引用自官方介绍:
- 表现力:Unilang 是图灵完备的通用计算语言。Unilang 的创新式的语言特性,有助于构建强大而易于使用的抽象。
- 可复用:Unilang 对一等对象(first-class) 的强调使几乎任何源程序组件都更比往常意义上更容易复用——只要语言的用户愿意。
- 可扩展:Unilang 的基础语言和语言扩展的底层设计使开发者能有机会以前所未有的方式平滑地改进现有语言的设计和实现并保持兼容——而非等待和语言设计及实现者的沟通与反馈。
- 可伸缩:Unilang 的资源管理模型和抽象能力使程序在具有不同计算资源的平台上的表现默认自然地一致,且易于调整。
- 多泛型(multi-paradigm) :Unilang 的语言特性不要求用户拘泥于具体的语用范型——例如,不会限制副作用来要求习惯纯函数式的风格,或者要求隐含对象而要求程序按面向对象的形式进行表达。灵活的抽象使用户能够针对不同领域的设计方案按需使用不同风格的实现。
- 易用性:Unilang 的核心语言特性的极简设计使它的入门相当容易。而可扩展的特性和强大的抽象机制使语言保留了丰富的进阶内容,供开发者按需选择。合理的基础设计使不同内容的掌握不易出错而更易使用。
- 专注性:Unilang 不是一门需要面面俱到精通各种特性才能用好的语言——如果问题不是需要修改语言,语言的用户就应能更集中注意力于解决语言之外的问题上。
Unilang 主要特性
- 核心语言特性
- 实体特性
- 存储和对象模型(类似 C++)
- 对象和值类别(类似 C++)
- 一等函数:合并子(combiner)
- 一等环境:环境引用
- 一等引用:引用值
- 求值算法
- 变量解析
- 函数调用
- 运行时支持
- 动态类型检查
- 动态加载和执行
- 不依赖 GC
- 不安全操作
- PTC(proper tail call)
- 互操作
- 对 C++ 友好的对象模型
- 在 C++ 中调用 Unilang 代码
- FFI :调用 C 和 C++ 等本机语言实现的模块
- ……
- 实体特性
- 库特性
- 核心库
- 变量绑定
- 块作用域
- 列表算法
- 模块机制
- ……
- 字符串
- 数值算术操作
- 输入/输出
- 类型系统增强
- 类型标注
- 静态类型检查
- FFI API
- Qt 绑定
- ……
- 核心库
Hello World 示例
第一个程序:
display "Hello, world!"
输出:
Hello, world!
详情查看 Unilang 的 README、语言介绍文档、特性介绍文档、解释器实现文档和语言规范文档。