在本月的 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++ 作为一种被广泛使用的编程语言,在嵌入式系统、游戏开发和金融交易软件等领域都有大量应用。它支持多重编程范式,包括过程化程序设计、面向对象程序设计、泛型程序设计和函数式程序设计等。
最后,附上 Top 10 编程语言 TIOBE 指数走势(2002-2024):
最后说回 C++。正如上文所说,如今的 C++ 已在嵌入式系统、游戏开发和金融交易软件等领域都有大量应用,而随着 C++ 语言的演变,也逐渐演化出相应的标准程序库,其中所引入的程序库中最重要的便是标准模板库(STL),这也几乎是每一位 C++ 程序员绕不开的课题。