现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

一家之言:为什么linux的内核用c不用c++呢?

2020-06-29 08:02 工业·编程 ⁄ 共 547字 ⁄ 字号 暂无评论

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 编译器最各个架构的支持最块也最全。

给我留言

留言无头像?