C++正在失去人气吗?

待兔
• 阅读 292

C++,这种在二十世纪晚期曾大放异彩的语言,曾一度站在技术发展的最前沿,尤其是在太空探索领域。然而,随着更新颖、更具视觉吸引力的编程语言的出现,C++的关注度已经逐渐降低。

在2024年的AI+数据峰会上,研究员Yejin Choi表示,研究人员已经不再使用这种语言进行AI研究。那么,C++是否正在成为过去的遗迹呢?

1.AI领域并不青睐C++ 尽管C++在性能上具有优势,并在语音识别和计算机视觉等多个AI领域有所应用,但它并不是AI开发的首选语言。其复杂性和陡峭的学习曲线构成了巨大的挑战。相比之下,Python因其友好的用户界面、丰富的库和庞大的开发者社区而跃居AI编程的前沿。

此外,C++涉及手动内存管理,如果操作不当,可能会导致内存泄漏和错误。这在大型AI项目中可能成为一个重大问题。微软在公布过去12年中的更新情况时强调,由于Windows主要用C和C++编写,其中70%的更新都是为了解决内存安全漏洞。谷歌Chrome团队也发布了自己的研究,揭示了内存管理和安全漏洞占Chrome代码库中所有主要安全漏洞的70%,而Chrome主要用C++编写。

C++还缺乏垃圾回收、数据库访问和线程处理等内置支持,这些都需要额外努力进行开发。

在需要并发处理数据和任务的AI应用中,如深度学习、神经网络、实时系统、嵌入式系统、数据处理和数据科学等,这可能会特别具有挑战性。为了克服这些限制,开发者通常会使用提供线程支持的第三方库和框架,如OpenMP或Boost。然而,这些库可能会给代码增加复杂性和开销,这可能只适用于某些应用。

2.C++很复杂 如果你访问过类似C++常见问题解答(FAQ)的页面,你就会明白C++有多难。在早期的语言版本中,一个逗号放错位置可能会引发数百个编译错误。尽管自C++11以来,该语言通过移动语义(用于转移所有权)和右值引用来进行了改进,但学习曲线仍然很高。

3.开发新应用 近年来,我们见证了各种编程语言的发展,这些语言有可能取代C++用于低级系统任务,比如Rust,它通过消除缓冲区溢出和内存泄漏提供了安全性和稳定性(并且比C++更容易学习)。

当你比较像C++、Python和Rust这样的现代语言的功能集时,C语言开始看起来就像恐龙一样古老!自2011年以来,C标准就没有引入过新功能!2017年的标准版本主要包含技术更正和澄清,而2023年的标准版本也没有带来什么重大变革。

4.C++正在失去人气吗? 微软Azure的首席技术官Mark Russinovich表示,开发者应该停止使用C和C++这两种编程语言编写代码,并且业界应该将这些计算机语言视为“已弃用”。

Bell Labs研究员、原Unix操作系统设计师Ken Thompson称C++是“糟糕的语言”,它“太大、太复杂”,而且“显然是由一个委员会构建的”。

GitHub编制了一份机器学习领域最受欢迎的十大编程语言列表。Python是机器学习存储库中最流行的语言,而C++排在第六位。

根据Stack Overflow的开发者调查,相比C++,刚开始编写代码的初学者更可能选择Python。

尽管C++在速度和内存管理方面具有优势,但它也有劣势,如学习曲线陡峭且社区支持较少。尽管如此,对于需要高性能处理和高级内存管理的机器学习应用来说,C++仍然是一个强大的选择。机器学习中选择C++还是Python最终取决于应用的特定需求以及开发者的技能水平。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
Java中的native关键字
一. 什么是NativeMethod  简单地讲,一个NativeMethod就是一个java调用非java代码的接口。一个NativeMethod是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern"C"告知C++编译器去
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
2年前
Python服务器开发一:python基础
Python(蟒蛇)是一种动态解释型的编程语言。Python可以在Windows、UNIX、MAC等多种操作系统上使用,也可以在Java、.NET开发平台上使用。【特点】1Python使用C语言开发,但是Python不再有C语言中的指针等复杂的数据类型。2Python具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、
Stella981 Stella981
2年前
Duang,HUAWEI DevEco IDE全面升级啦
想感受全新UI带来的视觉及交互体验、HiKey970开发板调测、HiAIAPI推荐和收藏、深度AI模型分析等新功能,体验高清晰度和流畅度的远程AI真机调测吗?!(https://oscimg.oschina.net/oscnet/f4e1bb24ff00b8c6ea27f75370a53bfbacd.jpg)全新的UI设计
Wesley13 Wesley13
2年前
C 语言时隔 5 年重回巅峰,这 20 个热门项目拿去练手!
在上个月的TIOBE编程语言排名中,C语言和Java的差距只有0.01%。在近日TIOBE公布的2020年5月编程语言排行榜中,C语言成功超越了Java,重返第一的王者宝座!!(https://pic1.zhimg.com/v2b0ebb8d95506c0a43900550b0ccc2074_b.jpg)编程语言5
Stella981 Stella981
2年前
Linux Foundation APAC 首批开源布道者官方发布会,诚邀您共同见证!
!(https://oscimg.oschina.net/oscnet/7446fe70dbb24c0aa8ca7e307158412c.png)开源已经被证明是一种高效的创新模式和可行的商业模式,开源运动兴起的10年,正是人类历史上科技创新最蓬勃的10年。开源为社会创造了一个更公平、更多元化、更包容和更开放的创新环境。我们不仅能够在
Wesley13 Wesley13
2年前
C++ 2的幂次方表示
【题目描述】任何一个正整数都可以用2的幂次方表示。例如:137272320同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)2(3)2(0)进一步:722220(21用2表示)3220所以最后137可表示为:2(2(2)22(0))2(22(
Wesley13 Wesley13
2年前
NEO从源码分析看网络通信
_0x00前言_NEO被称为中国版的Ethereum,支持C和java开发,并且在社区的努力下已经把SDK拓展到了js,python等编程环境,所以进行NEO开发的话是没有太大语言障碍的。比特币在解决拜占庭错误这个问题时除了引入了区块链这个重要的概念之外,还引入了工作量证明(PoW)这个机智的解决方案,通过数学意义上的难题来保证每个
程序调试利器——GDB使用指南
GDB是GNUDebugger的简称,其作用是可以在程序运行时,检测程序正在做些什么。GDB程序自身是使用C和C程序编写的,但可以支持除C和C之外很多编程语言的调试。
爱学it学无止境 爱学it学无止境
1个月前
重学C++ ,重构你的C++知识体系[19章完结]
C:专业视角下的技术深度探索C作为一种历史悠久且功能强大的编程语言,自其诞生以来,在软件开发领域一直扮演着举足轻重的角色。它融合了高级语言的易用性和低级语言的控制力,成为系统级编程、游戏开发、高性能计算等多个领域的首选语言。本文将从C的语言特性