17611538698
webmaster@21cto.com

C++ 26 委员会推进新功能,包括合约和反射

编程语言 0 1417 2023-11-15 04:03:52

图片

ISO/IEC C++ 技术委员会召集人 Herb Sutter 发布报告称,C++ 26 将具有包括“契约”与“反射”在内的新功能。

C++委员会已经举行了多次会议,将确定即将出台的标准的内容,目标是在流程的早期批准语言最重大的新功能。 

各位知道,C++ 每三年更新一次。

虽然 C++ 23 仍处于“最终投票结束”状态,但 C++ 26 的设计工作正在顺利进行着。

首先说“合约(也称契约)”这一特性。

契约是一种实现按契约设计的语言特性,其中约定了定义类方法调用的前提条件、结果的后置条件以及类成员的有效状态。

契约这种方法最早由 Bertrand Meyer 在八十年代中期的 Eiffel 语言中采用从那时开始的,其影响了其它编程语言。

ISO/IEC C++ 技术委员会已经批准了一篇定义合约语法的论文。

 Sutter 在报告中还补充说,“还有一些语言设计问题需要决策,特别是隐式 lambda 捕获、consteval 和多重声明的语义。”

“反射”是进程在运行时内省自己类型和行为的能力。

C# 和 Java 等语言均已经支持反射,但 C++ 不支持。Sutter 等委员会成员上周一致通过了向 C++ 26 添加静态反射的提案。

作为“静态反射的核心,它足以解决许多重要问题,同时让我们还计划在 C++ 26 之后继续进一步构建它,我们迫切需要在 C++ 中进行‘反省’。”

新版本C++其他有进展的功能还包括:

  • 基于 C++ 标准库中的基本线性代数子程序 (BLAS) 的密集线性代数;

  • 用于调试支持的标准 API,例如 std:breakpoint();

  • SIMD(单指令、多数据)并行性

以及由C++ 发明者 Bjarne Stroustrup 提出的“ C++ 的安全建议”。

大家知道,C++ 在编程语言中占据着不同寻常的地位,被行业广泛使用,但也经常因其不安全、过于复杂和缺乏现代功能而受到一些批评。

Sutter 本人发起并创建了一个名为“Cppfront ”的实验项目,其目标是“探索是否有一种方法可以让 C++ 本身变得更加简单、安全和工具化 10 倍”。

巨头Google赞助了另一项名为“Carbon”的实验,和Sutter的目标有些相像,其关键问题是如何在改进C++的同时,保持与现有代码的兼容性。

在即将发布的 C++ 26 中,反射和契约等特性发布后,应该会受到 C++ 社区的欢迎。但是它们出现后也突显了该语言再度增加了复杂度,但在先进性方面落后于其他编程语言。

作者:场长

评论