挑战 50 年霸主 C 语言:新语言 Hare,“异端”中的保守派
yund56 2025-05-15 23:28 2 浏览
Hare 原意为野兔,它的开发者希望这种编程语言能够如野兔般拥有顽强的生命力。
本周,软件开发者 Drew DeVault 公布了一种名为 Hare 的全新系统编程语言,并用“简单、稳定和健壮”作为核心形容词。那它有什么特别的吗?这回可能还真有。
世界上先后涌现 300 多种编程语言,而 Hare 偏偏把矛头指向了最强大的那个——C 语言。没错,Hare 的目标就是取代过去 50 年来最重要的编程语言。
Hare 的价值主张
DeVault 和大约 30 名项目贡献者已经在 Hare 身上投入了两年半时间。如今成果终于出炉,Hare 面向开发者正式开放。
DeVault 在一篇博文中介绍道,“Hare 跟 C 其实特别想像,几乎一切用 C 编写的程序都能用 Hare 写出来。但重要的是,Hare 比 C 更简单。
Hare 的设计原则是:
- 信任程序员。
- 如果程序员不敢信任自己,则提供辅助工具。
- 倾向认为显式行为比隐式行为好。
- 认为好的程序必须既正确、又简单。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 官网:https://www.infoq.cn/,获取更多精彩内容!
相关推荐
- 了解计算机网络90个常见概念
-
计算机网络系列篇第一篇:90个常见概念定义如下:主机:计算机网络上任何一种能够连接网络的设备都被称为主机或者说端系统,比如手机、平板电脑、电视、游戏机、汽车等,随着5G的到来,将会有越来越多的终...
- 数控技巧:数控常用工艺术语(英文名称)
-
1工艺基本概念1.1一般概念1.1.1数控加工:numericalcontrolmachining根据被加工零件图样和工艺要求,编制成以数码表示的程序输入到机床的数控装置或控制计算机中,以...
- 常用模具零件广东术语,不会怎么混天下?
-
广东属最早引进模具工业地方之一,在工业界模具被称为永不衰败的行业,由于各师各法,广东各地对模具称呼的术语很多,有些不知怎译!!!为方便大家对模具术语交流,小编给大家整理了模具零件在广东的常用术语。深圳...
- 开发人员自我提升 - 软件开发技术术语表
-
开发工具与环境IDE(集成开发环境)VisualStudioCodeIntelliJIDEAEclipsePyCharmVersionControl(版本控制)GitSVNMercuria...
- 程序员术语趣味解释(1)
-
1.hotfixhotfix通常指的是一种紧急修复措施,用于解决已知的、严重的问题,比如安全漏洞、程序崩溃等。hotfix并不会包含任何新的功能或升级,它只是一个小型的程序补丁,能够快速而且有针对性地...
- 挑战 50 年霸主 C 语言:新语言 Hare,“异端”中的保守派
-
Hare原意为野兔,它的开发者希望这种编程语言能够如野兔般拥有顽强的生命力。本周,软件开发者DrewDeVault公布了一种名为Hare的全新系统编程语言,并用“简单、稳定和健壮”作为核心...
- Python必须掌握的核心术语和概念,涵盖语法、编程范式和常用工具
-
以下是学习**Python**必须掌握的核心术语和概念,涵盖语法、编程范式和常用工具:---###**一、基础语法**1.**变量(Variable)**-存储数据的容器,无需声明类型,如...
- 编程中最难的事:如何命名
-
如何命名,其实是编程中最难的事。乔治·奥威尔的命名规范如何命名?简言之,根据语意来选择词汇,别无它法……然而,有时我们会不知用什么词汇更合适。当你想到某个抽象的东西,你更倾向于最先想到的词语,除非你故...
- 计算机网络的 166 个核心概念,你知道吗?
-
上回我整理了一下计算机网络中所有的关键概念,很多小伙伴觉得很有帮助,但是有一个需要优化的点就是这些概念不知道出自哪里,所以理解起来像是在云里穿梭,一会儿在聊应用层的概念,一会儿又跑到网络层协议了。针对...
- 黑客主要术语?什么是木马?什么是肉鸡?
-
本节将对常见的一些黑客术语进行简单的介绍1.肉鸡所谓肉鸡是一种很形象的比喻,比喻那些可以随意被控制的电脑,对方可以是各种电脑包括但不限于个人电脑,服务器等,在某种情况黑客进攻时会用他们干扰敌人。对直接...
- 计算机网络的 89 个核心概念
-
计算机网络中的概念也是非常庞杂,理解起来比较困难,所以这里,我给大家汇总了计算机网络中89个常见的概念,希望对你有所帮助。主机:计算机网络上任何一种能够连接网络的设备都被称为主机或者说端系统,比如...
- 开发人员自我提升 - 软件开发专业术语表
-
AAbstractClass(抽象类)-一种不能被实例化的类,用作其他类的模板Agile(敏捷开发)-一种迭代的软件开发方法论Algorithm(算法)-解决特定问题的一系列明确的...
- Python编程术语词汇表(一)
-
这是一个非官方的Python编程术语表,是日常编程实践以及网络收藏所得的内容集合。Iteration迭代Loopingoveraniterableobject.遍历可迭代对象。Afor...
- 计算机领域有哪些高大上的术语描述的是很简单的事物?
-
云计算说白了就是服务器租赁,服务器在网线另一头,你也不用知道具体在哪,如远在天边的云。好比你想打网页小游戏,只想玩一次。你不会为此买个电脑、耳麦,再开通个宽带。你可能会去网吧,按时付费。网吧有按小时...
- AI能代替你阅读吗
-
来源:科技日报原标题:AI能代替你阅读吗信息爆炸的当下,高校学生的阅读场景正经历着颠覆性变革——借助AI工具,他们不仅可以快速拓展通识阅读知识面,还可以轻松完成课堂上的深度思考作业,不用翻开书页就能...
- 一周热门
- 最近发表
- 标签列表
-
- filter函数js (37)
- filter函数excel用不了 (73)
- 商城开发 (40)
- 影视网站免费源码最新版 (57)
- 影视资源api接口 (46)
- 网站留言板代码大全 (56)
- java版软件下载 (52)
- java教材电子课本下载 (48)
- java技术的电子书去哪看 (33)
- 0基础编程从什么开始学 (50)
- java是用来干嘛的 (51)
- it入门应该学什么 (55)
- java线上课程 (55)
- 学java的软件叫什么软件 (38)
- 程序开发软件有哪些 (53)
- 软件培训 (59)
- 机器人编程代码大全 (50)
- 少儿编程教程免费 (45)
- 新代系统编程教学 (61)
- 共创世界编程网站 (38)
- 最容易入门的编程语言 (33)
- 亲测源码 (36)
- tan sin cos 图 (33)
- 三角函数积分公式表 (35)
- 函数的表示方法 (34)