为什么说学C++是浪费生命?【转载】

作者:水神上仙
链接:https://zhuanlan.zhihu.com/p/606709981
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

芯片大厂高端语言双修选手来答一波。

首先C++早已是old-style,别再提C++,它的历史比汇编还久的多。

有些C党喜欢把Modern挂在嘴边,我就认为当初设计C语言那帮人是思想老旧,我没必要高看那些人一眼。加了些Features就Modern了,我真要笑掉大牙。

我认为Performance圈子里是wrong direction,至少我觉得这个圈子不创造任何价值,喜欢YY。你别跟我提你CPU主频多高,内存容量多大。

Better Performance是一种no sense things,我恳请你一定要去写汇编,你省的那几个cycle,真的NBCS。

你熬夜加班写代码是为了啥?你不会换一个Better Performance的CPU? 你不会update你的hardware?你跟我说写Better Performance的代码,我只能说你太喜欢在物体上雕花了。

追求Better Performance Code的人本来就是一群病入膏肓的人,这种人习惯了在MCU上编程,而不是SoC上编程。

所以从这种人嘴里才会蹦出来一些自以为是的话:什么检查数组下标会削弱性能啊。什么回收内存会削弱性能啊。

在这种“性能病患”眼里,一切削弱性能的东西都是不好的东西,这种人把性能当作一切,好像只要优化一下性能,在10M频率下也能跑出1GHz的性能。

所以我从来不想理这种人,他们懂编程的含义吗?C++圈子全是些怪人,我早就不混圈子了。

我认为他们对Optimization这个词有严重误解,好像少new几个变量,尽快释放几个内存,就是最好的Optimization,只能从性能这个指标评判程序的价值?我觉得这种人不配写代码。

首先,你要摒弃掉性能这个词,然后我们再来谈语言的其他Features。

我们来谈谈Safe和Unsafe。任何Safe的东西都会自动做很多check并且在throw之后有足够多的catch。

只要是一个用过Rust的人明显就能感觉到rust编译器的catch分支比C++多太多。

而这种Safe就是由牺牲微不足道的性能换取终生保障的Check。

现在的C编译器就是一坨sh,它有ChatGPT那么智能吗?我天天手写printf,手写switch_case;写多了这种极端低级的语言很容易降低人的智商。

谈什么都是放大水,首先你要简化语法,其次你要check bug。这才是我信赖的编译器。

编译器的目的是降低人的工作量,保障程序的安全性,保持程序的简单性。这就是所有未来语言的发展元素。

不是像template党遁入邪道在坍塌的地基上自娱自乐,也不是叫着优化performance。

我们要为编程的终极理想服务,你程序慢个一倍又怎样了? 是公司不给你钱买新款CPU吗?

你程序能不能保证别人能看懂,你程序能不能保证写的不犯错。

编译器有没有做足够多的检查去辅助人类编程。

我们都是聪明人,我们知道Rust有光明的未来,你和C++那帮思想落后把performance和compatible视为最重要事情的患者争辩什么呢?

他都喜欢浪费时间在优化cycle上了,随他去呗?反正他的工作从理论上看也没有多少价值。

我最后说一句,编程最重要的是可读性,体现在代码美观性,逻辑统一性,和数学公式的直接映射性。其次是方便性,主要是lambda,map这些组件,不会用grammar sugar的人在我看来都比较低级。

最后是safety,你用什么catch statement来protect代码逻辑的正确性?

你完全放弃catch异常,就是让代码裸奔,就是喜欢偷懒,只考虑best case,不考虑general和worst case。你写程序没有追求。

当我们把代码的内在美观性,和bad case catching解决后。如果我们学有余力才考虑better performance。

记住这个优先级顺序,99%的情况下我不会把生命浪费在解决performance的问题上,我宁愿去做appearance level的优化,我觉得更valuable,因为我的价值观是正常的,有些人的价值观已经被机器驯服了,他们是机器的Slave,我是机器的Master

Convenience和Simplicity是一个主导一切的词,我们提出工程师创造的产物是服务给世界上最蠢的人,不是只服务于天才用户。

我们以愚者为本发展科技,我们拓展他们的能力做更多事。科技趋于简单,不是复杂。

C++和Rust臭味相投,他们在Simplicity上都是failed product。现在比较Safe已经没有意义,因为它们的发展目标就错了。

我曾经花了4年时间学C++和1年学Rust,但我更欣赏C#,kotlin,python这种语言。它们在sugar上做的非常棒,simplicity也有优越性。

面向机器编程是觉得自己活太长了,人生苦短,我面向fast solve problem编程。

你可能感兴趣的:(C++学习记录,开发语言,c++)