这个BS引起了Torvalds的强烈反应,他用“*YOU* are full of bullshit.“(你才满嘴屁话呢)作为自己反驳的开场白。接着,他先转向了对C++的罕见的火药味十足的炮轰:
”C++是一种糟糕的(horrible)语言。而且因为有大量不够标准的程序员在使用而使情况更糟,以至于极容易产生彻头彻尾的垃圾(total and utter crap)。老实说,选择C就是为了把C++程序员踢出去。……我有这样的结论,任何喜欢用C++而不是C开发项目的程序员可能都是我希望踢出去的人,免得他们来搞乱我参与的项目。C++会导致非常非常糟糕的设计选择。你们这些C++程序员总是一上来就用语言的那些‘漂亮的’库特性比如STL、Boost和其他彻头彻尾的垃圾,这可能对你们的程序有所‘帮助’,但是却会导致:
“我认为字符串处理是C++会找来大麻烦的地方之一。糟糕的程序员(原文为idiot)会这样写代码:
a = b + "/share/" + c + serial_num;“其中你肯定无法弄清到底分配了多少内存,因为有类型强制转换、重载的操作符(感谢上帝,在C++中你可以重载逗号操作符!),而当这种东西出现在内循环中,结果将是性能上的大灾难,而且原因还不明显!
这几年,C++界的核心人物,包括Bjarne Stroustrup、Herb Sutter、Stan Lippman、Andrei Alexandrescu和Andrew Koenig、Stephen Dewhurst等,对此局面有过较多的反思,痛定思痛之后,写作了Learning C++ as a New Language(中译文)、《C++ Primer》第四版、《C++编程规范》、《Accelerated C++》和《C++必知必会》等返璞归真的文章和图书。其核心变化,是对标准库(Torvalds语气中对STL和Boost也很不屑,不知是何原因,请方家告我)、规范化、领域概念和设计的强调,弱化底层语言细节,或者说强调更规范地选择使用语言特性。
比较同一作者的《C++ Primer》第四版和第三版、《C++编程规范》和《Modern C++ Design》以及Exceptional C++系列,可以清楚地看到这一点。