mct*_*ylr 16
Unix最初是在1969年在贝尔实验室创建的,远在C++构思之前.(Src:Unix),您可以通过阅读Unix上的狮子会评论或BSD 4.4-Lite(类似于BSD Net/2)来确认这一点,这可以通过tarball或cvs(来自FreeBSD)获得.或者来自The Unix Heritage Society的档案,它来自非常古老的贝尔实验室/ AT&T版本.
根据C++的历史, Bjarne Stroustrup在大约1983年创建了C++,之后他就开始研究" C with Classes " .从Bjarne Stroustrup的常见问题解答中确认,C with Classes的最早日期是1979年.
我希望这澄清了Unix基于C++的想法的不可能性.请注意,自20世纪60年代以来,面向对象语言已经出现在Simula 67中,所以不要将对象和类与C++混淆.
Dig*_*oss 12
Unix的所有主要版本都使用完全直接的C作为内核.(嗯,Mac OS X在一个界面中有一点C++.)
如果不计算桌面层,那么除了少数例外,核心库和实用程序也在C中.我能想到的唯一核心实用程序是用C++编写的groff.
现在,有了套餐,这是一个不同的故事......
当你谈论Unix-y操作系统的内核,如Linux,Solaris,Mac OS X,NetBSD,FreeBSD等时 - 它们通常都是C.而且我也不确定你的意思是重载或默认变量 - 当然不在内核调用中.
当DigitalRoss说Mac OS X在内核源代码中有Objective C时,我感到很惊讶,所以我下载了Darwin xnu内核源码的MacOS X 10.6.2版本,实际上,没有Objective C.但是,我有点震惊发现一点点C++.
无论如何,许多"用户空间"(非内核)程序依赖的东西,如虚拟内存,异常处理,设备I/O等,都是由内核完成的.但是内核不能用于那些东西,就像你不能用双手拿起你的鞋子一样抬起自己.
像C++和Objective C这样的面向对象语言广泛使用了内核无法为自己做的事情.这就是为什么内核主要是用C编写的.就我在xnu源代码中看到的C++而言,我确信它是非常非常谨慎地编写的,以避免在内核中做不安全的事情.
至于用C和C++编写的用户空间程序,我认为它主要是传统,个人偏好以及人们习惯的东西.作为一个精通两种语言的人,我认为这本身就很愚蠢.