预计将于 2022 年完成的 C2x 标准在C委员会的推动下一直在演化。InfoQ 采访了 Jens Gustedt,他正在委员会内部推进新标准,他还是即将出版的新书“Modern C”的作者。
Gustedt 最近总结了委员会到目前为止的工作成果,发布了新标准的第一份工作草案。除了当前的C17标准相关工作,其他工作主要针对错误修复,C2x 将包含旨在改进语言本身的规范性变更。
InfoQ:即将推出的 C 标准的主要目标是什么?什么将推动 C 的发展?
Jens Gustedt:新 C 标准的制定主要是为了完善一些目标,详见章程。关键点是这个标准旨在描述现有的实践,而不是发明本身。只要有可能,发明应该在现有的 C 编译器中进行,或者来自其他编程语言(事实上主要是 C++)。也就是说,还有很多工作将清理现有的特性,追求语义上的模糊性,并添加可能有助于日常编码的小特性。
InfoQ:语言方面的变化有哪些是值得我们期待的?你能否提供一些你认为重要的语言新功能示例?
Gustedt:在语言和库级别,程序员直接可见的部分目前还没有太多定论。我的期望是我们将看到一些集成到 C 中的 C++特性,例如属性、以某种形式编译所有数据类型的时间常量,以及初始化类型(也就是 C++的 auto feature)。此外,还有一个 C++的协调计划,用于新的调用约定,它可以取代我们从一开始就一直在使用的错误码返回约定。有几个人确保与 C++委员会保持紧密合作,他们在这些问题上处理得很好。
但是 C 标准还有另一个重要的作用,因为它基本上为我们的计算机架构和其他编程语言构建设置了机器模型。C 标准将其称为“抽象状态机”。作为一个重要的特性,我们已经投票将最新的 IEEE 浮点规范集成到 C 标准中。我们还组建了一个工作组来修改“内存模型”,事关程序员可能会或者可能不会直接与计算机内存中数据裸表示交互、这可能将如何影响一些可能的优化以及这种字节和位的调整将如何变得安全可靠。这项工作遵循的是 Peter Sewell(等人)关于“指针来源”的论文,我们希望我们最终得到的内存模型可以广泛适用于 C 系统软件和应用程序的多样性。
InfoQ:最近,原生语言(与解释型或 JVM 语言相对而言)一直受到极大的关注,包括 Rust、Swift、Dart、Go 和 endash。C++也正在稳健发展当中。你能简单地描述一下你认为 C 特别擅长的用途或应用领域吗?
Gustedt:C 最大的优点是效率、可移植性和稳定性。只要这些是软件开发当中存在的主要问题,那么 C 就应该被视为首选语言。
效率:在这里,效率可能是指一些非常不一样的东西:能量和内存效率(适用于小型或便携式设备、卫星),运行时效率(适用于中型或大型计算密集型计算)或速度(适用于科学可视化、游戏或网络通信 )。C 在这些领域的效率是无与伦比的,其他编程语言倾向于引入大量的内存间接、动态行为,从而遏制了效率。
可移植性:C 的抽象状态机旨在可移植到任何计算设备上。这个概念带来了很大的好处:通常为新 CPU 开发的第一批软件组件就是 C 编译器。因此,用 C 编写的代码,特别是操作系统和其他系统软件,可以进行快速的移植。大量的软件项目从中受益,Linux 发行版是数千个软件包的集合,这些软件包可以很容易地移植到新架构上,并与现有主流平台的发展保持同步。
稳定性:C 委员会致力于保证用户代码库的稳定性。你现在编写的 C 代码仍然可以在 20 年后仍然可以编译和运行。80 年代或 90 年代写的代码今天仍然可以使用。此外,C 还提供了一系列有限的特性,这些特性在工程学院的研究生阶段就应该掌握。因此,在数年甚至数十年后仍然可以保持可维护性。在 C 语言中,“遗留”有着不同的含义,好的 C 代码是真正的资产,而不是负担。
Gustedt 在法国国家计算机科学与控制研究所(INRIA)和 ICube 实验室工作,领导 ICPS(并行和科学计算)研究团队。
查看英文原文:C2x Will Be the Next ISO Standard for the C Language
评论 1 条评论