Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

0

C++的十字路口:现代化与兼容性之争

引言: C++,这门影响深远的编程语言,正站在十字路口。一边是追求现代化、高性能和安全性的新兴力量,另一边是坚守兼容性、维护庞大遗留代码库的保守派。这场派系之争,不仅关乎C++的未来,更影响着全球软件产业的走向。

主体:

一、 现状:风雨飘摇的C++

C++标准委员会(WG21)近期就P3466 R0提案达成共识,强调维持与C及早期C++版本的ABI兼容性,拒绝“病毒注释”等破坏兼容性的特性。表面上看,这是对稳定性的维护,但实则反映出C++发展道路上日益增长的阻力。

美国政府机构,包括CISA、NSA和白宫,已多次发出警告,建议减少甚至停止使用C++,理由是其内存不安全特性容易引发安全漏洞。这一趋势并非杞人忧天,微软、谷歌等科技巨头纷纷转向Rust等更安全的语言。微软前ISO C++委员会主席Herb Sutter的离职以及微软重写核心库的举动,更添几分佐证。谷歌则公开表示,内存安全错误是Android平台稳定性和安全性的主要威胁,并大力推广Rust以提高安全性。AWS也积极拥抱Rust,将其应用于关键应用程序中。

与此同时,臭名昭著的Prague ABI投票(C++23不破坏ABI,但未来走向不明)以及谷歌降低C++参与度、开发自身C++后继语言的举动,都为C++的未来蒙上阴影。模块化设计迟迟未能实现,也反映出C++在适应现代软件开发模式方面面临的挑战。

二、 根源:两种文化的冲突

C++的困境并非技术问题,而是文化冲突。正如Herb Sutter所言,大型代码库的维护成本巨大,即使出于安全考虑,也很难大规模修改现有代码。这代表了保守派的立场:优先考虑兼容性,避免对现有系统造成破坏性影响。

然而,另一派,以谷歌、AWS等科技巨头为代表,则更注重现代化和效率。他们拥有强大的自动化工具和资源,能够更轻松地应对代码迁移和重构。他们更倾向于拥抱新特性,提升安全性,并积极探索新的编程范式。Chandler Carruth在谷歌内部领导的Clang-based自动重构项目,便是这种现代化理念的体现。

三、 未来:两条道路的分歧

目前,C++发展至少呈现两条路径:

  • 现代化C++ (Modern C++): 积极采用C++17及以后的特性(unique_ptr, constexpr, lambdas, optional等),使用版本化源码管理,采用现代化的构建流程(例如比CMake更先进的方案),并配备静态分析器、格式化程序和linter等工具,以保持代码库的整洁和现代化。

  • 传统C++ (Legacy C++): 继续强调与旧版本兼容性,维护大量的遗留代码,对新特性的采用较为谨慎,自动化工具和流程相对落后。

这两种路径并非完全割裂,但其发展方向和理念存在显著差异。传统C++的路径可能导致C++逐渐失去竞争力,而现代化C++则需要克服兼容性问题和迁移成本的巨大挑战。

四、 展望:挑战与机遇并存

C++的未来充满挑战,但也并非没有机遇。如果C++社区能够有效地协调两种文化之间的差异,推动自动化工具和流程的普及,并积极解决安全性问题,那么C++仍然可以保持其在高性能计算和系统编程领域的竞争力。然而,这需要C++标准委员会、科技巨头以及广大开发者共同努力,才能避免C++最终走向衰落。

结论: C++的未来并非预设的结局,而是取决于其社区如何应对当前的挑战。拥抱现代化,积极解决安全问题,并找到平衡兼容性和创新的方法,是C++继续繁荣的关键。否则,这门曾经辉煌的语言,或许只能在历史的长河中逐渐黯淡。

参考文献:

(由于信息来源仅限于提供的信息,此处无法提供完整的参考文献。实际写作中,需补充来自InfoQ、相关学术论文、C++标准委员会文档以及科技公司官方博客等来源的参考文献,并遵循规范的引用格式。)


>>> Read more <<<

Views: 0

0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注