为什么人工智能研究中不使用 C++?

前沿资讯 1719283021更新

0

      C++ 语言曾在 20 世纪末大放异彩,走在技术进步的前沿,尤其是在太空探索领域。然而,随着更新、更有视觉吸引力的编程语言的出现,C++ 已不再是人们关注的焦点。在 2024 年人工智能+数据峰会上,研究人员 Yejin Choi 表示,研究人员已不再使用 C++ 语言进行人工智能研究。

      尽管 C++ 在语音识别和计算机视觉等多个人工智能领域具有性能优势和应用,但它并不是人工智能开发的首选语言。它的复杂性和困难的学习曲线给开发人员构成了巨大的障碍。相比之下,Python 的用户友好特性、丰富的库和庞大的开发者社区将其推向了人工智能编程的前沿。

另外,C++ 涉及手动内存管理,如果操作不当,可能会导致内存泄漏和错误。这是一个相当严重的问题,尤其是在大规模的人工智能程序中。

      微软透露,由于 Windows 主要由 C 和 C++ 编写,在过去的 12 年中, 70% 的更新都是为了封堵内存安全方面的漏洞。谷歌的 Chrome 浏览器团队也发布过自己的研究报告,因为 Chrome 主要是用 C++ 编写的。报告显示,在所有重大安全漏洞中,内存管理方面的安全漏洞也占据了 70%。C++ 还缺乏对无效信息收集、数据库访问和线程的内置支持,因此在开发过程中需要付出更多的开发时间。这些在需要并行处理数据和任务的人工智能开发中劣势更加明显,例如深度学习和神经网络、实时系统和嵌入式系统、数据处理和数据科学。为了克服这些问题,开发人员通常会使用提供线程支持的第三方库和框架,如 OpenMP 或 Boost。然而,这些库会增加代码的复杂性和开销,只适合部分方面的应用。

      如果你访问过 C++ FAQ 这样的页面,你就会明白 C++ 有多难。在早期的语言版本中,一个位置错误的逗号可能会引发数百个编译错误。自 C++ 11 以来,该语言在转移所有权和右值引用的移动语义方面有所改进,但学习难度仍然很高。

      近年来,我们见证了各种编程语言的发展,它们有可能在底层系统任务中取代 C++,比如 Rust,它通过消除缓冲区溢出和内存泄漏来提供安全性(而且比 C++ 更容易学习)。如果比较一下 C++、Python 和 Rust 等现代语言的功能集,C 语言看起来就像来自恐龙时代。自 2011 年以来,C 语言标准就一直没有引入新功能。2017 年发布的标准包括技术修正和澄清,而 2023 年发布的标准也没有任何改变。

      微软 Azure 首席技术官马克-鲁西诺维奇(Mark Russinovich)曾表示,开发人员应停止使用 C 和 C++ 编程语言创建代码,业界应将这些计算机语言视为 "废弃语言"。设计了最初的 Unix 操作系统的贝尔实验室研究员肯-汤普森(Ken Thompson)称其为 "糟糕的语言","太大、太复杂"。

GitHub 编制了一份十大最受欢迎的机器学习编程语言列表。在机器学习资源库中,Python 是最流行的语言,C++ 排名第六。根据 Stack Overflow 的开发者调查,与专业人士相比,初学编程的人更倾向于使用 Python 而不是 C++。虽然 C++ 在速度和内存管理方面具有优势,但它也有缺点,比如学习难度较高,社区帮助较少。