自从AI统治了世界,编成语言宝座一直由Python占据,但近几年编程语言热度排名变化,让我感到有些奇怪。 在TIOBE中23年不出意外C#成为年度语言,22年年度语言C++,Java跌出前三,24年很可能被C#反超,Rust进入前20。

同时这几年新一代语言层出不穷,Mojo在AI领域挑战python,名不见经传的zig语言写出个Bun准备在js领域掀起浪花,Rust对C++发起冲击多年。不禁在想老一代语言除了生态的保护,还有什么能应对新一代语言的挑战。

C++98,03是C++的黄金时代,后来随着Java,C#成长发展,C++领域逐渐萎缩。处境一度变得十分尴尬,在企业级市场Java解决了内存管理问题变得流行,在嵌入式领域C语言有简单性和性能上的优势,还剩下游戏领域的引擎部分还是C++一家独大。

当时C++遇到的问题:

  • 复杂性,太过于复杂导致编码的认知复杂度太高,C++是一把屠龙宝刀,威力太大,用好他需要专业程序员,多年的沉淀,特别10倍程序员,市场上这类人才太少,中国企业大多急功近利不愿培养。
  • 内存泄漏,内存安全问题突出。在复杂业务逻辑下,遗漏内存释放,程序长时间运行后崩溃,定位这类问题难度很大。
  • 标准库不完善,三方库种类繁多,不像Java的Spring全家桶,不同的程序,用不同的三方库,维护困难。你想象一下几十年的语言还没有统一的并发库就知道了。所以像腾讯这类使用C++为主都需要自建所有的基础库。

但为什么近几年C++热度突然上升,我想可能是因为:

  • AI火热,Python虽然是AI领域使用最广泛的语言,但一般用于模型训练这类,但AI的核心机器学习框架就只有C++能胜任了
  • C++自从03后加速发展,在进一步提升复杂度上一去不回,随后加入线程,协程,所有权,模块化等等等等,和Go语言设计理念完全相反
  • 硬件摩尔定律失效,3nm技术再往下继续发展,投入成本和时间都急剧攀升,CPU单核频率提升到达瓶颈,市场又开始关注怎么充分利用有限的硬件资源

网上有人说C++03是“经典C++(classic)”,C++11开始是“现代C++(modern)”,那么C++吸取了哪些有意思的东西,准备折腾一番