之一的 Kernel开发中出现的主要问题 长期使用 Linux, 换编程语言的想法是找一个完美的人选 “C”代表一个更现代的,直到最近随着 Rust 的到来,这个想法一直被摆在桌面上。
随着 Rust 的第一个预览版 在 Linux 6.1 上, 我重振了大部分开发人员的精神 内核和 Jonathan Corbet 指出“内核中仍然没有足够的 Rust 来做任何有趣的事情”,包含这种语言重新点燃了关于是否需要放弃 C 语言而支持 Rust 的争论的系统编程。 这个问题分裂了开发者社区。
朝日林亚 承担了使用 Rust 为 Mac M1 开发图形处理单元 (GPU) 驱动程序的任务。
关于 Rust 和 C 语言的比较 提到:
“如果你用 C 编写这个,你绝对不可能不必处理并发访问管理、发布后访问内存区域的尝试以及各种其他问题。所有并发问题都随着 Rust 消失了! 需要时释放内存! 一旦你学会了如何让 Rust 为你工作,我认为它会指导你写出体面的代码,甚至超越语言的安全承诺。 真的很神奇! »
“关于 Rust 在内核中是否有用存在很多争论……根据我的经验,它比我想象的要有用得多!” “,她补充道。
你的评论有点重复 从可能的技术原因的汇编 证明放弃 C 语言以支持 Rust 是合理的。 事实上,在 15,9 年影响 Linux 内核的 2288 个漏洞中,有 20%(来自 Common Vulnerabilities and Exposure (CVE) 词典的数字)与 C 语言中的缺陷有关,与内存管理相关的问题:缓冲区溢出,未释放的分配,访问无效或释放的内存区域等。
另外,Linux内核的主要维护者都熟悉C语言,其年龄已经算得上是3代了。 XNUMX多岁的新一代维护者正在崛起,如果Linux内核继续用C语言发展,寻找维护者的难度很可能会增加。Linus Torvalds打开内核之门的原因在 Rust 中开发。
关于放弃C语言的可能性问题, C 语言的创造者列出了一些计划可能失败的原因 朝这个方向发展:
VS 语言工具链
C语言不仅是语言本身,还包括为这种语言开发的所有开发工具。
您想对源代码进行静态分析吗? – 有很多人在为 C 做这方面的工作。检测内存泄漏、数据竞争和其他错误的工具? 有很多,即使你的语言更好。
如果你想瞄准一个鲜为人知的平台,你很可能正在使用 C。C 作为当今计算的通用语言的地位使得它值得编写工具,并且编写了许多工具。
如果有人有可用的工具链:
为什么要冒险改变语言? “更好的 C”应该会产生大量额外的生产力,以激励人们花时间建立一个新的工具链。 这是否可能还有待观察。
新语言的不确定性
在一种语言达到成熟之前,它很可能是错误的。 并进行了重大修改以解决语言的语义问题。 语言是否与广告一致? 它可以提供诸如“出色的编译时间”或“比 C 更快”之类的东西,但是当语言添加了
维护者呢? 当然,您可以分叉一种开源语言,但我怀疑许多公司是否会对使用他们以后可能被迫保留的语言感兴趣。 押注一门新语言是一个很大的风险。
事实上,语言可能不够好
该语言是否解决了 C 的实际痛点?
事实证明 人们并不总是同意 C 的弱点是什么。 内存分配、数组和字符串处理通常很棘手,但使用正确的库和良好的内存策略,可以将它们最小化。
该语言是否解决了高级用户并不真正关心的问题? 如果是这样,它的实际价值可能远低于预期。
更糟糕的是,如果该语言省略了 C 中存在的关键特性怎么办? 高级 C 程序员所依赖的特性? 如果语言设计者没有使用太多 C,而是来自 C++、Java 等,这种风险会增加。
新语言缺乏经验丰富的开发人员
一种新语言自然会拥有更少的有经验的开发人员。 对于任何大中型公司来说,这都是一个大问题。 公司可用的开发人员越多,情况就越好。
此外,如果公司有招聘 C 开发人员的经验,他们不知道如何为这种新语言招聘。
最后,如果您有兴趣了解更多,可以咨询 以下链接中提供了详细信息。