[编程开发] 如何看待2023年大量劝入C++?

[复制链接]
pasu 发表于 2023-10-3 19:31:27|来自:北京 | 显示全部楼层 |阅读模式
本人目前研一,导师要求搞算法,但是我还是想搞开发找工作,首先想到的就是学java,但不管是网上还是身边的朋友都说java凉了,都在劝入c++,嵌入式等等,但是c++不是岗位很少吗,而且不同细分领域技术栈还不一样,所以c++值得入吗现在,还是说本来岗位就少,不说很多人,一部分本科生或者研究生涌入就会成为下一个java呢
全部回复5 显示全部楼层
lsh981688 发表于 2023-10-3 19:32:15|来自:北京 | 显示全部楼层
很久以前某大佬答过……
整个行业相对来说机器性能充足, 人力不足时, 市场上Java/C#之类技术就会占优势. 既然人力成本高了, 那么得多训练一些耗材, 过几年换个新框架, 正好以这个理由开掉一批换新炮灰.
反过来, 人力充足,硬件性能相对不足了,c/c++就又翻身了。
davie67 发表于 2023-10-3 19:32:48|来自:北京 | 显示全部楼层
刚结束找暑期offer的一员,尝试贡献个样本(不保证可靠)。
我其实不太有资格回答这个问题,毕竟还在念书,公司还没去过乱凑啥热闹。但刷到这个问题好多次了,也看了很多大家的回答,总想说点什么,还是没能忍住,想到哪就说到哪吧。
其实之前也有类似的问题:
在2023年还建议走C++这个方向吗?我是慢慢才意识到 @紫藤花 那句“c++的岗位除了语言都是用c++以外,没有任何共同点”是什么意思。
太对了。
面试问内核,问存储,问崩溃一致性,问处理器模型,问IO,几乎没人问C++。
唯一一次问,还是那个面试官觉得他和我背景不太match,才随口问了句虚表,然而即便我这种对编译器啥都不懂的人因为对codegen略有了解也能说出个一二三来。
关于C++,他们出奇的一致,都是只在临了确认一句:你是用什么语言?C/C++对吧。
然后我就说是的是的。
就没了。
最后拿到了四个暑期,一个操作系统岗,一个存储岗,两个数据库内核岗,我也还在纠结。
我唯一被面试官diss的一次也不是“你怎么不懂C++的这个xxx语法/特性”,而是“你不像是有分布式系统背景的样子”。
其实平时在实验室也是这样。
我们讨论page cache,讨论内存序,讨论怎么避免IO放大,讨论符号链接,很少专门讨论C++。
很少并不是没有,最近就在考虑C++ thread_local关键字的运行时开销,它对executable和对动态链接库开销差别很大,对dll中定义的thread_local每次访问都会有额外的函数调用以及间接跳转,对cpu的流水线也很不友好,而这些都是我看了很多GNU文档、博客,对着满屏的反汇编分析了一两天又上gdb追踪了两三天才确定下来的...
所以C++真的只是在写C++吗?以前我也这么觉得,但现在恍然回头我觉得不是的。你是在做系统,C++只是你实现这个系统需要的一个最小overhead、最精致控制的工具罢了。
你当然需要对这个工具熟练,甚至不光是C++,还有工具链,还有构建系统(我就是被盘子哥 @pansz 的回答劝进的cmake),但你不能本末倒置,只熟练工具。
C++难吗?
我觉得一方面来说是真的难,两年前我写template遇到argument dependent lookup的时候真的被劝退了,果然我还是写点基本的模板得了,20有了concept对我这种一写template全是报错的人来说就是救命稻草。
但另一方面好像也不是特别难,真正有需要的时候从了解20的coroutine设计到把它封装到我们对SPDK的调用上做成可嵌套的suspend也就一星期。但这些并不是天然就应该这样的,是因为从一开始就考虑coroutine的codegen,而这还要追溯到写C留下来的习惯,你必须要一眼看出你写的C会生成什么汇编。
C++重要吗?
重要,但只是众多你需要掌握能力的一部分,在满足你日常使用后你在自己领域的经验更重要。
【打个广告】自己学C++摸不着头脑可以考虑跟下深蓝学院的C++课,比较务实,注重理论和实践,课程内容也比较实用,适合没有基础或者想转C++的同学:
C++基础与深度解析- 深蓝学院- 专注人工智能与自动驾驶的学习平台<hr/>给我的感觉上,知乎对系统的讨论是慢慢变多的,从18、19年清一色的ai,到20年开始
非机器学习方向的 CS PhD 有必要读么?这种非ai的方向慢慢开始进入知乎er的视角,有回答、有讨论。
再到今年开始推荐专门针对系统的问题,正儿八经地把非ai方向跟ai“相提并论”了:
计算机系统(system)方向的博士毕业后可以去哪些岗位?与AI方向的博士相比是否有差距?写得没头没脑的,想到再补充...
008at 发表于 2023-10-3 19:33:34|来自:北京 | 显示全部楼层
还是好好学一下,我一个搞深度学习的,放眼望去就没几个会C++的,但凡要弄点和C++有关的事情都离不开我,更别提cuda了。在一众计算机的硕士博士中,C++居然成了我的核心竞争力,护城河还相当之深,这你敢信?
wushuhong 发表于 2023-10-3 19:34:25|来自:北京 | 显示全部楼层
1w个Java岗位可能技术栈大差不差的
1w个C++岗位之间的技术栈差别,可能比C++与Java之间的差距还大
nvzitea 发表于 2023-10-3 19:34:31|来自:北京 | 显示全部楼层
一部分本科生或者研究生涌入就会成为下一个java呢
不会。因为C++自带劝退属性,很多人学着学着就放弃了,不用担心太卷。
适不适合当程序员很难判断,但是C++是一块不错的试金石。

快速回帖

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

本版积分规则