[编程开发] 2022年学C++开发好比49年入国军,没什么公司在用C++了?

[复制链接]
warkinger 发表于 2023-10-12 09:57:30|来自:中国 | 显示全部楼层 |阅读模式
下面这个人说的,大家怎么看?
https://www.zhihu.com/question/507146607/answer/2282804502
全部回复5 显示全部楼层
似猪非猪 发表于 2023-10-12 09:58:22|来自:中国 | 显示全部楼层
相反,用C++的公司很多。只是你不知道而已。
本来不想回这样的问题,因为我觉得一个适合学C++的人,应该具有起码的搜索能力,但是我看了一下评论,发现有些人真的被这个问题误导了。
现在的招聘网站都能很方便的按照关键字搜索岗位,用搜索引擎搜索C++招聘这些网站也会排在前几名,比如说boss直聘、猎聘等等。随便搜一下,你会发现那些稍微听过名字的公司好多都有C++岗位招聘,公司数目加起来没有几千也有几百。
你可以说C++岗位的相对比例不多,确实如此,但是绝对数目并不少,容得下真正想要学习C++的人。
跟风去学C++肯定没必要没前途,付出得更多,待遇也不见得比学习其他的技术栈高。但是如果喜欢C++,就放心大胆地学下去,也没必要担心以后找不到工作,待遇高的岗位也多的是。
我从一开始就喜欢C++,强大的表现力,浩如烟海的开源代码,永远无法精通的特性让人高山仰止,不断更新的版本又让人觉得持久弥新。所以我从一开始就坚定地走在C++的路上,谁也误导不了我。
欢迎交流。
springz 发表于 2023-10-12 09:58:45|来自:中国 | 显示全部楼层
我主要工作是cpp服务器后端,暂时体会真是这样,岗位非常稀少

搞这语言,在国内能够找到工作的岗位
其实就音视频,游戏引擎,ai底层,高性能存储(这个go也在蚕食),这几个方向有前途。这几个难度大,工资也非常高
像app pc客户端现在h5这么厉害,基本上搞cpp做这个没前途
服务器基本上java和转go了,因为相比cpp,开发效率高太多了,各种人家造的好轮子随便用,除了bat里面的腾讯百度还有大规模用cpp做后台之外,基本上如此
这两个方向都没前途了
所以还是看你以后准备做啥方向
有个慎重点是游戏行业,也有不少招cpp的,但我个人认为游戏行业有前途的cpp就是游戏客户端引擎方面的工作,游戏服务端那些cpp,架构相比互联网行业,辣鸡太多了,完全是落后时代的作品,搞这种祖传代码是浪费你的时间
不要看那些答主在叽歪啥各种国民级基础设施,os等等,中国没这种公司,你没有命做这种软件
贴切实际的工作岗位方向就这些
hao898 发表于 2023-10-12 09:59:26|来自:中国 | 显示全部楼层
10多年前有个小朋友说C++是二十年的老技术了,他要去学新技术新语言。
10多年过去了,C++已经变成了三十年的老技术了,而他已经学会了第三项新技术了。
你看,大家都有光明的未来。
jnwlw 发表于 2023-10-12 09:59:40|来自:中国 | 显示全部楼层
啊对对对。
天天在那喊被卡脖子,然后基建的事一点都不干。
月朗风清 发表于 2023-10-12 10:00:14|来自:中国 | 显示全部楼层
可能地摊文学看多了,被资本家忽悠瘸了吧。张口大数据,闭口人工智能的。我就问,有几家公司有大数据,就字面意思,他有大数据吗?你进一家中小微公司,年产值就几千万或者几个亿,你tnd有什么大数据?数据在哪里,没有数据还搁那儿说自己要大数据。你可以关注一下,有这种岗位的中小微公司,要么挂羊头卖狗肉,要么几年后就差不多要死不活的了。人工智能同理,真当训练不需要资源的?
那么假定你就是要去大厂,能真正接触到大数据。那么问题来了,如果你是做分析和理论研究的,那什么语言无所谓,因为语言只是工具,你都懒得每天跟语言打交道,因为你需要设计模型,分析问题,然后分派给别人执行,天天敲代码不是你的事情;如果你是执行层,有关大数据处理的落地需要你来写,你觉得你会用什么?你tnd用java写是吧,用js写是吧,你跟阿里说,兄啊,C++是49年入国军啊,憋整了,咱直接来oracle吧?阿里说,你给我gun。哦,py是个好工具,但是py是好工具并不妨碍它单独找不到什么工作的事实,因为它就是个好用的工具而已。
另外他们会说,哎呀,人工智能可以不用C++,blablabla;唉,tnd如果是人工智能的话,你觉得问题在“语言”吗?问题在对人工智能的研究上啊,人家招你来是做研究的,至于什么语言,一看,哦python方便是吧,那就现学一下呗,当然你一开始就会是最好的。他们得搞清楚重点,就是这个岗位可能是用了某种语言,但人家的工作重点是什么,是语言成就了专业,还是专业刚好捡着这个语言好使;语言只是个工具。
其他当然还有各式各样的语言,关键看你要做什么。你想在中小微企业做服务端开发?那可以不需要C++,其实不是不需要,他们要不起。java问题不大,甚至找前端来直接http也行,现在很多app里面确实某些服务后台就走的http请求。你想做IOS、MacOS开发,那可以用OC、Swift。
如果你说的是商业、互联网企业的话,辣确实除了够大的,技术够深入的团队,可能用C++的不多了,但是需求还在,而且如果你有机会接触到他们,你会听到他们跟你讲,招C++的人真特么难。不是难在没有C++开发者来应聘,而是没有可用的人了。中小微企业的团队,因为成本问题会考虑选择C++,因为1.桌面应用往往可能涉及或复杂或频繁的交互,用js的方式,在可靠性和响应上都很难达到理想程度,不敢说一定不能;而是一旦出现了表现不合预期的情况,你甚至不知道从哪里去下手。譬如webgl的表现,某些场景渲染效率,firefox就是不及chrome,你怎么优化,这还只是不同浏览器内核的差距,如果同一个内核里出幺蛾子了,怎么玩;去改良重构是吧,那好,内核代码还是C++的(doge)。2.假定他要在windows,基于linux内核的桌面os,mac三类任意两个中上线,他就大概率考虑C++、OpenGL;用本地工具开发的话,那本来一次开发多次调试上线的事情,就变成了多次开发,成本暴增。
如果是工业开发领域,尤其是军工,C++还多得很。你也可以理解为是历史原因吧,但这个历史将延续下去的时间或许不比你的职业生涯短,这不是什么焦虑的问题。再者,如果你连C++都能掌握得很好,你还担心什么?出来没C++岗位需求了?那你学个什么还学不会呢?
*顺带提一些吧。如果你要走C++ 这条路,除了学习C++基础知识外,你还需要去思考,你想往什么方向走。通信、服务相关的开发,还是图形开发,或者别的什么。如果你不去思考,那么你有可能工作要么会赶鸭子上架到嵌入式,要么会到某个小企业去写基于Qt之类的GUI扩展的界面应用。嵌入式尚好,GUI也就是大家常说的界面开发,问题在于界面开发本身不足以成为一个值得深入研究并实现价值创造和价值变现的方向。走C++这条路需要面临这样的问题,就像读书时候选专业一样。而其他许多语言不用烦恼这个,譬如java,它已经在发展中就针对服务端提供了足够多的特性了。而C++是站在岔路口,不管你要选哪个方向,你都需要额外补足一些东西。
所以说到这里,可以说给周围人带来“49年入国军”的感觉的原因之一可能就是没有明确的、特定的发展方向。你可以试想一下, 如果有人说自己搞java开发的,你几乎想要把他跟服务端开发画等号;如果有人说自己是搞oc、Swift开发的,你说他做啥的呢,可不就是苹果的系统吗;如果有人说自己是js开发,你大概率会猜,哦,是不是做web开发的。那如果有人说,我是搞C++开发的;谜题就来了,我到底是干嘛的,嗯?图形开发,游戏开发,服务端开发,界面开发,客户端后台,算法库,好像tm都有可能啊,但是不管哪一种,都又差点东西。
譬如你要搞图形开发吧,那你得去学图形学啊,你跨平台要用OpenGL或者vulkan,那你还得去学这俩,得熟悉它们的API;你说就只在windows,那得学dx;在苹果的设备上,为了最适化,就得学metal。这还不止,如果你要做跟地理信息有关的,可能还要学以OpenGL为基础封装而来的开发组件;如果你要做游戏开发,也离不开前面那些图形API,另外你还得熟知游戏引擎本身的一套东西;如果是界面开发,就拿Qt来说,至少你要学Qt吧,Qt的widgets之外它还有一套qml,而qml背后的实现是场景图(scene graph),这东西就够喝一壶,不搞图形开发都未必知道这是什么。
归根结底问题在于,在现在的商业市场冲击下,C++的学习成本太高,还连说明书都没有。相比之下,跟着潮流学点时下热门的语言,看起来不是更美好吗——一度是java、php、js,python,py很短暂,因为很快发现没地方要(运用很广泛,但它难以单独成为岗位)。但是这里同样有个值得思考的问题,热门的市场需求往往意味着竞争也很激烈,尤其是你也明白,咱国家又不缺人,所以热门方向就一定意味着你很容易找到一份稳定且收入可观的好工作吗;反过来,看似冷门的市场需求,只要不是夕阳红产业,没有处于萎缩、衰颓阶段,那也不妨碍你找到一份不错的工作。
个人主观观点,仅供参考。
<hr/>其实吐槽这些一方面是我个人不太喜欢那些声音过大的舆论,它们总是试图引导、蒙蔽他人,给大家上红滤镜,看啥啥都是红海。但实际上,只要你自己努力去思考和前行,潮不潮的真跟你关系不那么大。要留意的问题是,有的岗位环境,上头是不断地在跟你博弈,想要削减你思考的积极性的。因此“思考”的重点就在于,你选择奔赴一个岗位,要清楚这意味着什么,你需要跟什么对抗,你需要给自己争取什么。而不是把主动权交给别人,让别人告诉你要做什么。某一天,他们可能就会告诉你,不需要你了。
如今看来,在C++上,大家主要是对两方面犯难。
其一是技术层面的,就是所谓基础知识、语言特性、语法等,这些内容可以选择参照大学专业的学习路线,去淘到一些学科教材,系统学习一下;如果觉得教科书又太过于“教科书式”了,也可以找寻一些更直接更偏商业一些的教学。譬如深蓝的课程:
C++基础与深度解析 - 深蓝学院 - 专注人工智能与自动驾驶的学习平台
可以用预习的方法,看标题自己先大概掌握一下对应的内容,带着疑问进去,以此来评估教学内容是否是你想要的。以免跟那些培训班学员的遭遇一样,花了钱,好像做了练手项目,稀里糊涂奔赴岗位发现又好像没学到干货。特别要注意的是,带着自己的观点和思考,教学的可能是位大神,但大神不是神;所以不能去迷信,知识内容能为你的大脑理解方式所接受,才算是真正掌握到你手头了
其二是延展、桥接,说白了就是前面提到了,发现自己无论到哪个岗位都似乎差点了什么。如果非要说得高大上一点,大概就是,我们选C++这条路的,开局所掌握的生产资料就比较少。一个有明确输出方向的技术,可能最缺的是“价值变现”的部分;而C++因为输出方向对大部分使用者而言都不太明确,所以我们会觉得自己甚至连“创造价值”的部分都是不完整的。关于这一方面,实话讲,我自己也不敢说能提炼到几句书面语言就可以告诉大家该怎么去选。只能说,就我个人经历,我发现如今的社会,假象和谎言远比大家以为的要多,不要去相信那么多红海,不要去预设自己只能在泥潭里打滚;如果有什么想法或者困惑,也可以一起交流一下。
交流的效果远比我们以为的要大,我自己有时候想不出好的方案来,可能仅仅是找朋友单方面输出,把自己想的内容哔哔一遍,完了竟然就发现似乎方案明朗了不少;这其实就好比有一位聆听者给了你契机来梳理思路,他都不一定需要跟你产生特别多的互动,只是给了你一个输出和整理的渠道。
突然想到,我的某些朋友也是发语音自说自话,完了他就自个儿想到法子了。大概有些理解为什么会有人喜欢带个录音笔跟自己说话了,尬不尬已经不重要了,关键是如果自己念叨真的有帮助的话,试一试未尝不可。
<hr/>关于场景图的表述,再多提一下,虽说不知道确切的叫法,但不一定就没使用过;就像设计模式一样,你可能不知道某个模式的名称和书面定义,但自己早就用过变体了;而场景图,说到底也不过就是一个树形结构的节点,把一套组织形式变换到另一套组织形式,可以理解为数据模型的变换,一套是为了方便开发逻辑,一套是为了适配渲染逻辑,这种实现思路的体现其实非常广泛。而我说不搞图形开发未必知道,并不是为了告诉大家这个东西很高深很流笔,你把握不住;而是为了表达,“界面开发”往往给人一种“本该很浅表”的印象,但是却难料他背后还有这样一套机制。就好像有人招聘你的时候说,“咱就找个拧螺丝的,你会拧螺丝那明天就来上班”,结果来了发现,拧螺丝的确不假,但拧的是精密设备的螺丝,而不是自行车。

快速回帖

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

本版积分规则