C/C++的确有有点过时了,这里要把C和C++放到一起说,因为你很难把他们两个分开。
从语言设计上,它的缺点太多了,很多近20年比较先进的语言设计思想很少被C/C++采纳,即使采纳也很难普及,C/C++历史包袱太重,它必须兼容过去三十年的语言设计特性,而它的编译器和运行库虽然有标准,但是没有单一的标准实现,导致多个编译器互不兼容。
大部分新工程是不用C/C++的,注意是“新”工程,原有的C++工程还是持续在用,摆脱不掉,由于历史原因,软件这个世界在构建的时候只有C/C++可用,导致这个世界的基石都是C/C++开发的,操作系统,编译器,运行时库,算法包,图形引擎,数据库等等,这个项目的生命周期特别长,很难换掉。你会发现,百万行代码以下的项目各种语言都有,但是百万行代码以上的项目C/C++的占比就很高了。这种恐龙级的大项目一定是很多年前就开始的,而那时只有C/C++。
说学习这个语言只是为了竞赛和装逼是显然不对的,学习这个语言的目的是为了达到更高的软件技术上限,注意是“上限”,不是说你学了C++就水平高了,而只是上限高了,能多大程度接近上限还是靠多年的努力和天赋的。当需要学习更多的软件技术,理解更底层的设计,是必须理解C/C++的,其它语言会把你的技术能力限制在应用层。比如 学习机器学习和神经网路,深入到底层无论是 Tensorflow,torch,还是TVM都是基于C/C++的,机器学习算法包大多都是 C++实现的。
学C/C++的人很多,但是能学到高水平,能利用这门语言开发项目的人非常少,大约只有不到百分之五,就像学外语的人很多,但是能学到和外国人谈笑风生水平的很少。C/C++不学到一定境界,都无法正确看待这门语言。学C/C++就是为了成为高手的,否则投入产出比太差了,远不如学习其它简单的语言。
c++岗位需求不足,这个也不是一天两天的事情了。
以前国内主要写win桌面程序,现在桌面已经衰退了,手机为主,自然就是java和objc这些取而代之了。
服务器方面,java和动态语言占主流,没听说谁用c++写web的。
游戏之前c++,现在unity流行,都搞c#去了。
没多少人愿意研究c++了,毕竟岗位相比其他语言太少了。
这个问题透着一股邪乎味儿,怎么看怎么危险啊……
建议专业机构给予支援。