5

挑战 50 年霸主 C 语言:新语言 Hare,"异端"中的保守派 | 程序师 - 程序员...

 2 years ago
source link: https://www.techug.com/post/challenge-the-50-year-overlord-c-language-the-new-language-hare-the-conservative-in-heresy.html
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



img16512048091976851207.jpeg

Hare 原意为野兔,它的开发者希望这种编程语言能够如野兔般拥有顽强的生命力。

本周,软件开发者 Drew DeVault 公布了一种名为 Hare 的全新系统编程语言,并用“简单、稳定和健壮”作为核心形容词。那它有什么特别的吗?这回可能还真有。

世界上先后涌现 300 多种编程语言,而 Hare 偏偏把矛头指向了最强大的那个——C 语言。没错,Hare 的目标就是取代过去 50 年来最重要的编程语言。

Hare 的价值主张

DeVault 和大约 30 名项目贡献者已经在 Hare 身上投入了两年半时间。如今成果终于出炉,Hare 面向开发者正式开放。

DeVault 在一篇博文中介绍道,“Hare 跟 C 其实特别想像,几乎一切用 C 编写的程序都能用 Hare 写出来。但重要的是,Hare 比 C 更简单。

Hare 的设计原则是:

  1. 信任程序员。

  2. 如果程序员不敢信任自己,则提供辅助工具。

  3. 倾向认为显式行为比隐式行为好。

  4. 认为好的程序必须既正确、又简单。DeVault 解释称,“Hare 使用静态类型系统、手动内存管理和最小运行时,所以特别适合编写操作系统、系统工具、编译器、网络软件以及其他低级高性能任务。”

在接受 The Register 的采访中,DeVault 也坦言 Hare 的很多设计灵感都源自 C 语言。

DeVault 强调,跟大部分其他语言设计者不同,他们对 C 其实非常认同。Hare 只是想对 C 中的基本设计理念做出一些保守的改进,也可以说是在经历了多年的实践应用后、重新探索 C 语言能不能做得更好。

充足的“电池”储备

DeVault 还透露,Hare 的标准库还融合了谷歌 Go 语言的思想,特别是内置丰富多样的标准库——即各种“电池”(编程术语)——尽量避免再额外导入外部依赖项。

在他看来,“Hare 在设计上强调提供丰富的‘电池’以支持各类用例,帮助程序员摆脱复杂的外部依赖项,将开发项目保持在良好的可管理范围之内。我认为 Go 语言在这方面就做得很好;实际上,Hare 也有相当一部分模块(特别是加密模块)多少受到了 Go 语言的启发。”

Hare 的“电池”储备包括:

  • 加密套件;

  • 网络支持;

  • 日期/时间操作;

  • I/O 与文件系统抽象;

  • Unix 原语,例如 poll、fnmatch 和 glob;

  • POSIX 扩展正则表达式;

  • 解析器与类型检查器。标准库是系统编程发展中的一个新起点,也标志着开发者正式摆脱了 POSIX 和 libc 的遗留问题。Hare 默认不接入 libc C 语言标准库,而是基于 qbe 编译器后端。因此,Hare 中的“Hello, world!”程序如下所示:

use fmt;
export fn main() void = {
        fmt::println("Hello world!")!;
};

Hare 其实相当保守?

据称 Hare 也可以说是 Zig 的精简版。Zig 是一种包含手动内存管理功能的低级系统语言,只是同样作为 C 语言的替代方案,Zig 在人气上远远不如另一位竞争对手 Rust。

再换个角度,DeVault 还想把 Hare 塑造成一种有效的“避坑版”C 语言。

“我觉得很多想跟 C 竞争的新语言都走错了方向。Hare 其实是一种相当保守的语言,核心思路就是把过去 30 年间 C 语言的编程经验提炼成一种小巧、简单而又强大的新语言,在后面的 30 年里继续服务好开发者。我不太关心什么大胆创新,只求对既有功能做出精心设计。

目前 Hare 语言仍在开发当中,现阶段目标就是打造出可以稳定执行、包含标准库增强功能(如 TLS 和原始 IP 套接字支持)的 1.0 版本。

DeVault 指出,“我觉得在项目早期,大部分工作主要集中在语言本身。但现在已经初见成果,命令行工具、cron 等守护程序和 init 系统管理进程等均已就绪。”

DeVault 还表示,他正在使用 Hare 编写密钥管理器(Himitsu)和一套内核(Helios)——这些都是 Hare 语言最擅长的应用方向。

Himitsu 能将密钥存储为键/值对,用户可以为各个键/值对添加附加信息,例如用户名、主机和协议等。Himitsu 还能兼容各种“代理”,例如存储 SSH 私钥并充当 SSH 代理。

Helios 是一款面向 x86_64 架构的微内核,如果一切顺利,它未来还将支持其他架构(团队已经完成了 RISC-V 版本的开发)。目前它的功能还比较基础,比如启动为 Long Mode 模式、提供几个串行驱动程序、设置分页等。“虽然还有很多工作要做,但这确实是个不错的项目,能够展示出 Hare 在低级任务中的强大能力。”

“我认为在获得 TLS 的支持之后,还会有更广泛的用例可供大家探索。”DeVault 说道。

Hare 目前仍然依赖 BDFL(Benevolent Dictator For Life,终身仁慈独裁者)开源治理模式。DeVault 指出,“Hare 语言高度强调稳定与不变特性,所以需要的治理资源应该不会太多”,目前的项目筹款主要用于支付密码系统实现所需的第三方审计费用。

Hare 的未来计划

对于 Hare 的开发思路,DeVault 提到,“我们一直是比较保守的。我们希望 Hare 能在开发者的项目中稳定起效,又不会占用太多的语言学习时间。在即将推出的 1.0 版本中,我们将完成规范、确定语言设计,而且只对标准库做出向下兼容方面的变更。”

此外,DeVault 还有其他计划。目前,Hare 只支持三种指令集架构:x86_64、aarch64 以及 risc-v64。“我们希望能进一步扩展,增加 32 位平台和更多其他架构。目前能够支持的操作系统也只有 Linux 和 FreeBSD,后续会推进更多移植。暂时没有登陆非自由系统平台的计划,但考虑到 Hare 本身属于标准化语言,所以也可以在必要时通过第三方实现或者 fork 开发出 Windows 或 MacOS 版本。”

在标准库方面,DeVault 等人目前最主要的任务就是完成加密实现,目标是支持 TLS 1.2 和 1.3。

“我们为此付出了很多,为它的顺利诞生而骄傲,也希望能有更多朋友使用它、喜爱它。”DeVault 总结道。

感兴趣的读者可以在下方链接了解 Hare:

安装流程:https://harelang.org/installation/

使用教程:https://harelang.org/tutorials/introduction/

参考链接:

https://www.theregister.com/2022/04/26/hare_c_software/

https://harelang.org/blog/2022-04-25-announcing-hare/

本文文字及图片出自 InfoQ


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK