维基 - 系统语言调查 2024

这是一篇关于多种低级编程语言的比较和综述文章,主要内容如下:

  • 介绍(Introduction):当前有新一代低级编程语言涌现,Rust 证明了该领域的需求,作者决定对了解的语言进行比较。列出 10 个任意标准,如性能、类型系统等,所有评级满分 10 分,最后更新于 2024 年 12 月,修正于 2025 年 1 月。
  • C:低级编程的基线,无需过多介绍。性能 9/10(编译器和 CPU 优化),基本类型系统 3/10(存在诸多问题但 C99 有所改进),泛型 1/10(使用 void*或文本宏),空间安全 1/10(无边界检查),时间安全 1/10(警告返回局部变量指针),模块 1/10(文本包含和命名前缀),低级垃圾 6/10(位操作和内存操作方便但 1970、80 年代的需求已不同),单独编译 8/10(对编译器友好但人类使用不便),乐趣 5/10(写头文件烦但写起来有趣),恐惧 2/10(理解他人代码前有趣),均值 3.7 标准差 2.9,中位数 2.5,结论:C 运行世界但可做得更好。
  • Ada:20 世纪 80 年代为美国军方开发,曾因复杂受冷落,近年因 Rust 受关注。性能 7/10(数组边界检查有代价),基本类型系统 6.5/10(类型名义性强、有各种类型),泛型 5/10(存在但功能有限),空间安全 9/10(各种安全措施),时间安全 7/10(区域内存管理),模块 5/10(比预期好但仍繁琐),低级垃圾 5/10(可能有所需功能但难找),单独编译 8/10(类似 C),乐趣 1/10(定义函数变量繁琐),恐惧 1/10(文件布局导致理解困难),均值 5.7 标准差 2.6,中位数 6.25,结论:Ada 有好有坏,可借鉴其内存管理。
  • C++:无具体内容,仅为“Nah.”。
  • Jai:Jonathan Blow 的宠物项目,未面向公众。性能 10/10(有内置竞技场分配器等),基本类型系统 5/10(基本类型存在但无和类型相关功能),泛型 5/10(有相关类型但信息少),空间安全 1/10(变量默认初始化等问题),时间安全 3/10(有一些迭代器相关功能但存在问题),模块 6.5/10(有模块机制但有问题),低级垃圾 9/10(支持 C 交互等),单独编译 5/10(信息少),乐趣 2/10(有一些糖但整体不喜欢),恐惧 1/10(重复 C 的错误),均值 4.75 标准差 3.0,中位数 5.0,结论:Jai 由 C 程序员编写,有好有坏可借鉴。
  • Rust:作为比较基准,自 2016 年 1.0 版本以来一直是作者首选语言。性能 9/10(优秀但与 C 相比平均稍慢),基本类型系统 9/10(详细明确),泛型 7/10(类型类但有缺点),空间安全 10/10(无空间安全违规),时间安全 10/10(借调检查优秀),模块 9/10(模块和文件编译进化良好),低级垃圾 4/10(写低级代码较难),单独编译 3/10(为优化牺牲单独编译),乐趣 9/10(需适应借调检查),恐惧 8/10(读他人代码问题少),均值 7.8 标准差 2.3,中位数 9.0,结论:Rust 是很好的工具但有牺牲。
  • Zig:2016 年出现,目前 0.13 版本,发展稳定。性能 9.5/10(尝试超越 C 限制),基本类型系统 10/10(类型严格),泛型 8/10(类似 C++模板),空间安全 10/10(有可选类型等安全措施),时间安全 4/10(有一些调试设施但仍易出错),模块 10/10(匿名结构体等),低级垃圾 9/10(低级别支持丰富),单独编译 6/10(文档少但可分块编译),乐趣 7/10(有独特理念),恐惧 5/10(对错误定义独特),均值 7.9 标准差 2.1,中位数 8.5,结论:Zig 很奇怪但可能改变思考方式,不确定是否喜欢使用。
  • Odin:2016 年底出现,受 Jai 启发。性能 9.5/10(考虑超越 C),基本类型系统 7/10(类型多样),泛型 5/10(有泛型但文档少),空间安全 7/10(有一些安全措施),时间安全 4/10(有 defer 等但仍易出错),模块 7/10(合理但需配置),低级垃圾 8.5/10(低级别支持多),单独编译 6/10(文档少在探索阶段),乐趣 6/10(舒适但有很多规则),恐惧 4/10(有很多小选项易出错),均值 6.4 标准差 1.7,中位数 6.5,结论:Odin 是不错工具但需避免成为厨房水槽语言。
  • Hare:Drew DeVault 开发,2022 年公开。性能 7/10(有类型系统但可能不如 Rust 性能高),基本类型系统 9/10(类型较强),泛型 2/10(基本无通用类型),空间安全 10/10(有多种安全措施),时间安全 2/10(存在一些问题),模块 5/10(普通但有 build 系统),低级垃圾 7/10(低级别支持较好),单独编译 9/10(使用系统 ABI),乐趣 7/10(满足感强),恐惧 4/10(缺少一些安全措施),均值 6.2 标准差 2.7,中位数 7.0,结论:Hare 是较好的“小简单系统语言”,可加 borrow checker。
  • Honorable mentions(荣誉提及)

    • Nim & D:D 起始早竞争激烈发展坎坷,Nim 较晚成长,2023 年底发布 2.0 版本,注重控制指针和内存。
    • Swift:不是系统语言,更像应用语言,有一些设计问题,由苹果开发,可能不会广泛使用。
    • Circle & Carbon:Circle 是 C++实验,Carbon 是谷歌研究项目,旨在创建清理后的 C++并保持互操作性。
    • Austral:2021 年底发布,有类似 Rust 的借调检查但仍有限,处于可用与小众之间。
  • Weird indie shit(奇怪的独立项目)

    • Vale:由 Verdagon 制作, borrowing 模型在探索中,注重 pragmatism 和 ergonomics。
    • Lobster:用引用计数管理内存,有 borrow checking,像“下一代应用语言”。
    • Red:受 REBOL 启发,是强大的小系统语言,擅长处理复杂数据。
    • Scopes:2016 年为游戏开发创建,有独特的内存管理方式。
    • Hylo:基于可变值语义的内存安全语言,从 Rust 和 Swift 汲取灵感。
    • Garnet:作者自己的语言,简化 Rust 并注重低级别 unsafe 代码。
  • Conclusions(结论):作者喜欢 Zig 和 Hare,这些语言都有独特之处且比 C 有趣,有两种进化 lineage,功能编程 lineage 包括 Rust 和 Hare,命令式编程 lineage 包括 C、Jai 和 Odin,Zig 跨线发展。还观察到变量声明等语法的变化,最后鼓励用这些信息做疯狂的事。
  • Aftermath(后续):讨论链接,Ada 人对其声誉不满,Zig 人指出关于 Zig 无 RTTI 的错误,重新计算平均值等。
阅读 8
0 条评论