我对技术潮流的一些看法
主流技术很少会变化
我对技术和工具的看法是这样的,主流技术很少会变化,每年关注 TIOBE 的排行榜发现一个有趣的现象,头部的几个主流的技术栈基本是恒古不变的,并且会有一些细微的竞争,但是底部的其他语言变化是比较大的,经常有其他语言加入进来,也有其他语言排名下降出局。
这就非常类似我们看到的世界 500强的排名,
头部的公司永远是那几家,例如:微软、苹果、亚马逊、谷歌,Facebook 等
其他编程语言也遵循经济市场的运行规则,就是 马太效应,强者恒强。
越是流行的编程语言,会吸引开发者的使用,那么就有更多的开发者为他贡献工具库、文档、插件、开发工具等,丰富它的生态,因为生态的丰富,带来使用的方便,从而会吸引更多的新人,包括学校也会选择它作为教学语言,为它源源不断的贡献开发者的,这就是为什么说技术潮流是马太效应,强者恒强的本质。因为它的生态建立起来后是很难被替换的。
什么情况下会发生变化 ?
如果只是在同纬度竞争,那么主流的技术不太会出现很大的变化,例如:现在出了一个新的后端编程语言,性能比 Java 快,你觉得大家会换技术吗?很多人是不会换的,为什么 ?
因为仅仅是一些性能的优化,语法的优化,也很难让大家放弃现有的生态环境,例如 Go 现在就面临这种情况,性能很好,语法也很好,但是不可能替代 Java,因为它的生态是没办法超越 Java,他们只能在不同维度存在,避开竞争关系。
就是说如果你想要相同赛道去竞争超过巨头,基本是不可能,就算你能做出更好的搜索引擎,你也不可能替代 Google,你能做出更好用的手机,你也不可能替代苹果,类似案例,不胜枚举。。除非新的竞争者是从其他维度过来,进行的降维打击,例如特斯拉(新能源,航空领域),这就是为什么Go 为什么只能在 PaaS 层发挥自己的作用了。在相同赛道上应用层是很难和 Java 竞争的。想想当年的 Plan9 想要通过实现一个更好的操作系统来替换 UNIX 最终失败就是一个很好的例子。
就是现在有一家公司推出一台新手机,价格更便宜,性能比 iPhone 更快,但是因为它是新的系统,没有 App Store,所有软件需要重写和迁移,那么我相信只有小部分的人才敢于去使用,而且不会作为主力机(生产环境)来使用。但是你会说给他一些时间,他的生态会慢慢建立起来,例如 Go,但是不同的是,那些主流的技术他们不会等待,他们也在完善自己的生态,只有很低的概率会被超越。
技术迭代的三个必要条件
新的技术必须是要从三个维度全面的碾压,才有可能替代现在的流行技术方案:
- 近乎碾压的性能和效率, 例如苹果 M1 芯片的效率和功耗比,近乎碾压英特尔的芯片
- 差不多的生态:光有性能,几乎不可能让大家去迁移,在新的技术上必须要有几乎相同生态环境和工具使用,这也是为什么苹果花那么大力气开发 rosetta 2 的原因,就是为了把英特尔的生态迁移过来
- 大公司的长期支持和背书,这个就不多说了。例如 Go 语言背靠 Google ,M1 背靠苹果,Java 背靠 Oracle 等等
总结
所以基于以上的结论,我认为起码未来10年内不会出现全栈逆袭,主流技术也不会发生大的变化。人们总是说技术是多变的,但是变化的都是那些不成熟的技术,主流成熟的技术是很少变化的,例如:C/C++/Java/Javascript,从目前的行业趋势来看(TY,Java,Go,Rust),我愿意相信未来会是强类型,静态编译型的天下,性能什么的还好,代码的可读性对于团队协作真的太重要了。所以我的结论是,尽量选择主流的技术栈和遵循行业的选择,这样风险更小,而且在生态的加持在也会让你的应用更加的健壮。