降生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