Linus Torvalds 可以考虑将 C++ 引入 Linux 内核吗?

Linustorvalds

Linus Benedict Torvalds 是一位软件工程师,以发起和维护 Linux 内核的开发而闻名。

几周前我们在博客上分享有关提案的新闻 多年后,它的生存能力得到了恢复 在 Linux 内核中采用 C++ 代码, 这是 2018 年作为一个玩笑提出的提案。

La 提案再次启动 在内核邮件列表中,但以严肃的方式 汉斯·彼得·安文, 一位重要的英特尔内核开发人员和开发人员提出了将 C++ 作为 Linux 中第三种编程语言的可行性。

Linux C++
相关文章:
Linux上的C++,这个话题时隔6年又复活了

随着介绍 Linux 上的 Rust, 许多开发者和部分社区看到了一条伟大的道路 在 Linux 中领先,而且它还 各种“想法”已经出现来实现其他编程语言,实现 C++ 的提议再次在许多内核开发人员中引发了争论,甚至 Linus Torvalds 也再次以最被动和最容易理解的方式解释了为什么 Linux 没有为 C++ 做好准备(讽刺)。

我们必须记住 Rust 从始至终都没有被 Linux 接受由于 Linux 上的 Rust 项目(Rust for Linux)经过了 Linus Torvalds 本人的一系列修改才被纳入内核主分支,值得一提的是 Linux 之父可不是什么手软的人在进行修改并对提议的更改发表评论时。

在展开文章之前,我必须指出,文章的所有内容都是我通过对互联网上阅读的信息和新闻的解释而产生的个人观点,因此可能与您作为读者的解释有所不同有。有,如果您想在评论中分享,我很乐意花时间阅读。

现在 就 C++ 作为第三种编程语言的提议而言,在所指控的案件中, 我说“当然”, 实施应该经过一系列类似的审查,即使不比 Rust 更严格。之所以提到这一点,是因为 C++ 和 Linus 都有自己的历史,虽小,但已经有很多年的历史了。

提及的原因 C++ 作为第三种 Linux 语言的情况 “据说”,是因为Linux之父Linus Torvalds从来没有也不会看好C++。,因为他不止一次一有机会就提到 C++“是一门糟糕的语言”。

通过提及r 考虑使用 C++ 的一些时刻 在 Linux 上和 Linus Torvalds 不仅表达了他的不同意见,但是对 C++ 有“一定的仇恨”,这也被覆盖到为什么“它根本不是 Linux 的一个选择”, 最近的一次是在评论期间 Rust 实现的,因为 在 Google 帖子的讨论中,作为建议提到了包含 C++:

“这里的解决方案很简单:只需使用 C++ 而不是 Rust”

到哪个 Linus Torvalds 忍不住笑了,他的回答是:

“哈哈”。 «C++ 并没有解决 C 的任何问题,只会让事情变得更糟,它确实是一种垃圾语言。

对于不喜欢 C 的人,请选择一种真正能为您提供有价值的东西的语言。例如内存安全和“那个”语言可以避免C的一些陷阱,或者具有内部GC“垃圾收集”支持并使内存管理更容易的语言。 “C++ 解决了所有错误的问题,任何说‘用 C++ 重写核心’的人都太无知了,根本不知道这一点。”

莱纳斯 Torvalds 一直认为 C++“废物”并且认为它“无用” 好吧,对于“C++根本无法解决C语言的问题,它只会让事情变得更糟”的说法。托瓦尔兹 相信那些不喜欢C语言的人可以寻找一门真正能增加价值的语言。 比如内存安全的语言,可以避免C带来的隐患(比如Rust)。

与C++相比, Linus 提到了为什么 C 是他的标准选择:

“当人们谈论 C 造成的危险时,他们也在谈论 C 如此强大的部分原因:‘它允许你有效地实现所有这些低级的东西,’”Linus 提到。另外,虽然 GC 在大多数情况下有利于简化编程,但它通常无法在低级系统编程中完成。

事实上,在邮件列表中提到了 1992 年,有人尝试在 Linux 上使用 C++ (大约在 Linux 诞生一年后),但这仍然只是“一次尝试”,因为 Torvalds 提及这次尝试:

太糟糕了。相信我:用 C++ 编写内核代码是一个非常愚蠢的想法。

事实上,C++ 编译器并不可靠。 1992年情况更糟,但一些基本事实没有改变:

– C++ 中的整个异常处理从根本上被破坏了。对于内核来说,它“特别”被破坏。
– 任何喜欢将内存分配之类的东西隐藏在背后的编译器或语言对于内核来说根本不是一个好的选择。
– 你可以用 C 编写面向对象的代码(对文件系统有用等),“没有 C++ 的垃圾”。

鉴于这些和​​许多其他评论, 我们可以稍微理解为什么 Linus Torvalds 认为 C++ 是一种可怕的语言。,除了批评 «低质量的程序员,以至于很容易用它生成完整的垃圾.»正是如此 似乎在某种程度上,C++ 在 Torvalds 的嘴里是一种苦涩的味道。,因为在你的批评中,我似乎正在尝试尝试 C++,好吧 我在一封电子邮件中提到:

“C++ 会导致非常糟糕的设计选择。您总是开始使用“好”语言库功能,例如 STL 和 Boost 以及其他完全彻底的垃圾,这可能“帮助”您编程,但会导致:

当它们不起作用时会带来无尽的痛苦(任何告诉我 STL,尤其是 Boost 稳定且可移植的人都是废话,一点都不好笑)
“低效的抽象编程模型,两年后你会发现某些抽象不是很有效,但现在你的所有代码都依赖于它周围的所有漂亮的对象模型,如果不重写你的应用程序,你就无法修复它。”

因此,回到出版物的标题,已经了解了 Linus Torvalds 对 C++ 的仇恨的冰山一角,没有必要进行太多调查,因为 对于 Torvalds 来说,Linux 不需要任何其他语言,因为 C 就足够了 在这段时间里,C 过去、现在、将来都是适合他工作的语言,Linus 将继续攻击他不喜欢的编程语言,尤其是 C++。

C++ 根本不被考虑的众多原因之一 对于 Linux, 是它允许例外,而 Rust 不喜欢 C,因为 在内核编程中,这是不允许的 未捕获的异常可能会禁用操作系统,您甚至不应该考虑内核会发生故障。

Y 在“假定”中,考虑到 Torvalds 开始考虑 C++ 在Linux上,这可能不仅仅是一个好处 包含第三种或更多编程语言, 会成为一个问题,因为例如实施 目前 Rust 的一些问题开始暴露出来,例如我们在出版物中已经提到过的 Linux 上 Rust 的当前状态。

Linux 上的 Rust 驱动程序
相关文章:
Linux 上的 Rust:进展、挑战和现状

我们在文章中提到的当前挑战之一是 «为代码招募更多审阅者 正在开发”除了 基于GCC的Rust编译器的进展已经放缓,他们用 Rust 重写大部分内核的可能性很小 短期内,甚至非常低的可能性,他们可以在不引入各种错误,特别是兼容性问题的情况下做到这一点。

如果出现这些问题, 这在 Rust 中得到了体现 我们用 C++ 或任何其他语言添加它们 可以在Linux中添加, 内核开发会受到很大影响 一开始我们就不会每两个月收到一个版本,而是在更长的版本之间进行开发,需要更多的开发人员、更多的审阅者,所有这些都会转化为更大的努力。

毫无疑问,引入 C++ 作为第三种编程语言的方法还远未被考虑,正如我们已经提到的,主要障碍之一是 Linus Torvalds 本人。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。