优秀!19年后,它再次成为TIOBE年度编程语言

news2024/12/22 11:57:09

新年伊始,TIOBE发布了2022年度编程语言,C++时隔19年再度登顶,成为2022年最受欢迎的编程语言。TIOBE在2003年首次统计编程语言的流行指数时,C++便成为年度编程语言。2022年,C++获得了最高的人气+4.62%,紧随其后的是 C (+3.82%) 和 Python (+2.78%)。

在最近的20年里,编程语言风云变幻,但C++的变现非常稳定,份额始终名列前五,C++作为一种高级面向对象语言,可以开发快速而庞大的软件系统,且性能极其出色,使得其经常成为开发者的首要选择。

这款将近40岁的编程语言,为何能如此坚挺,且再次崛起呢?

1970年,贝尔实验室研究员丹尼斯·里奇和肯·汤普森闲来无事,因为都喜欢玩一款Space Travel的电子游戏,一拍即合,决定自己开发,于是开始合作编写UNIX系统,并且顺手改进了一下B语言,两年后,它被正式命名为C语言。

歪打正着,C语言作为UNIX的“副产品”,迅速成为应用最广泛的系统程序设计语言。但C语言也存在一些缺陷,类型检查机制相对较弱、缺少支持代码重用的语言结构,造成用C语言开发大型应用程序比较困难。

1979年,丹麦计算机科学家本贾尼·斯特劳斯特卢开始改进C语言,以C语言为基础,借鉴了Simula的思想,增加了数据封装、继承、多态等面向对象的编程特性,又增加了模板等面向泛型编程的特性,提高了开发效率,加强了对大中型软件的适用性。

在1983年,C++正式发布,并在当年通过了ANSI标准化,从而成为一种正式的编程语言。随后,C++不断发展,向后发布了C++98、C++03、C++11、C++14、C++17、C++20。

C++在编程语言领域一直保持活跃,一个很重要的原因是它的“学习能力”,不断地吸收和引入其他编程语言的优秀特性来完善自己,不断发布各种特性的新语言标准。

比如最新发布C++20标准,提供了模板元编程、类型推导、范围for语句、运算符重载等许多新特性,参考了Rust的安全特性和Swift的简洁语法,提供了更为强大和现代化的功能。C++ 社区也不断推出新的编译器和工具,如 Clang/LLVM 与 GCC, 这使得C++能够更好的支持新的架构和平台。

C++作为一种面向对象的编程语言,有很多优点,拥有面向对象编程、泛型编程和模板编程等强大特性,能够支持高性能计算和嵌入式系统开发,并支持跨平台开发。与Java、Python等语言相比,C++是运行在离操作系统最近的一种高级语言,可以直面系统底层API,SDK,跟C兼容,因此它的执行效率非常高。


它的缺点在于学习曲线较高,对于新手来说可能会有些棘手,特别是在内存管理方面,有时会引发难以调试的问题, C++的错误也可能很难排查。另外, C++在代码可读性和可维护性方面还有待提升,但这也取决于开发者的风格和编码规范。


C++为开发者提供了非常丰富和灵活的特性和工具,能够适应各种应用场景和需求。例如游戏引擎领域,很多主流游戏引擎,如Unreal Engine、CryEngine和id Tech等,都是用C++开发的。这些引擎能够为游戏开发者提供丰富的功能和工具,并在游戏性能方面表现优异。

操作系统领域,很多操作系统的核心部分,如Windows、Linux和macOS等,都是用C++开发的。这些操作系统能够提供稳定和高效的运行环境,并能够支持各种应用程序。

软件工具领域,很多成功的软件工具,如Adobe Photoshop、AutoCAD和Microsoft Visual Studio等,还有我们熟悉的QQ、各种杀毒软件、股票软件、浏览器都是用C++开发的。这些工具能够提供丰富和强大的功能,并能够满足各种专业领域的需求。

还有高性能计算和嵌入式系统,很多科学和工程领域的应用程序,如气象模拟、结构分析和分子动力学等,都是用C++开发的。这些程序能够提供高效和准确的计算能力,并能够处理大量复杂的数据。C++在嵌入式系统领域中也得到广泛应用,如智能家居、工业控制、智能交通系统等。

马上迎来40岁的C++,在编程届的地位仍然举足轻重。尽管随着其他语言的出现和发展,它的地位可能会受到挑战,但是它的高效性和灵活性使得它仍然有着很强的竞争力。在未来,C++可能会越来越重

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

maven打包顺序与jvm类加载顺序

背景:一次dev测试过程中,发现代码中关于jsr303的校验失效,校验类如下,会报一个莫名其妙的运行时错误;遂进行排查。import javax.validation.constraints.NotBlank;Data Accessors(chain true) public class Demo {Not…

为什么会有跨域问题,代理是怎么解决的?

📖 文章导航关于跨域问题同源策略跨域资源共享解决方案前端代理后端服务端代理关于跨域问题 同源策略 同源策略(Same-origin policy)是浏览器中一个重要的安全策略,它用于限制不同源之间的资源交互。其目的是为了帮助阻隔恶意文…

由浅入深,一起来刷Java高级开发岗面试指南,面试必定无忧!

前言 我只想面个CV工程师,面试官偏偏让我挑战造火箭工程师,加上今年这个情况更是前后两男,但再难苟且的生活还要继续,饭碗还是要继续找的。在最近的面试中我一直在总结,每次面试回来也都会复盘,下面是我根…

Dubbo之SpringBoot启动源码详解

需要前置知识,了解spring源码,springboot自动加载机制等 DubboBootstrap启动 详细信息可看 学习Dubbo源码需要了解的基础内容源码详解 DubboBootstrap 启动所需要的信息 添加应用程序配置添加注册中心配置添加协议配置添加服务配置启动 SpringBoot启…

广东MES系统实施过程中的要点和难点

MES系统已经成为企业目前实施的焦点。但是MES系统又分为很多的种类,对企业之间则是很难选择的,因为大部分的企业对MES系统的要点和难点并不清楚,而今天就让先达盈致的小编带大家了解一下广东MES系统实施过程中的要点和难点。MES系统是实现企业…

戴尔T5810电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。硬件型号驱动情况主板戴尔T5810,C610/612芯片处理器英特尔至强E5-2620 v3已驱动内存12 GB已驱动硬盘500GB WD Blue Solid State Drive & 2TB Seagate Mobile Hard Drive (Upgraded)已驱动显卡RX 570 4Gb已驱…

october-cms

环境准备 靶机链接:百度网盘 请输入提取码 提取码:3e4s 虚拟机网络链接模式:桥接模式 攻击机系统:kali linux 2021.1 信息收集 1.探测目标靶机ip。 2.探测靶机开放端口和服务情况。 漏洞探测 1.访问网页 2.用dirsearch扫描…

用javascript分类刷leetcode15.链表(图文视频讲解)

链表操作如下图: 动画过大,点击查看 时间复杂度: prepend: O(1)append: 如果已知尾节点O(1),否则需要遍历到尾节点,然后加入新节点O(n)insert: 插入到已知节点的后面O(1),需要先查找后插入O(n)lookup: O…

【STM32笔记】__WFI();进入不了休眠的可能原因

【STM32笔记】__WFI();进入不了休眠的可能原因 【STM32笔记】低功耗模式配置及避坑汇总 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案)…

Outlook邮箱注册教程 不信你看完还不懂

Outlook作为Microsoft Office家族的办公软件套装之一,关联着很多微软的其他产品。而且Outlook是欧美地区认可度比较高的,不仅可以用于一些境外联络还可以拿来注册Instagram、Twitter、Facebook等各种社交媒体平台。龙哥在这里就给大家出一份详细的Outloo…

Python打包调试问题解决

使用pyinstaller打包,发现问题:代码运行时调试的结果不一致代码中设定的图标打包后没有显示出来打包代码程序test.py为入口函数main()所在的文件pyinstaller -F -w -i test.ico test.py 不会出现控制台,图标为test.ic…

电源大事,阻抗二字

作者:一博科技高速先生成员 姜杰PCB设计时,我们通常会控制走线的特征阻抗;电源设计时,又会关注电源分配系统(PDN)的交流阻抗,虽然都是阻抗,一个是信号的通道要求,一个是电…

电子标签拣货系统——外接供电版

Power_DC24v 型号:Power_DC24v24V电源适配器级联线:长30cm直径:15mmCK_Wire_V1 型号:CK_Wire_V1连接电源适配器级联线:长30cm公线:长宽厚 14*11*9mm母线:长宽厚 13*5.5*3mmCK_Wire_V2 型号&…

安卓玩机搞机-----没有第三方包 刷写第三方各种GSI系统 体验非官方系统

很多安卓友友热衷与刷这些各种第三方包体验。但有个别机型第三方资源较少。而且有的机型要体验非官方系统却没有对应系统的第三方包。那可以体验下刷gsi系统来畅玩。今天的帖子就聊聊GSI系统的各种刷写操作和对应的故障解析、 💔💔💔&#x…

spring cloud(二)----------------Eureka注册中心环境搭建

一、首先创建一个没有架骨的maven主项目 点击下一步创建 创建完成后在maven主项目下删除src并且创建四个maven副项目分别叫: demospringcloud-api--------连接实例 demospringcloud-cosumer---------消费类 demospringcloud-eureka---------注册类 demospringc…

机器学习:基于支持向量机(SVM)进行人脸识别预测

机器学习:基于支持向量机(SVM)进行人脸识别预测 文章目录机器学习:基于支持向量机(SVM)进行人脸识别预测一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.准备数据2.业务理解3.数据理解4.数…

java3月train笔记

java笔记 day01 一、jdk和idea下载及安装(一般不建议装C盘): jdk:java开发环境 idea:开发工具(软件),用来编写代码的 苍老师文档服务器:doc.canglaoshi.org jdk下载&…

JavaEE|网络编程之套接字 TCP

文章目录一、ServerSocket API构造方法常用方法二、Socket API构造方法常用方法注意事项三、TCP中的长短连接E1:一发一收(短连接)E2:请求响应(短连接)E3:多线程下的TCP回响服务器说明:这部分说实话有点懵&a…

SrpingBoot拦截器

一、拦截器原理 根据当前请求,进入到 HandlerExecutionChain(可以处理请求的 handler 以及 handler 的所有拦截器)根据顺序执行所有拦截器的 preHandle() 方法如果当前拦截器的 preHandler() 方法返回 true,则执行下一个拦截器的 preHandler() 方法如果当…

Java常用框架(一)

思维导图 常见知识点 一、SpringBoot 1.简单介绍一下Spring及其优缺点 1.1 概念 重量级企业开发框架EJB的替代品,通过依赖注入、面向切面编程,使用简单Java对象POJO为企业Java开发提供了相对简单的方法。 1.2 优缺点 1.2.1 优点 组件代码轻量级 …