[编程开发] 为什么说学C++是浪费生命?

[复制链接]
gysldj 发表于 2023-10-8 06:56:07|来自:北京 | 显示全部楼层 |阅读模式
芯片大厂高端语言双修选手来答一波。
首先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编程。
全部回复20 显示全部楼层
hshf007 发表于 2023-10-8 06:57:00|来自:北京 | 显示全部楼层
我不排斥专有名词用英文,但是像升级硬件这种句子,写成update你的hardware,不尴尬吗?[发呆]
风雨路人 发表于 2023-10-8 06:57:29|来自:北京 | 显示全部楼层
我的妈呀,历史比汇编还久[思考][思考][思考]这可真是厉害
超级赛亚人 发表于 2023-10-8 06:57:43|来自:北京 | 显示全部楼层
谁再说计算机领域没有民科,我就把这个回答拍过去
lqxxql 发表于 2023-10-8 06:58:02|来自:北京 | 显示全部楼层
我的意思是如果你一直以hardware的思想写程序,你很难写出general case的程序。而为了提升performance,往往要熟悉多种hardware的principle。这又走向你的program表现的太concrete,在教科书上不能达到abstract的样例,离abstract太远我觉得价值都挺低的。
永不死机 发表于 2023-10-8 06:58:11|来自:北京 | 显示全部楼层
c++的历史为什么会比汇编老?
rainsun66 发表于 2023-10-8 06:58:31|来自:北京 | 显示全部楼层
是不是中文里面夹英文单词,就会感觉自己又行了[大笑]
ues6858 发表于 2023-10-8 06:58:47|来自:北京 | 显示全部楼层
只看代码谈性能[飙泪笑]
fj520 发表于 2023-10-8 06:59:21|来自:北京 | 显示全部楼层
谁会自称编程领域专家[捂嘴]
bigboboo 发表于 2023-10-8 06:59:49|来自:北京 | 显示全部楼层
不得不用呀,好多接口就只有cpp
123下一页
发帖

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则