今年上半年,IBM 研究院发布了一个名为 CodeNet 的数据集,该数据集包含 1400 万个代码样本,共有用 55 种编程语言编写的 5 亿行代码,用于训练面向编程任务的机器学习模型。
不过令人意想不到的是,Python竟然不是样本中使用最多的语言,仅屈居第二,C++荣登榜首。
为何C++荣登榜首
Python近些年的火爆程度毋庸置疑,但为何不是榜首,其实从Python近十几年的热度走势就可知晓。
从图中不难发现,直至2018年Python才开始呈现一个逐步上升趋势,而这些代码样本是从提交给在线编程平台 AIZU 和 AtCoder 上的近 4,000 项挑战的提交中提取,可能存在Python未广泛使用的情况。
另外一方面C++一直以来也十分受欢迎,即使是在Python逐渐火爆的情况下,几乎每年在 TIOBE 编程语言排行榜中,且一直保持在该榜单的前五名,其影响力也可见一斑。
C++的由来
提起C++就不得不先说一说C语言,C语言是于1972年由美国贝尔实验室的丹尼斯·里奇(Dennis Ritchie)在B语言的基础上最终设计出的一种新语言。而C++正是以C语言为根基,并也诞生于美国贝尔实验室,由Stroustrup所设计。
起初本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)发现 Simula 具备很利于大型软件开发的特点,但 Simula 的运行速度太慢,无法对现实需求发挥功效;BCPL 虽快得多,但它过于低级的特性,使其不适于大型软件的开发。为此他选择了能够适用各种用途,具有快速、可移植性的C语言,并为它增强一些类似Simula的特点,来解决这一问题。至此C++可谓已经初具雏形,不过此时它叫作C with Classes。
直至1983年,C with Classes才改名为我们熟悉的C++,并加入了新的特性,其中包括虚函数、函数名和运算符重载、参考、常数、用户可控制的自由空间存储区控制、改良的类型检查,以及新的双斜线(//)单行注解风格,C++此后开始大展拳脚。
C++为何经久不衰
相较于“90后”(20世纪90年诞生)的Python,C++这一位“80后”,虽更为年长,但丝毫不影响其发光发热。
究其原因:其一,苗正根红。除了C++外,Java和C#等也是以C为基础相继诞生,并在各自领域大获成功;其二,紧跟时代,不断优化。C++从设计之初,已有近40个年头。C++从最初的C with class,经历了从C++ 98、C++ 03、C++ 11、C++ 14、C++ 17再到2020年的C++ 2a(又叫C++ 20)的多次标准化改造,功能得到了极大的丰富,已经演变为一门集面向过程、面向对象、函数式、泛型和元编程等多种编程范式的复杂编程语言。
正因如此,造就C++一个最重要特性,即某些领域具有不可替代的作用。如:驱动是要用 C++、启动代码是要用 C++、就连 Android 的底层也和 C++ 脱不了关系。虽然 C++ 在很多大型应用中,无法施展拳脚;但在不少领域,它却如同巨人一般又是不可或缺的顶梁柱。