@
mmqc 兄弟,你理解的略有偏颇。首先你理解的没错,一个新技术出来,慢慢的会走向成熟,也就会出现大量稳定的基础库和特性。但 c++位置发生迁移的原因比较复杂。
比如:
1,现在硬件性能越来越快,网络越来越快,大家在某些场景下对性能方面的考虑不再成为首位,而是退位到第二、第三等。所以也就给了一些原本天生执行性能不是太好的其他语言有了发展的机会。
2,c/c++流派太多,发展的太复杂;导致能写好代码的人少,烂代码制造者占大多数。首先 c/c++中的数组、指针其实就够很多人提一壶,更不用说其他和数据结构有关的特性。人都是趋利的,没有利的事情大家一般不会去做的,自然对于提高自己工作技能的事情,有些人基本不做,有些人低效在做,加之语言本身特性复杂,还涉及一些底层的东西。就容易导致开发出来的东西质量差,难维护,不好用等等。这也是很多 c++程序员内部战争的主要焦点,当然也有很多教条主义者的奉行。
3,开发周期长。c/c++没有比较健全的公共库,其公共库还停留在好几十年前。即便是 stl、boost 也于事无补,因为 stl 实现版本太多,有些实现源代码可阅读性奇差无比。boost 大量套用模板和一些层层包装,也让整体变得极其复杂。平台间差异性对用户不透明,所以就导致了很多平台分化的程序员;这种情况在 java、python 等语言是很难见到的。
4,钱。人为财死,鸟为食亡。c++有很多好处,但对捞快钱,捞热钱,稍微“懒惰”的人来说,是极其不友好的。所以。。。你懂的。
5,扛大旗带的节奏影响,这样说是因为不知道怎么表达比较合适。人类社会有史以来都有一个有趣的现象,聚光灯下的个体或集体比较容易影响更大团体的走向。就像很多年前某 A 公司开始推行 java,然后 java 在国内从差点要死到突然井喷一样( java 以前一直是 IBM 推行);知道现在某 G 公司搞了 go,出现就连 java 也有少许地位和 c/c++一样被 go 蚕食。
所以不好说某个语言的好坏,有时候也要看看是不是有带节奏的。毕竟市场突然出现一堆 c++、java 或者 go 的程序员在找工作时,总会出现一些比较厉害的人,没有就业岗位自己创造就业岗位的情况嘛。
6,施乐智程序员,不想报粗口,只能这么说。不但是程序员,做技术的,总有一些人稍微了解点技术就忘乎所以,这也是所有技术人,不区分国界,不区分语言和技术的一个共同特点。具体表现有很多,比如一行代码拯救世界,比如我的技术我最牛,比如这个技术就是这样实现的等等(其实是某种本位主义)。都说精神病人思路多,问题儿童欢乐多。但这个问题在复杂的 c++上,也加快了 c++地位的迁移。
c++这个岗位是一个围城,需求占总体开发人员中不算很大(因为还有 c、java 等),但需求都是很刁装的。兄弟且行且珍惜。