为什么人们不使用c ++来制作操作系统

时间:2010-09-23 03:39:14

标签: c++ macos unix programming-languages

为什么Linux,MacOS和其他操作系统用C编写而不是用C ++编写? C ++ C不具备新功能吗?

8 个答案:

答案 0 :(得分:22)

C ++广泛用于操作系统。 Windows的大部分内容都写在其中。

但操作系统不是一个整体的blob。它有不同的层和组件。因为没有可移植的方法来实现它们,所以必须在汇编中编写一些零碎的东西:这是对CPU和其他硬件的低级处理,这是用更高级的编程语言抽象出来的。

然后有一个层可以用更高级别的语言编写,但它不能依赖其他代码。它提供了下一层所需的一些基本服务,因此它必须单独使用

可以在那里使用 ,但是有一些限制。 C ++要求运行时库实现相当多的功能(例如,异常处理),这些功能可能不可用(或者可能不希望使在该级别可用),所以C可能是一个更好的解决方案。 (虽然另一种选择是使用C ++,但只是避免使用依赖于这种缺失功能的功能)

但是越远,你就可以获得更多的抽象和OS服务以及运行时库,并且更高级的语言也变得合适。

所以C ++可以,并且 在操作系统中广泛使用。只是不是每个级别。

答案 1 :(得分:19)

非常简短的回答是,自从C ++在90年代后期成熟以来,并没有创建任何重要的新操作系统 。使用C ++本身并不是完全重写现有成功操作系统的充分理由。

答案 2 :(得分:15)

如果您访问osdev.org,您会发现许多确实使用c ++进行操作系统开发。事实上,pages in the wiki专门用于展示这样做的基础知识。许多业余爱好者操作系统(包括我自己的)都是用c ++编写的,就功能而言,它取得了相当大的成功。

然而,在c ++被认为成熟之前,主要的操作系统,如windows,linux和osx。改进代码来支持一种新语言是没有意义的(尽管说实话,在内核领域支持大多数c ++并不困难,异常和rtti是唯一真正的烦恼)。

有些人可能会说,因为在内核中获取rtti和异常并非易事,所以使用c ++没有很大的优势。 我不同意,c ++是一种用于内核开发的优秀语言。 模板是一个了不起的工具,用于编写高效的通用代码。甚至诸如类型安全链表之类的东西也很容易使用c ++实现,而不需要除模板之外的任何东西。此外,内核中的许多东西本质上都是面向对象的任务,而你可以用c清楚地模拟这些东西,为什么不使用更容易建模的语言。这些只是其中的一小部分。

答案 3 :(得分:11)

问题: “您认为c ++的哪些新功能可以开发更快或更安全或更优化或其他酷炫功能的操作系统?”

第二个问题: “开发了哪些主要操作系统,因为 c ++真的成熟了?”

(请注意,一个可能的答案是Be,我认为 使用c ++ ......啊,wikipedia says the API was c++,这不是一回事。)

答案 4 :(得分:5)

C ++曾经是“c +新功能”。但那是很久以前的事了。当然,它在某种程度上取决于您的C ++编译器,但语言已经发展,现在也包含重要的语法差异。 “c +新功能”过度简化了这种情况。

但你的问题前提也是错误的 - 据报道,linux和OS X不仅有大量的C代码,而且还有C ++和原始汇编。

答案 5 :(得分:2)

最初,C ++不是出于性能原因而使用的。在这一点上,所有这些操作系统都是在C + asm上开发的,并且重写为C ++,没有人愿意。 C ++也不像C那么明显。 特别是因为这一点,Linus Torvals不喜欢C ++。 http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918

答案 6 :(得分:1)

据我所知,几乎所有Haiku OS都是由C ++构成的:http://en.wikipedia.org/wiki/Haiku_(operating_system)

答案 7 :(得分:1)

我的理解是eCos完全用C ++编写并提供C接口。