为什么大多数 Linux 程序都是用 C 编写的?为什么它们不使用较新的 C++ 编写?
答案1
关于这一点已经有很多讨论。主要是哲学原因。 C 是作为一种用于系统开发(而不是应用程序开发)的简单语言而发明的。对于使用 C++ 有很多争论,但对于使用 C++ 的争论也同样多。不是使用 C++ 并坚持使用 C。
说到底,这是一个历史问题。大多数应用程序的东西都是用 C 编写的,因为大多数内核的东西都是用 C 编写的。从那时起,大多数东西都是用 C 编写的,人们倾向于使用原始语言。
这时候有人可能会问“好吧,那为什么内核用 C 编写而不移植到 C++?”。这个已经讨论过了在内核陷阱上前一段时间。可以从该线程引用的一个很好的解释是响应来自 yoshi314(直接引用):
这是因为几乎每个 C++ 应用程序都需要一个单独的 C++ 标准库才能运行。所以他们必须将其移植到内核,并期望到处都有额外的开销。
C++ 是更复杂的语言,这意味着编译器从中创建更复杂的代码。正因为如此,在c中发现问题源于编译器错误而不是代码错误更容易。
C 语言也更加准系统,并且更容易遵循其汇编表示,这通常很容易预测。
c++ 更通用,但 c 更适合低级或嵌入式内容。
另一方面,“大多数 Linux 程序”是相当具有误导性的。看一下图形应用程序。 Python 越来越受欢迎,尤其是在 Linux 上的 GUI 环境中。 Windows 和.NET 也发生同样的事情。
答案2
阅读了 Linux 创建者 Linus Torvalds 的以下电子邮件后。我不禁认为上面的答案是错误的。他好像觉得C++程序员不好系统程序员。而且,与短期内带来的好处相比,C++ 中的额外功能从长远来看往往会导致更多问题。尽管有人可能不同意他的观点,但无论如何强调他对 Linux 操作系统的影响都不为过。
答案3
我认为关于C使用的技术主题旁边是linux系统的去中心化,Windows是严格集中的:AD等。Linux是由世界各地的许多人创建的,并且没有像AD这样的工具,好吧,我们有OpenLdap,但是在Linux中每个程序都作为独立应用程序运行。当然历史原因是最重要的。我无法想象如果 Linux 用 Object C++ 编写,谁会关心对象应用程序的安全性。