22年后告别微软!ISO C++主席Herb Sutter称C++ 26是“自C++11以来最具影响力的版本”

科技   2024-11-25 16:51   上海  
整理 | 梦依丹
出品 | CSDN(ID:CSDNnews)

近日,ISO C++ 委员会主席 Herb Sutter 在其个人博客宣布,他已经离开了工作 22 年的微软,正式成为金融公司 Citadel Securities 的一名技术研究员。他在  C++ 标准委员会和社区的职责保持不变,继续担任 ISO C++ 标准委员会主席以及标准 C++ 基金会主席的职务,持续推动 C++ 的未来发展。

博客截图

他表示:在 Visual C++ 编译器团队工作的 22 年是一段非常精彩的经历,和一流的成员共事,即使面临挑战也非常有吸引力。Sutter 作为一个负责基础技术(比如 C++ 主流编译器)的团队成员,无需频繁跳槽就能接触到有趣的项目。因为很多创新项目都需要得到编译器的支持,这样就会自然而然的跟他们联系上。所以,他才能在该岗位上坚守了这么长的时间。

“2024 年是 C++ 的关键之年”,Sutter 在博客中提到。在 9 月份的 CppCon 大会上,他提到了未来十年的 C++ 发展方向是围绕反射和安全性改进展开。

对于 2026 年要发布的 “C++ 26 标准“,Sutter 表示:它将成为自 C++11 开启新时代以来最具影响力的版本。C++ 26 的规范将于 2026 年中期完成,尽管 Clang 和 GCC 等编译器中实现的功能的推出将是渐进的,有些功能已经存在。
Sutter 指出了 C++ 26 中的四个关键特性,他说这些特性“似乎进展顺利”。它们是:
  • 改进 std::execution(异步操作的标准库),以提高并发性和并行性,对 std::execution 标准库进行增强,以更好地支持并发操作和并行计算
  • 类型和内存安全性改进,旨在与其他现代、更安全的语言相媲美,博客中还提到针对安全性改进的一些提案,比如 C++26 中未初始化的局部变量将不再是未定义行为(UB)。这意味着 C++ 在解决安全性相关的 UB 方面迈出了重要的第一步,也让开发者可以享受前所未有的简单迁移路径:仅需用 C++26 编译器重新编译代码,无需任何手动修改,代码就会更安全,并减少 UB。”
  • 反射和代码生成功能,Sutter 形容它们是编译时编程革命的一部分,并称其为“可能是有史以来最具影响力的特性”。
  • 契约,指定接口以便检查其一致性,包括先决条件、后置条件和有效状态的断言。

当下围绕 C++ 讨论最多的莫过于安全性,这也是 C++ 一直以来的挑战。有不少专家建议转向 Rust,但 Sutter 表示:C++ 的“安全性提升”并不意味着要达到完美,而是聚焦于解决“优先级高的易改进问题”。具体措施包括:

  • 在标准库中引入更多安全性更高的组件;
  • 移除与安全性相关的未定义行为;
  • 引入新的编译时静态安全规则;
  • 增强动态运行时的安全检查。
这些改进目标旨在降低开发中常见的安全风险,为开发者提供一个更加可靠和高效的编程环境,同时保留 C++ 的灵活性和性能优势。
但部分开发者对 C++ 的演进持谨慎态度,认为语言的复杂性正在增加,可能难以通过现有改进措施(如 Sutter 的实验性编译器 Cppfront)彻底解决问题。考虑到需要与遗留代码进行兼容,使得添加特性比移除特性容易得多。
他们呼吁设计一种受到 C++ 启发但更简洁的新编程语言,以取代 C++,但拒绝将 Rust 视为这一角色的理想候选。

正如 Bjarne Stroustrup 所言,C++11 通过引入 auto 类型推导、lambda 表达式、标准化安全智能指针、range-for 循环、移动语义和 constexpr 编译时代码等特性,让人感觉像是一门全新的语言。它重新定义了 C++ 的编程体验,使语言更加简洁、高效,并奠定了“现代 C++”的基础。

随后,C++14/17/20/23 在过去十年间不断扩展和完善这些特性,推动了语言的持续进化。尤其是 C++11 的移动语义,为开发者提供了极为理想的迁移路径:“只需使用 C++11 编译器重新编译现有代码,无需任何手动修改,程序性能就能显著提升。” 自 2011 年以来,“现代 C++” 几乎等同于 “C++11 及之后的版本”,标志着 C++ 使用方式和体验的深刻变革。

Sutter表示:C++26 不仅是一场语言升级,更是一场全新的起航,它将引领全球开发者迈向更加智能和强大的编程未来。
如今,C++26 正在铺就一条通往新纪元的道路,预示着“现代 C++” 即将迎来第二次重大变革,其核心特征是默认的安全性和对基于反射的生成式编译时库的顶级支持。展望未来,C++26 将作为这些基础工具的“初版”,为开发者提供探索新特性的起点。在接下来的岁月里,开发者们将不断学习并应用这些功能,使代码变得更安全、更高效,同时推动语言基础的持续优化。

参考链接:

https://herbsutter.com/2024/11/

https://devclass.com/2024/11/12/iso-c-chair-herb-sutter-leaves-microsoft-declares-forthcoming-c-26-most-impactful-release-since-c11/


Qt教程
致力于Qt教程,Qt技术交流,研发
 最新文章