C++后端已经不行了吗?
大家好,我是轩辕。
周末的时候,在知乎看到一个问题:C++后端已经不行了吗?

确实啊,网络上一堆卷Java、Python的八股文,Redis、MySQL、Kafka等一堆中间件的资料多如牛毛,却很少看到卷C++的。难道现在的应届生们都不卷C++了吗?难道C++真的不行了吗?
根据作者提问的描述,他指的后端就是Web后端。如果是这个领域,那确实是,或者说在这个领域,C++这十几二十年,从来就没怎么行过。
如果你是想做Web后端开发,首选Java,其次Python,用C++去写Web后端,简直找罪受。
把后端这个概念进一步拓宽,延展到非终端上的开发(前端、客户端(包含PC、APP、小程序)),C++还是有一席之地,毕竟不是所有功能都适合用Java来做。
众所周知,C++被诟病很多年了,但为啥还是有很多场景要用到C++?
1、性能。这应该是主要原因。虽然C语言同样有着出色的性能,但在大型项目中,用面向对象开发还是更加容易驾驭。但我不是说C没法处理大型项目,我见过很多优秀的大型软件都是用纯C写的,比如Linux内核、Windows内核、Nginx、Suricata、Wireshark核心···其他面向对象更彻底的语言,如Java,在性能上又比不上C++。
2、历史包袱。很多公司的产品、技术框架都积累很多年了,轮子也都造的差不多了,比如腾讯。轻易不会换技术路线,怕出问题怕担责。甚至在有些公司,用C++还成为某种“政治正确”,新来的人敢换别的,是与很多吃这口饭的人为敌。这种现象严重到什么程度呢?几年前,我见过有公司一直用的C++98,有新人加入想推动C++11的使用,一堆老人反对,最后只好作罢。
总体来说,C++适用的主要是非Web领域,对性能要求高,软件复杂度也高,可能还有历史包袱的团队。
这种场景,一般就是需要处理大量数据的。
比如存储系统——CEPH。
比如数据库——ClickHouse
比如游戏——使命召唤
比如浏览器内核——Chromium
比如图像处理——PhotoShop
比如网络流量处理——Zeek
比如高级语言虚拟机——JVM
······
基本上集中在了游戏、云计算、存储、网络安全等领域。
但是,国内做这些方面软件开发的公司,你觉得有几个?
国内大部分IT岗位都是互联网+的公司,也就是利用互联网技术服务于一个传统行业的公司。
比如房地产、金融、教育、白酒···
这些公司的业务,不是围绕IT技术来的,而是把IT技术作为一个工具,去为它的传统业务服务。
这些公司的IT岗位,基本上都是Java后端+前端的模式,干的活也差不多就是数据库的增删改查。
这些公司是不可能招C++的。
国内能招C++岗位的,基本上就几部分组成:
1、头部大厂。华为、字节、腾讯、百度等。
2、游戏公司。大厂和中型公司居多。
3、网络安全企业。搞流量处理、沙箱、检测引擎等。
4、搞数据库、存储的公司。
上面四部分加起来,在整个IT行业岗位招聘中的占比,也是非常少的。再加上大家现在校招基本只看大厂,中小公司基本都忽略的情况下,能看得见的C++岗位就进一步缩减。
于是,很多人会发现:C++后端已经不行了。
C++一直在自己的领域内还在持续发热,但不可否认的是,一些后起之秀(Go、Rust)也在一步步蚕食它的地盘,属于C++不可替代的领地确实是在越来越少了。
不过话说回来,如今普通Web后端卷的如此严重,新入行的朋友与其继续投注这个卷到飞起的赛道,不如选择稳定缓慢一点的C++赛道,也不失为一种好的选择啊。