来源 | 轩辕的编程宇宙
作者|轩辕风
前几天在知乎上看到一个问题: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++ 工作吗?你可以留言谈谈你的行业,给新人一些信心。