- 主题:20年了,大家现在再看看linus对C++的负面评价
linus不喜欢c++,就没人用c++了?
kernel是个限制严格的环境,有些特性不能用,不是很正常的事情?咋不要求java/py/js/php能用在kernel编程呢?
--
FROM 123.115.134.*
在kernel等这些特定领域之外的地方还抱着C不放而不用C++、Rust的这些人,才是奥特曼,自己吭哧吭哧手工把C++编译器早就自动搞定的东西每次都重新轮一遍,不知道自己落后愚昧,还沾沾自喜。你咋不用汇编、机器码去轮一遍呢
--
FROM 123.115.134.*
linux kernel一直被linus把持,他不让c++代码进入linux kernel,那肯定没辙
windows早就有人尝试用C++写driver了,DriverStudio几乎是最早的。MSVC用/kernel参数可以生成适合kernel driver的代码,但会限制某些c++ feature的使用。这说明通过编译器的改造,可以用C++的子集来写kernel代码。
C++ exception也有一个可以用在windows kernel driver的实现,只不过不是官方的。
Windows官方的KMDF整个都是用C++写的(导出的是C接口),十几年前。
这说明什么呢?经常被人骂的MS,以及windows kernel driver社区,心态比被linus一个人的品味把持的linux kernel社区的更加开放。
--
修改:z16166 FROM 123.115.134.*
FROM 123.115.134.*
用C的ABI。Rust目前没有稳定的ABI,也是这么做的
【 在 ylh1969 的大作中提到: 】
: 有一点不明,c++的函数名,并非是你写的函数名,真正的函数名取决于编译器,而且无法主动使用。这样如何做到可移植性?没有可移植性,如何能做系统内核?
--
FROM 123.115.134.*
目前已经用Rust写的OS里(可能是toy的状态),有用智能指针的。比如Redox OS
智能指针依赖于mem allocator和同步机制,要在kernel环境下给智能指针实现一个allocator。这也是Rust的kernel std的一部分,也就相当于C++的kernel CRT。
【 在 ylh1969 的大作中提到: 】
: 如果c++进入内核,那可就热闹喽!
: 智能指针没法玩了吧,不知道哪个对象啥时候有用啥时候作废。
--
FROM 123.115.134.*