linux 没用 c++ 是有多方面原因的----
1. linux发展那会c++,还不成熟; linux 1991年开始,而那会 c++还没有完全成型,c++的第一个标准1998年才出来,你让大家用一个未经考验,标准都没有的语言去开发,不现实。
2. 更重要的,就是 linus 本人对语言的偏好。linus 在邮件列表中不止一次对 c++ 严厉指责。最近的一次是近期 rust for linux module 进入 next 分支,而部分开发者在邮件中表示,还不如用 c++ 来写。linus 再次对 c++ 开喷。
3. c++的劣势对内核这种项目劣势个人感觉还是满大的。
3.1 一个语言一旦有很多灵活的机制,可能整个项目架构等更清晰,也解耦。但是也会埋下很多不可控的因素。开发者对语言的管控也较弱。举例来说,内核很多问题都需要确定复现场景,而如果多态,模版满天飞,对定位问题害处多于好处。
3.2 C 语言足够简单,gcc 等编译器虽然做了很多编译优化,但是生成的二进制本身没有太多不确定因素,C 本身没有特别智能化的高级特性,足够贴近机器语言,内核开发者看到 C 代码可以大致联想到编译出的汇编以及二进制代码段。对于定位问题,特别是一些跟硬件相关的诡异问题,不会增加额外负担。
3.3 本身 linux 要支持足够多的平台,gcc 编译器最各个架构的支持最块也最全。