SegmentFault思否 · 2021年04月22日

Linus 时隔十一年再次抨击 C++ :糟糕透顶!毫无用处!

image.png

他来了他来了!Linus 带着他对 C++ 的半永久有色眼镜又来了!

近日,Rust 进入 Linux内核的决定已正式提上议程,上周其内核开发者 Miguel Ojeda 提交了一份在 Linux 内核中添加 Rust 支持的 RFC 引起热议。

对于这件事,许多吃瓜群众都想知道 Linux 之父——Linus Torvalds 的看法,毕竟这是这么多年以来,Linux 第一次要在其内核中加入C语言以外的第二门编程语言。

因此外媒 IT Wire 就此问题采访了Linux。

一开始 Linux 的回复还比较含蓄,他给出的官方答复是:

“Linux 内核对 Rust 的支持还在早期阶段,要等到 5.14 版本可能才会合并相关补丁。”

但当他知道了有开发者认为“应该用 C++ 来代替 Rust”时,Linux 再也含蓄不了了,他急了!

image.png

他大笑并讽刺道:C++ 就是一门糟糕透顶的语言!

十几年间坚持抨击 C++ 如一日

有人说,Linus 对Linux 的“爱”这三十年来从未变过。同理,他对 C++ 的“恨”也可以说是十几年如一日。

Linus 最早对 C++ 的批判可以追溯到 2007 年。

那个时候,有位名为 Dmitry Kakurin 的开发者在查看了 Git 源代码并发现其使用的是纯 C 而非 C++ 后,他表示不可理喻,于是发帖喷道:

“别说什么可移植性,这纯粹是瞎扯”(注意原句中说的是 BS,也就是 bullshit)

image.png

为什么要把这部分单拎出来说呢,因为这句“BS”彻底戳到了 Linus 的痛点。

大家要知道,Linus 向来以言辞犀利著称,甚至曾在公开场合对 Nvidia 竖中指,这样的 Linus 肯定不会在愤怒的时候在乎他的言语是否文明,于是他开喷了:

YOU are full of bullshit.”

尽管已经用“BS“回怼了,但 Linus 仍不解气,他开始把怒气转移到 C++上,炮轰 C++ 是一门很糟糕的语言,并且连带炮轰了使用 C++ 的程序员,他称大部分使用 C++ 的程序员都是不合格的,还扬言要把喜欢用 C++ 来代替 C 来开发项目的程序员都踢出去,以免他们搞乱自己的项目。

最后他还带上了使用 C++ 创造出的产品,他直言 C++ 最后做出来的就是一堆可怕还难以维护的垃圾。

从此,Linus 誓与 C++ 水火不容。

故事到这里还没有结束。

2010 年,Linus 又在邮件列表中接连发帖吐槽 C++。依他之见,C++ 糟糕透了。他表示,无论什么时候 C++ 都不可能是最正确的选择,在系统编程里直接用 C 就可以,而在非系统编程里,有很多垃圾收集的语言可供选择,而 C++ 只能用来捣乱。

他还嘲笑 C++ 的 new 关键字很蠢,认为C++ 就是废物,根本没有设计可言,只是在 C 上面加了些渣滓而已。”

这次采访是 Linus 时隔多年以来再次于公共场合对 C++ 进行炮轰。

C++ 第 n 次被骂“很烂”

这次让 Linus 炮轰 C++ 的导火索是一条评论,这位 id 为 mss 的网友在Linux Weekly News 网站上评论:

“解决方案很简单:用 C++ 代替 Rust。”

当代码调用不安全函数时,Rust 的内存安全就得不到保证了,而目前几乎所有内核 API 都在其中。不过,你也可以轻松地使用 C++ 进行此类手动标记。

直白地说,每个人都有发出自己的声音的权利,也有选择的权利,毕竟一千个人眼里就有一千个哈姆雷特。

但在 Linus 眼里这可不仅是一条简单的评论,C++ 在他眼里是最糟糕的存在,而 Rust 却是他们精心挑选的可以进入 Linux 内核的语言,其本质完全不可一概而论。

因此听到这个评论的 Linus 没控制住嗤笑出声,他鄙夷说道:“C++ 根本解决不了 C 语言的问题,它只会让事情变得越来越糟。它真的是一门很烂的语言。

他认为,那些不喜欢 C 语言的人可以去寻找真正能给你带来价值的语言。比如具有内存安全性并可以避免 C 导致的隐患的语言,或者具有内部 GC(垃圾回收)支持并简化内存管理的语言。

简单点说,他允许别人不喜欢 C 语言,但前提是不能用 C++ 来代替,在 Linus 的眼里,C++ 不可能解决问题,所以喜欢用 C++ 的人都是无知的。

Linus 也给出了他无条件站在 C 这一边的原因:

“当人们谈到由 C 导致的危险时,也谈到了 C 如此强大的部分原因:'它允许你高效地实现所有这些低级的东西'。”

另外,尽管大多数情况下 GC 对于简化编程而言都是很有效率的工具,但是它通常不是你在低级系统编程中也能做的事情。

网友:C++ 不是垃圾

网上有很多关于“最佳编程语言”的话题,评论区也都有很多人发表各自不同的看法,往往这些评论区都不太祥和。

随着越来越多新兴编程语言的兴起,大多数人都接受了一个事实:

每种编程语言都有自身擅长的局面,也有其本身的局限性。

因此这次 Linus 炮轰 C++ 引来了许多开发者的抗议。

网友@ Chuck Messenger :
image.png
C++的伟大之处在于它“就是 C”。你能用 C 语言做一些 C++ 做不到的事情吗?据我所知没有。在每次新的迭代中,C++ 都提供了对抽象的改进支持,

我对 Rust 很感兴趣,也有可能向它迁移。但是,C++ 在任何意义上都不是“垃圾”。

网友@stikves:

image.png

他说 C++ 不适合 Linux 内核可能是对的。不过对于 C++ 这个语言......大家都知道他的看法一直比较强烈吧。

当然,C++ 也适用于其他操作系统,比如 Windows、Mac OS,甚至Android。所以这都取决于不同的项目。

这次 Linus 又把 C++ 程序员得罪了一通,不过这么多年来他的“暴脾气”也没怎么改,或许就跟编程语言一样,Linus 的“火爆”也是部分开发者的“心头好”吧!

参考链接:

https://developers.slashdot.o...

https://lwn.net/Articles/852758/

扩展阅读:
2732 个快递柜被黑客攻击,安全性成了物联网普及的最大门槛

image.png

推荐阅读
关注数
4143
内容数
724
SegmentFault 思否旗下人工智能领域产业媒体,专注技术与产业,一起探索人工智能。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息