找回密码
 立即注册
查看: 1153|回复: 20

现在的市场对 C++ 的需求大吗?

[复制链接]
发表于 2021-4-7 08:58 | 显示全部楼层 |阅读模式
打算就业,一直学的是 C++,但是好像身边的人说不如 Java,想问一下 C++ 市场需求大吗?
发表于 2021-4-7 09:04 | 显示全部楼层
写了快十年C++,其他的语言基本没用过。
我觉得看下来好几个答案最大的误区是C++一定要达到一定水平才能工作,但事实完全不是这样的,不然就没有新的C++程序员了。组里有大佬带,活儿分的够细的新手是很好上手的。而且也不用担心自己代码写得难看不efficient,大家都是这么过来的都能理解,有code view怕啥。事实上因为C++深不见底,C++的程序员都特别谦虚特别友好(就像清北的毕业生都很谦虚一样,见过市面自然就谦虚了)。不友好的C++程序员早就被更屌的打脸打飞了。可以搜一下“精通C++”的那个问题看看各种打脸的故事。

C++和其他语言基本不存在竞争关系。但凡能用其他语言的都不会用C++。只能用C++的自然用C++。像我们组现在的东西部署在上万台服务器上,每天跟百分之零点几的cpu regression搏斗。你要换个语言运行效率降个10%,服务器那么贵几千台服务器的钱谁出?我们组也就十来个程序员。开发效率再高也省不了几个钱。
C++是刚需。具体需求其他答案说的比我好就不添乱了。
发表于 2021-4-7 09:13 | 显示全部楼层
初级工作岗位留给C++的机会不多了。


其实这在掏空这个语言的生态。毕竟很少有天才毕业就能直接成为(真)c++高手的(因为没有太多地方给模版元编程达人们秀技的,除开这种高手,毕业生中的C++高手真的不多)。


“留给中国队的时间不多了。。” 标准委员会还在扯皮中。。
发表于 2021-4-7 09:20 | 显示全部楼层
C++ 的使用场景很多。 音频,视频处理,图像处理,地图,数据库存储,游戏开发。 C++的岗位招聘相对其他语言会比较严格一些,一般只招聘高水平的。实际上高水平的工程师大多会 C++, java , C#.
发表于 2021-4-7 09:22 | 显示全部楼层
我喜欢C也喜欢C++,但是我不靠这两样混饭吃,吃饭的是Python、C#、Go之类,因为我不会跟自己过不去,老板不会跟钱过不去,能快速赚钱的就好,HR不会跟老板过不去,能招到快速的生产力就好。作为学生,别跟市场过不去,市场需要就好,看其他回答吧,明显是JAVA赢了。
发表于 2021-4-7 09:29 | 显示全部楼层
先说结论:需求还是很大,但是没有什么初级程序员能干的岗位。


游戏引擎,存储,推荐引擎,infra,各种各样的性能敏感场景。这些都是C++的刚需场景,别的语言基本替代不了的。除了pingcap这种激进的用rust写存储,大部分的存储还是C++的天下,何况rust学习曲线比C++都高。推荐引擎不说了,C++是一定的。游戏引擎,为了跨平台,基本没有别的候选语言了。


但是显而易见的,C++确实没有什么好的初级职位了,从职业发展讲,这就像打DOTA,你选了个中后期英雄。如果你想找个大前期玩玩,必须python啊,君不见,各大公司算法吊打工程,rank吊打frame,其实说下来难度几何?都是一把泪罢了。


还是看你将来想干啥。想干应用架构,与Java狗谈笑风生,沆瀣一气,你就好好写Java,学DDD,看Clean Architecture。你想成为炼丹玄学工程师,年入百万,就选python,专精各种paper。你不在意钱,觉得C++有意思,爱好做infra,那好,情之所钟,正在我辈,将来也能挣个炼丹狗的一半。(以上都是调侃,别当真...)
发表于 2021-4-7 09:35 | 显示全部楼层
C++程序员的不可替代性更高,一个有经验的C++老程序员在公司里是很牛逼的,因为项目里很多坑只有他知道,任何人再牛进到组里,也发挥不出老人的作用。而且很多几十年前c接口和库都还在用,人不老点,你就学点C++11/14/17,你都没见过那么多,看见了你就傻眼了。
不过呢,貌似题主是个新人,那C++这个优点就是你的拦路虎,你如何去和那些老程序员抢饭碗呢?好多老项目都是c++程序员死一个才会找一个新的,而新项目受到java,scala,erlang, go等语言的竞争,好多很强调性能的后端项目都不再用c++了。不过c++的体量还是巨大的,只要你水平还不错,不管国内国外,吃饭是不成问题的。但是这c++程序员的收入可不像以前那么容易上去了。其实高水平的程序员大家底薪都差不多,主要还是得看股票,那怎么才能拿更多的股票呢,当然得来互联网公司,互联网公司的c/c++空缺有,不过不多,竞争也很惨烈。
题主要是有10年以上的c++的经验,那倒不建议转行,C++这碗饭吃吃也可以了。要是新人的话,如果不是天赋异禀,咱还是别这么挑战自我了,你说是不是?我觉得对于新人如果激进一点,就学赶潮流的热门语言,比如说现在后端的go,如果想稳妥,就学应用场景多,发展稳定的语言,比如说Java。
至于有人说java会死,c++不会死,别逗了,在你35岁之前,谁都不会死,php都还没死呢。。。。不过不用说死,任何语言只要新项目变少,新人就不太容易找到工作了,如果老项目开始改用其他语言,新人不说,就连水平不太好的老程序员都要遭殃。当然你要是有大毅力,一直坚持学c++,几十年后把java熬死了,或许也是条路。
发表于 2021-4-7 09:45 | 显示全部楼层
只有性能省出一个程序员工资的领域才需要C++,大概有三种情况
    服务部署在100台+的机器上,比如一些分布式基础设施,需要堆机器分担CPU和内存消耗的各种服务器集群,性能省下来的钱大于C++带来的研发人员开支服务部署在单台机器上,可以吃光CPU和内存,但是性能是市场上争取份额的必要条件,比如游戏引擎,一些专业桌面软件,更多的市场份额大于研发的人员开支老项目,更换技术构架的切换成本承担不起


其余的领域都没有必要用C++了,说白了都是成本问题,C++的需求目前就是被硬件成本消灭的,如果一台4核16G的云服务器1W一个月,保管C++需求量猛增。


PS:知乎真的回答必抬杠这个神烦,比如一楼回复我的这位。都是从数字电路学到操作系统毕业的,实验课是要写代码烧通用芯片的,好歹也自己撸过编译器,所以阅读理解不到位麻烦不要着急装逼...自己推理出点儿东西觉得别人啥也不懂的,往往都是自己不懂。。。
发表于 2021-4-7 09:46 | 显示全部楼层
本来是写C++的,实习招聘的时候,投的也是网易C++工程师,结果面的JAVA岗,竟然还过了,成了JAVA开发;然后就是在公司边学JAVA边干活,最后转正也是JAVA开发,我一个写C++的就这么变成java工程师了;
怎么说呢,如果你不是那种牛逼到可以那种google、微软随便进的那种人,只是安安稳稳做个平平烦烦的码农的话,我想告诉你,C++的市场真的在萎缩,市场对新人C++真是太不友好了,当然咯,你是那种抱着改变世界的理想去的,当我没说;
ps:会C++的话,学java真的很快,不过仅仅是语法快而已;有句话叫java的东西都在java之外,还是很有道理的;不过像数据结构,计算机网络,数据库这些东西基础打得牢固的话,换换语言其实也不是很难,把一些框架啥的掌握到会用的程度还是很简单的,精通的话得另说;不过大多数人也只是需要会用基本问题就不大了;
发表于 2021-4-7 09:53 | 显示全部楼层
tensorflow已经改正,因为最近在看tesseract源码,所以脑子糊涂拼写错误了。。。

和几位同行说的一样,c++现在基本上都是中大型企业才会玩,应用场景也偏向于一些专业化的软件开发,所以c++的市场需求量不如java。又因为高级语言的开发简易化,很多品控要求不是那么严格的项目转向了python、c#等语言。当然c++也无法去和PHP争抢WEB端应用的地位。加上现在移动端应用开发是整个软件行业最热点,c++给大部分未从业写或者待从业者的感觉都是需求量减少很多。

就我个人的工作环境以及与华为南瑞的一些合作来看,c++的市场需求量还是很大的。说在前面,c++的绝大部分岗位对于新手都很不友好,它不是看几天做几个简单的小项目就可以开发产品和项目的,需要比较长时间的学习周期。正是由于这个特点,c++岗位现在比其他语言更缺人。

c++的优势在于,但凡是用c++开发出来的软件,它的时效性、稳定性、可扩展性都可以得到很好的控制。这是任何高级语言都没有办法达到的,你可以问任何人能不能只用python写出一个拍照进行复杂场景下的台型卡片校正的APP,并且保证能做到实时性,答案都是不可能,现在只有c++和c能做到这点。python必然需要依赖基础库和第三方库才能实现这些功能,这些库都是基于c系语言的。

为什么说c++是大部分程序员必须要掌握的,因为所有的高级语言都依赖于c系语言提供的基础库。拿opencv举个很简单的例子,你用python做一个图像处理项目,如果opencv的提供的二值化函数都满足不了项目要求,需要自己来写一个二值化函数,怎么办?上c++写好封装成动态库供python调用。你说我用python写可以吗,当然可以,效率低的吓死你。

所以就目前而言,不管是做图像还是ML还是其他的软件开发,如果你不会c++只会用高级语言的话,就只能老老实实的用别人给你做好的框架和接口。刚从业大家区别不大,哪天那些框架和接口没法解决问题需要自己动手,就GG。

所以说如果想做一个很厉害的程序员,c++不求精通,但不能不懂。

如果有说的不对的地方,还请指正交流。

文字化的分割线,以下为原答案

opencv、caffe、tensorflow等很重要的第三方库无一例外都是用的c++编写的。

说两点吧
第一点,如果你想做一个顶尖程序员,c++是你必不可少的技能。如果你只想混口饭吃,python、java会是更好的选择。不要相信那些说java会死的话,市场上那么多java产品,不可能全部用其他语言重构的。java有很多缺点,但是十年内,不可能退出市场主流,二十年内不可能死。
第二点,大公司做产品,c++是首选。凡是涉及到时效性、稳定性、可扩展性,c++绝大可能是首选,只要这个公司有c++开发团队。那些推荐你去学习php.python的,大部分应该是公司规模不大或者是互联网公司,接触不到这些品控要求很严格的产品。

对一个开发者来说,c++是必须要掌握的。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-20 20:49 , Processed in 0.094975 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表