打开网易新闻 查看精彩图片

整理 | 郑丽媛

在本月的 TIOBE 榜单中,出现了历史性一幕:C++ 史上首次超越 C,跃升至榜单第二,仅次于 Python——这是 C++ 在此榜单中的历史最高位,亦是 C 语言的历史最低位。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

根据本月榜单数据可以看出,C++ 和 Python 是唯二市场占比超过 10% 的编程语言,而 C++ 与 C 语言相差 0.8%。虽然差距看似不大,但从 C 语言近一年来持续下滑的占比趋势来看,此次 C++ 登上榜二或许并不意外。

打开网易新闻 查看精彩图片

C++ 的发展历程

自 C++ 诞生之初,它就被誉为更好的面向对象的 C 语言版本。想到这一点,TIOBE CEO Paul Jansen 感慨道:在诞生 39 年后,C++ 终于打败了 C 语言。

事实上,早期并没有“C++”这个名字,而是叫做 C with Classes,即”带类的 C“,出现背景是为了解决计算机性能飞速提高下,C 语言逐渐难以应对中大型软件的编写。

在 1979 年,C++ 之父 Bjarne Stroustrup 以 C 语言为背景,又以 Simula(具备利于大型软件开发的特点)思想为基础,到贝尔实验室开始从事把 C 语言改良为 C with Classes 的工作,并将其用于自己的 Unix 内核开发工作中。当时的 C with Classes,还只是作为 C 语言的一个扩展和补充,目的是提高开发效率。

到了 1983年,C with Classes 正式改名为 C++,并加入了新的特性,包括虚函数、函数名和运算符重载、参考、常量、改良的类型检查等等。整体来说,C++ 主要是在 C 语言的基础上增加了面向对象和泛型的机制,提高了开发效率,以适用于大中型软件的编写。

纵观 C++ 的发展历程,大致可分为三个阶段:

(1)第一阶段从 1979 年到 1995 年。这个阶段的 C++,基本上是传统类型上的面向对象语言,凭借着接近 C 语言的效率逐渐为人所知,慢慢应用到工业界中,并在工业界占据了相当大的份额。

(2)第二阶段从 1995 年到 2000 年。这一阶段的 C++ 新增了标准模板库和 Boost 等程序库,于是泛型程序设计在 C++ 中占据了越来越多的比重。不过 Java、C# 等语言出现和硬件价格的大规模下降,导致 C++ 受到了一定冲击,但仍有着广泛应用。

值得一提的是,由于这时 C++ 还没有统一标准,各个编译器都有自己的不同实现,因此 ANSI(美国国家标准学会)在 1989 年成立了 C++ 标准委员会以建立 C++ 标准,并在 1998 年推出了 C++98 标准——这是 C++ 的第一个官方标准,让不同编译器和平台之间的差异得以统一,由此提高了代码的可移植性和稳定性。

(3)第三阶段便是从 2000 年至今。得益于 Loki、MPL(Boost)等程序库为代表的产生式编程和模板元编程,C++ 的发展达到了一个新高峰。这些新技术和原有技术的融合,使得 C++ 成为当今主流程序设计语言中最复杂的一员。

对于本月 C++ 跃升至第二,TIOBE CEO Paul Jansen 提到:自 2011 年以来,C++ 就展开了新生,每三年更新一次。“虽然大多数编译器和工程师都无法跟上这一步伐,但能看到这种语言不断发展,也算是一种成功。”

如今,C++ 作为一种被广泛使用的编程语言,在嵌入式系统、游戏开发和金融交易软件等领域都有大量应用。它支持多重编程范式,包括过程化程序设计、面向对象程序设计、泛型程序设计和函数式程序设计等。

Go 和 Rust 也刷新自身纪录

除了 C++ 首度超越 C 语言,本月榜单中还有 2 个编程语言也达到了名次新高:Go 首次排名第 7,第 17 位的 Rust 也刷新了自身历史新高。

  • 曾在 2015 年掉到百名开外(第 122 名)的 Go 语言,自开始严格遵循每半年一次的发布周期,以及由 Go 编写的 Docker 和 Kubernetes 变得流行后,如今它已被用于许多软件领域,如后端编程、网络服务和 API 等。自今年 2 月首次进入 Top10 后,Go 一直稳定在前十。

  • 得益于 Rust 在系统编程领域的出色表现,近年来它被越来越多的开发者关注和支持。作为一种静态强类型的编程语言,Rust 最大的特点便是解决了其他语言所面临的冗长编程和内存管理问题。不仅能保证高性能,还能降低内存泄漏和安全漏洞的风险,Rust 的这些特点使它成为开发需要高可靠性和高性能的系统应用程序时的最优选之一。

打开网易新闻 查看精彩图片

此外,附上 Top 10 编程语言 TIOBE 指数走势(2002-2024):

打开网易新闻 查看精彩图片

TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于全球技术工程师、课程和第三方供应商的数量,其中包括了流行的搜索引擎以及技术社区,如 Google、百度、维基百科、必应等等。具体的计算方式详见:https://www.tiobe.com/tiobe-index/programming-languages-definition/。请注意这个排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。

这个排行榜可以用来考察你的编程技能是否与时俱进,也可以在开发新系统时作为一个语言选择依据。