历史性一幕!C++首次超越C,仅次榜首Python|TIOBE6月榜单发布

C语言与CPP编程 2024-06-22 09:00

击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号

干货福利,第一时间送达!

整理 | 郑丽媛

在本月的 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)

正如上文所说,如今的 C++ 已在嵌入式系统、游戏开发和金融交易软件等领域都有大量应用,而随着 C++ 语言的演变,也逐渐演化出相应的标准程序库,其中所引入的程序库中最重要的便是标准模板库(STL),这也几乎是每一位 C++ 程序员绕不开的课题。


EOF

你好,我是飞宇,本硕均于某中流985 CS就读,先后于百度搜索字节跳动电商以及携程等部门担任Linux C/C++后端研发工程师。

最近招聘季快到了,身边很多小伙伴都在摩拳擦掌、跃跃欲试,很多都打算看看新机会,这里推荐一个好朋友阿秀开发的互联网大厂面试真题解析网站支持按照行业、公司、岗位、科目、考察时间等查看面试真题,有意者欢迎体验。

如果你明天就要面试了,那我建议你今晚来刷一刷这个网站,说不定就能遇到你明天的面试原题,目前已经有不少人在面试中遇到原题了,具体可以看下链接:字节跳动后端研发岗面试考察题目Top10面试中局部性原理还真有用!

网址:https://top.interviewguide.cn/

同时,我也是知乎博主@韩飞宇,日常分享C/C++、计算机学习经验、工作体会,欢迎点击此处查看我以前的学习笔记&经验&分享的资源。

我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。

欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会

加个微信,打开另一扇窗

C语言与CPP编程 C语言/C++开发,C语言/C++基础知识,C语言/C++学习路线,C语言/C++进阶,数据结构;算法;python;计算机基础等
评论 (0)
  • 概述 SiPM测试系统的信号处理板使用了ADI的单片4通道的高速差分ADC信号,所以FPGA需要通过LVDS接口来收取差分高速ADC送出的差分串行数据。 本文讨论FPGA如何例化LVDS模块,以及几种用来收取外部ADC采样后送来的高速差分串行数据。10代器件LVDS实例化界面 在Intel的10代器件中有Arria、Cyclone、MAX以及Stratix几种,我们使用的是Cyclone系列10代GX产品。图1:LVDS模块例化界面 如图1所示为LVDS例化界面,具体使用方法可以参考1“LVDS
    coyoo 2024-07-14 12:25 88浏览
  •     这篇分享对PCB电化学迁移(ECM, Electrochemical Migration)的学习。     ECM发生在导体之间,是一种需要PCB通电才能持续的电化学反应,和电镀的原理相同。反应条件是:     1. 有电场。存在电位差/电压降,一般来说电位差/电压降越大,电化学反应的速度越快。     2. 有可溶性电解质和溶剂,这个和化学腐蚀机理相同。     3. 有迁移通道。即电荷
    电子知识打边炉 2024-07-14 17:40 28浏览
  •     PCB表面绝缘电阻(SIR, Surface Insulative Resistance)有IPC和Bellcore GR78-CORE两个主要标准。    IPC-TM-650 方法2.6.3.7 是针对SIR的。这个标准的英文版本可以免费从IPC官网下载获得。IPC(国际电子工业联接协会)是PCB标准化主要组织。    这个测试方法针对PCB裸板(即安装元器件之前的PCB),而且是使用IPC推荐的测试板/图案(Vehicle
    电子知识打边炉 2024-07-14 22:07 32浏览
  • UAVDT数据集是一个专为无人机图像检测而设计的数据集,其特点包括丰富的标注和多样化的场景,对无人机图像处理领域的研究具有重要的价值。 UAVDT(Unmanned Aerial Vehicle for Detection and Tracking)数据集是为了在无人机图像中进行目标检测和跟踪研究而创建的。这个数据集主要由从无人机捕获的高清视频序列组成,涵盖了各种环境和场景,如城市、乡村、森林和海边等。 在UAVDT数据集中,图像主要包括小型车辆、行人和自行车等类别的目标,这些目标在图像中被
    丙丁先生 2024-07-15 07:33 55浏览
  • 非常荣欣参加了这次《运放电路环路稳定性设计》试读体验活动,同时非常感谢面包板论坛举办此活动。本书印刷还是非常新颖,具有精美漫画。下图为图书正面。 本书利用“原理分析、仿真计算、样机测试”三步学习法对运放电路环路进行稳定性设计,使读者能够对已有电路彻底理解,并且通过计算和仿真分析对原有电路进行改进,以便设计出符合实际要求的运放电路,达到实际应用的目的。首先,进行简单运放电路分析,运用反馈控制理论和稳定性判定准则进行时域/频域计算和仿真,当计算结果和仿真结果致时再进行实际电路测试,使三者有机统一;
    shenwen2007_656583087 2024-07-13 12:53 15浏览
  •     丝印层(Silkscreen Layer)位于PCB的外表面,采用白色或者其他颜色的墨水(ink)制作,没有电气特性。    丝印层得名于制造它所用的Silkscreen工艺。这个工艺很像创作版画,或者给T恤上做装饰图:先在一个网板(stencil)上刻划出图案,然后用辊子涂刷墨水,让墨水透过网板附着在PCB上,然后用紫外线或者加热的方式使墨水固化。    丝印层主要起指示作用。丝印层上面的字符、指示线可以直观地告诉观察PCB的
    电子知识打边炉 2024-07-13 14:27 18浏览
  • ADB(Android Debug Bridge)是Google提供的命令行工具,用于帮助开发者与安卓设备进行通信。它在安卓应用开发和设备管理中非常重要,因为它可以帮助开发者安装、调试和卸载应用,访问设备文件系统,以及获取设备日志等。通过ADB,开发者能够在多种测试场景中模拟用户操作,优化应用性能和用户体验。 要使用ADB,首先需要确保电脑已安装ADB驱动,并且手机已开启USB调试模式。在Windows系统中,通常不需要手动下载ADB驱动,因为Windows 8/10/11已经自带了相应的驱动
    丙丁先生 2024-07-15 07:27 44浏览
  •   读报见文《中国的AI价格战和“不知道怎么用AI”的日本人 - FT中文网》  如题,好奇,中日两国对AI表现怎么是这样呢?  我人在中国,看新闻与现实,“中国的AI价格战”不足为奇。  没去过日本,只有看新闻,好奇的是日本人“不知道怎么用AI”?  第一想到的是日本不是很早就搞机器人了吗?  百度看看,日本什么时候开始使用机器人?  日本在20世纪80年代开始在各个领域推广使用机器人。日本将1980年称之为“机器人普及元年”。到了1985年以后,日本进入了被称为“智能机器人的时代”。  智能
    自做自受 2024-07-13 22:40 176浏览
  • 在+24V输入增加了软起电路和防反接电路,先看电路原理图,如下,防反接电路的原理一目了然,G极达到Vth值,U28和U5就会导通,电流从D极导通到S极,详细规格书见下面。VDS,RDS(on)和ID很重要,如下,之前选的这款为何还是有问题呢,可以从温度和电压电流的应力入手,考察U28的软起参数是否合理。首先,看一看之前测的温度参数,用K型线的热电偶点的,如下,充电的时候,U28温度达到了123℃,如下,放电的时候,U28温度达到了120℃,如下,从上面的数据看,这样的U28温度,我们是接收不了的
    liweicheng 2024-07-13 19:06 33浏览
  • “颠覆与涅槃,颠覆自我与重新涅槃,让企业在变革中更完美的蜕变。”这是小鹏汽车董事长兼CEO何小鹏,在2024年开年时候说的话。如今2024年已经过去了一半,小鹏汽车的处境,似乎并没有变得更好,反而是状况不断。据不完全统计,近一年来,从小鹏汽车离职的高管团队,并不在少数。从此前宣布加入英伟达的智驾负责人吴新宙,到后面的AI负责人刘兰个川(Patrick)、软件负责人Parixit Aghera,再到此次离职的矫青春,小鹏汽车近一年都处于内部动荡之中。而在这种动荡之外,小鹏汽车也正在经历一场“冰与火
    刘旷 2024-07-15 09:56 45浏览
  •     PCB上不同电气网络的连线之间,要有绝缘间隙(Clearance)和爬电距离(Creepage Distance)。画过PCB的朋友都知道,原理图上的电气连线(Wire)对应PCB Layout上的电气连线,PCB Layout上的电气连线对应铜导线。铜导线是在PCB覆铜层上,利用掩模(mask)和化学蚀刻(Etching)的方法,把PCB Layout上的铜导线部分留下,并去除非导线部分而做出来的。不同电气网络的连线中间要足够绝缘,足够干净,否则轻则漏电,重则短路。
    电子知识打边炉 2024-07-14 16:06 27浏览
  •     这篇分享对化学腐蚀/离子迁移的学习。    化学腐蚀的本质是氧化还原反应,即原电池。反应条件是:     1. 有可溶性电解质。电解质可能来自PCB的电镀或清洗工序,也可能来自残留的助焊剂(flux)。常见的有氯离子(有卤flux、汗液、盐雾)、酸(flux的酸);     2. 有溶剂。常见的是水(湿气),也可以是有机溶剂。树脂材料内部会吸附湿气,PCB加工过程有湿气,质量差的孔内壁会吸附湿气,V-cut分
    电子知识打边炉 2024-07-14 17:07 31浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦