怎么看待Linus和RichardStallman对C++的态度

大部分跟着linus屁股后面的人,能说一大堆c++的不好,因为他不用,也不了解,或者只了解皮毛,只是跟着人云亦云,以显得自己牛逼罢了,看我多牛逼啊,我的想法居然跟linus一样,正可谓英雄所见略同,我真棒。
实际上他们看问题的角度和linus完全不一样,人家是为了做操作系统,对性能要求极高,每一行c代码背后需要多少汇编指令都了如指掌,甚至内核代码里包含了大量针对if的优化,在这种对性能要求如此苛刻的情况下,你以为你说的cpp不好就是linus说的不好吗?
当你写业务逻辑时,字符串连接也要显示的去调用连接函数吗?
管理内存还在手动delete?
mutex和fd的封装也要显示的去调用close?
甚至还有那些天天吼着说xx语言没有泛型,到了cpp这里template成了垃圾了,用到stl的时候又觉得真香,这是有精神分裂么?
时刻摆正自己的定位,你是在写业务逻辑,不是在写操作系统,无论是语法糖还是语言特性,能增加开发效率就是好的,当然你也可以选择不用,不过你说你写业务逻辑也用c的话,那我确实没啥好说的了。

参考:
我认为C简洁精炼。
C++想法很好,但继承和派生特性容易出问题,出了问题查找较难。

参考:
我从来不用C++模板,这个特性让可读性急剧下降。
我用C++最多是inline,还有很基础的派生和同名重载。
对复杂的设计模式我也是排斥的。
C++本身没问题,有问题的是各种人士都想着把各自想法加入C++特性。
这帮人没搞明白,语言特性并不对语言
起作用的是生态和语言相关开源数量。

参考:
这个问题很简单的,古人用四个字就回答完毕了,文人相轻!继续深入!
康德在纯理性批判中提到,我们的知识的基础建立在感性经验的基础之上的,更多时候不存在纯理性的认知。
翻译成人话就是:很多时候,我们自认为对事物客观公正的评判,只不过是纯粹的感情宣泄罢了。
举个例子,某
于是他就专门挑苹果手机的毛病,拿苹果的劣势与华为的优势比,最后根据比较的数据写了一篇报道,结论就是,看,华为就是比苹果好!以此类推,我们生活中的各种自认为客观公正的评价,更多的是为自己的主观感受找的借口罢了。
有些人会拿参数做指标,证明进口车比国产车好。
有些人会拿性价比做指标,证明国产车其实也不错。
仔细观察,你就会发现,说进口车好的,是因为他自己买的是进口车。
说国产车好的,是因为他自己开的是国产车。
再来看linus对c加加的评价,liuns也是人,普通的人而已,他能跳出自己感性的认知吗?
应该不能吧!所以背后真正的原因不是c加加的各种缺点,而是linus不喜欢c加加而已如果你喜欢一个东西,你可以为你的喜欢找到一百个理由来说服自己继续喜欢。
如果你讨厌一个东西,你也可以为他找一百个理由来继续讨厌。
这可能才是真正的原因!补充一句,c加加是编程语言的集大成者,其他编程语言都或多或少的借鉴c加加,不管技术怎么变,在我们这个时代,学好c加加,一直都是加分项!
参考:
他们更喜欢写C语言那个年代的人基本都是C高手,C++整天念的高级特性,对一般人而言就是很难懂,C语言不一样,很稳定,很少变,而且他们两基本都是底层开发,C比C+更适合
参考:
作为举世公认的最杰出的程序员,Linus Torvald和Richard Stallman任何关于编程和编程语言的见解都值得所有人尊重。
关于C++, 他们曾经说了什么?
2007年Linus在邮件列表里评论道,原文见http://harmful.cat-v.org/software/c++/linusC++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do *nothing* but keep the C++ programmers out, that in itself would be a huge reason to use C. In other words: the choice of C is the only sane choice. I know Miles Bader jokingly said \"to piss you off\", but it's actually true. I've come to the conclusion that any programmer that would prefer the project to be in C++ over C is likely a programmer that I really *would* prefer to piss off, so that he doesn't come and screw up any project I'm involved with. C++ leads to really really bad design choices.You invariably start using the \"nice\" library features of the language like STL and Boost and other total and utter crap, that may \"help\" you program, but causes: - infinite amounts of pain when they don't work (and anybody who tells me that STL and especially Boost are stable and portable is just so full of BS that it's not even funny) - inefficient abstracted programming models where two years down the road you notice that some abstraction wasn't very efficient, but now all your code depends on all the nice object models around it, and you cannot fix it without rewriting your app. In other words, the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C. And limiting your project to C means that people don't screw that up, and also means that you get a lot of programmers that do actually understand low-level issues and don't screw things up with any idiotic \"object model\" crap. So I'm sorry, but for something like git, where efficiency was a primary objective, the \"advantages\" of C++ is just a huge mistake.归纳起来就是两句话。
Linus认为在他的项目中(例如Linux内核项目和git项目)使用C,而不是C+,在于提高开发人员的门槛,将水平很菜的程序员挡在门外。
他认为,要用好C++,编写出高效的,可移植的,高的代码,必须保持克制,不滥用C++。
然而,实际上C++里那些个好的,完全可以用C来代替。
因此,他认为C足够好,用C++来开发他的项目是纯粹添乱,自找麻烦。
在上世纪九十年代Richard Stallman是这么评论C++的。
原文见https://stallman.org/stallman-computing.htmlI find C++ quite ugly.The flaws of C++, as I recall from when I studied the matter around 1990, include syntax and semantics. As for syntax, its grammar is ambiguous, and it is gratuitously incompatible with C, which blocks the smooth upgrade path from C to C++.As for semantics, the abstract object facility of C++ is designed around the case where the real type of an object is known at compile time. However, in that case, abstract objects are equivalent to a naming convention for functions to call. The case where abstract objects add real power to a language is when the type is not known until run time. C++ does handle that, but it seems to be an afterthought, a poor relation.I suspect that I would find plenty of ugliness in the template library, but I don't know. That was added to C++ after I studied it.Linus站在他领导的项目角度评论C++。
假如你从事的项目与他的项目相同或者相似,那么Linus的见解值得借鉴和参考。
Richard Stallman是在C++早期阶段评价过C++,随着C++的发展,三十年过去了,时过境迁,让Richard的话可能失去了时效性。
喜欢就点赞。
更多精彩,请
但是他把不合格程序员的问题说成语言的问题,这是不对的
参考:
C++是优秀编程语言。

参考:
“世界上只有两种语言,一种是天天被人骂但天天也被人使用的语言,另一种是天天被夸却无人使用的语言。
”———C++发明者。

参考:
基本上,我很认同他们的看法。
C语言是汇编之上的过程化抽象,直接面向机器指令编译,编译和运行效率非常高。
而后来那些基于解释/伪编译平台的语言,如JAVA或.net,则实现了面向对象和业务的抽象,提高了开发效率和通用性。
c++其实是这个过程中的过渡产品,在不满足于面向过程的情况下,推出的面向对象编译语言。
很自然的,编译效率会输给c,而编译语言的平台局限性并没有得到改善。
仅仅是通过面向对象提升了开发效率而已。
如今,要运行效率的选c语言,要开发效率的选JAVA或者.net/.net core,c++在这种局面下就很尴尬了,尽管为此不断推出新特性新版本,但是,编译类的语言搞这些个特性,意义并不大,而且bug也多…总的来说,学习c++很有必要,但是大型项目直接采用c++还是需要很大勇气的,搞不好两头不讨好,开发效率没提起来,运行效率也没什么优势…
参考:
他们说的都是事实,,虽然它垃圾,但是目前并没有更好的可以完全覆盖取代它的…所以糟糕的程序员和糟糕的语言都可以继续存在

标签