C++历史上首次超越C

虎嗅APP2024-06-11 07:10:47  85

诞生39年,终于超过C

C++在TIOBE索引中最新排名提升到第二名。省流版排名如下:

Python排名第一:占比15.39%,本月上升2.93%;

C++排名第二:占比10.03%,本月下跌1.33%;

C排名第三:占比9.23%,本月下跌3.14%;

Java排名第四:占比8.40%,本月下跌2.88%;

C#排名第五:占比6.65%,本月下跌0.06%;

Go从第十四上升至第七:占比1.93%,本月上升0.93%;

Rust从第二十上升至第十七:占比1.17%,本月上升0.26%。

在C++诞生之初,便被誉为更好的面向对象的C版本,早在去年就有程序员称,“C++即将超越C”,但直至今日,也就是C++诞生后39年后才真正击败了C。由于C语言下降更为严重,反而导致了C++超越C语言,首度登上TIOBE排行榜排名第二的位置。

C++主要优点在于其性能和可扩展性。从2011年起,C++开启了新生,每三年发布一次重大更新。尽管大多数编译器和大多数工程师都无法跟上这一步伐,但看到语言的发展被认为是一种成功。

不过,C++也存在缺点,它的风格特征丰富,由于历史悠久,C++的目标一直是向后兼容。仅举几个领域的例子,C++在嵌入式系统、游戏开发和金融交易软件中大量使用。

另据2024年6月PYPL编程指数来看,Python依然一骑绝尘,R、Dart、VBA、Abaq、Perl、Haskell的占比都有一定提升。

“有对象”的C++,还在进化

要说C和C++有什么区别,可能有人说就是“有对象”(面向对象)和“没对象”(面向过程)的区别。

从C++98到C++17到C++23再到C++26,C++有大的颠覆,也有为未来布局的核心语言特性。

C++标准遵循3年开发周期,并以发布年份命名。在临发布的一年前,C++会进入“功能冻结期”(featurefreeze),即版本开发进入半稳定状态,不再添加重大功能及特性,着重于修复各种BUG。

也就说,直到2025年初,C++23都会加入新功能。

简单回顾一下C++标准的进程,其中C++98、C++11、C++20属于比较有颠覆性的标准:

C++98:20世纪80年代末,BjarneStroustrup和MargaretA.Ellis合著了“AnnotatedC++ReferenceManual”(注释版C++参考手册,简称ARM)。这本书定义了C++的功能,同时也是第一个C++标准C++98(ISO/IEC14882)的基础。C++98有几个关键特性:模板、包含容器和算法的标准模板库(STL)、字符串和IO流;

C++03:得到了一项微小的技术修正,TechnicalReport1(简称TR1)推出,是由C++标准化委员会成员建立的boost项目,在社区中,包括C++98在内的C++03被称为传统C++;

C++11:被称为现代C++,许多特性从根本上改变了C++的编程方式。如,C++11引入了TR1组件,还有移动语义、完美转发、可变模板或constexpr等特性。使用C++11,还获得了内存模型作为基础的线程模型以及线程API;

C++14:更像C++11标准基础上的查漏补缺,引入了读写锁、泛化的lambdas和泛化的constexpr函数;

C++17:有两个突出的特性:并行的STL和标准化的文件系统。大约80个STL算法可使用执行策略执行。boost对C++17也产生了重大的影响,从boost中获得了文件系统以及3种新的数据类型:std::optional、std::variant和std::any;

C++20:这一代革新程度不亚于C++11,包括四个重要特性:Ranges(范围库),Coroutines(协程),Concepts(概念)以及Modules(模块);

C++23:已经完成,并进入了最终投票阶段,C++23更像延续的一代。它提供了一种小巧但影响深远的核心语言特性——this的推导,类似于Python,在成员函数定义中明确地传递隐式传递的this指针。同时,C++23库还将新增很多有意思的特性。这个版本,开发者褒贬不一,有人认为它比Python差远了,有人则愿意给C++23一个机会,现在C++有了模块、概念等新特性,他开始考虑C++23是否值得用于新项目。

现在,大家现在都在向C++20和C++23靠拢,不过有57%的C++98/03用户不打算转移到其它C++标准。此外,值得一提的是,目前,已经有37%的嵌入式开发者和39%的游戏开发者已经开始使用C++20了。

今年C++23的使用率应该会有很大提升,因为最新语言发布后一年使用率都会急速上升:C++17在2017年以12%的使用率开始,2018年达到18%;C++20在2020年以12%的使用率开始,2021年达到18%;C++23在2023年以10%的使用率开始,今年有望冲击16%的使用率。

嵌入式,该用C++吗?

都说C++太难了,那么,在嵌入式界,C++到底好用不好用,实际情况如何?

在嵌入式Linux领域,C++非常好用。就比如说,5千行代码的GuiLite就是由C++编写,而用C实现,至少需要几万行才能实现相同的效果。同时虽然用函数指针可以实现C++的所有特性,但会大大降低代码的可读性。可以说,在嵌入式Linux领域,C++绝对是应用层主力之一。

而在单片机领域,之所以C++不太流行,是因为之前主流flash容量在64KB~256KB左右,容量限制导致泛型编程和STL等很难运用在开发中,很明显C++更显得笨重。而且,也没有迫切需求从C换成C++,毕竟应用层更重要的是业务,语言特性太多反而容易让业务逻辑变得混乱。

现实情况就是,C++本身难,但在嵌入式应用或工业界中也没使用特别难的语言特性,不过嵌入式人才本来就少,能用C++且不出幺蛾子的更少了。

在工业界,C++大多数情况只使用STL封装的vector,map以及算法等方便开发,封装些模板函数或者类帮助复用,而非移动语义、模板偏特化、lambda,、模板元编程等知识,或是各种语法组合出来的奇技淫巧。

总之,归结起来,也有另外一层原因,难度不是问题,需求和薪水才是最主要问题。

参考文献

[1]EEWorld论坛:https://bbs.eeworld.com.cn/thread-1284425-1-1.html

[2]EEWorld论坛:https://bbs.eeworld.com.cn/thread-1284385-1-1.html

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/706082.html
0
随机主题
奢华无界 劳斯莱斯Black Badge库里南系列II诠释当代颠覆精神三大消息:中方罕见打破沉默!“逮捕以总理”突响;美国紧急发声她长得漂亮、演技好, 清华教授等她9年才结婚, 每月给10万零花钱重庆开州区: 文峰街道开展“护苗· 绿书签”文艺演出活动平安警色丨江苏常熟公安: 多措并举护校安园, 织密未成年人保护网快递站里、电视里、超市小票里都能见到, 为了这件事, 杭州桐庐消防拼了独行侠西决开门红!东欧组合轰下63分,唐斯低迷,爱德华兹准三双中场进攻 底线分点能力都有提升继续加油拒绝续约+索要意甲顶薪! 国米头牌翻脸, 或遭甩卖, 新老板不惯着当“茉莉花”遇上“红莓花” 中俄文化交流创新不断五款车选谁毛病少? 星瑞、思域、凌度、艾瑞泽8、朗逸故障率横比美西方抢钱, 俄斗到底, 反制裁开始, 普京没收德最大银行在俄资产斗罗大陆: 92%神性, 唐三成为封号斗罗, 99级以下没人能将他打败“谁还不喜欢会炸毛的车呢?”通胀数据不及预期,英国降息的可能性正在逐渐消失中国警告不到24小时, 菲推出替罪羊, 正中我们下怀, 菲走向死路梅西检阅防线的背后,敏锐的洞察让针对防守形同虚设。联手恩比德? 76人追逐乔治, 东决G1报告出炉, 肖华签下70亿大合同加斯佩里尼, 66岁老帅的逆袭不努力怎么能见??箭最佳阵出炉后,小伙要拿7000万年薪,老詹创4个神迹,浓眉是唯一
最新回复(2)