大家好,我是小北。
关注我的同学有不少是对 C++ 感兴趣,或者说想要找 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、搞数据库、存储的公司。
5、搞工业软件、机械控制系统的公司。
上面几部分加起来,在整个IT行业岗位招聘中的占比,也是非常少的。再加上大家现在校招基本只看大厂,中小公司基本都忽略的情况下,能看得见的C++岗位就进一步缩减。
于是,很多人会发现:C++后端已经不行了。
C++一直在自己的领域内还在持续发热,但不可否认的是,一些后起之秀(Go、Rust)也在一步步蚕食它的地盘,属于C++不可替代的领地确实是在越来越少了。
除此之外,还有一个原因导致网络上C++的声音很少听到。
不同于大家常常提到的互联网后端开发,学习的内容比较固定,差不多就缓存、数据库、消息队列、高并发那些东西,你把这一套东西吃透,就能有很多工作机会了。C++则不同,它所涉及的领域就太杂了。
比如搞图像处理的和搞存储的研究的东西就很不一样,它们和工控系统开发、桌面软件开发用到的东西又不一样。虽然大家都是用的C++,但需要学习掌握的附带技术栈有着天壤之别。所以C++的不同领域的唯一共同点,也就是都用着C++这门语言罢了,仅此而已。
甚至有网友说,C++不同领域之间的差别,比从C++跨Java之间的差别都大。
不过话说回来,如今普通Web后端卷的如此严重,新入行的朋友与其继续投注这个卷到飞起的赛道,不如选择稳定缓慢一点的C++赛道,也不失为一种好的选择啊。
在看这篇文章的你,有做C++的吗,可以留言说说自己的行业,给新人一点信心。
推荐阅读: