导读:C++ 的作者 Bjarne Stroustrup 近日主张采用强制执行指南的配置文件,以此来增强该语言的安全性。
Bjarne Stroustrup 近日宣告:“我希望向整个C++社区,尤其是 WG21 的成员传达我对 C++ 未来发展方向的观点和看法。”
这位 74 岁的 C++ 创始人花了整整 40 多年的时间,创建了C++语言,如今仍然在关注着他于 1985 年设计的这种编程语言的发展。
为了鼓励一些开发者长久期望的功能,Stroustrup上个月在《ACM 通讯》上发表了一篇 6300 字的文章《21 世纪的 C++》,他承诺展示现代、类型安全的“21 世纪 C++”的“关键概念”,以创建“强化版 C++”。
比如,在文章中,Stroustrup 强调了长期实验的方法,例如使用指南强制配置文件编写更安全的代码。为了保持与数十年来已经编写的 C++ 代码的兼容性,“我们无法改变语言,”Stroustrup 写道。“但我们可以改变它的使用方式……”
然而,这种演变并不完全取决于他自己一个人。在接近尾声的一节中 ,Stroustrup 承认了标准化工作组 WG21,以及它将不可避免地在语言变化的程度上发挥的作用。
“我并不愿意对未来做出预测,”Stroustrup 写道,“部分原因是这本身就很危险,特别是因为 C++ 的定义由一个庞大的 ISO 标准委员会控制,该委员会以共识为基础。”
“我上次查看时,会员名单上有 527 人。这表明了热情、广泛的兴趣,并提供了广泛的专业知识,但这对于编程语言设计来说并不理想,而且 ISO 规则不能进行重大修改。”
然而,当谈到那些关键的受众时,“有些人不了解历史,因此错过了关键点,”Stroustrup 这样说,“例如指南和配置文件是否符合 C++ 的长期发展方向。”所以他正在采取措施培训他们,“要做到这一点,我必须展示关键特性适合什么地方。”
他这篇详尽的文章确是一个很好的开始——但它也只是多管齐下努力的一部分。最终,它可能会改变整个 C++ 生态系统的发展轨迹,同时也为程序员带来他们一直渴望的高性能、类型安全且灵活的语言。
而这一切,也正是在实现 Stroustrup 自 20 世纪 80 年代以来一直坚持的目标的同时……
幸运的是,这种强制机制已经以这些指南配置文件的形式提供。脚注提供了它们在 Visual Studio 2019 中的使用示例,该配置文件实现了“Lifetime”配置文件的早期版本,该配置文件检查 C++ 是否存在悬空指针和引用以及对象生命周期中的其他常见错误……
基本上,每个配置文件都会验证是否满足了实现特定结果的要求,通常是在编译时。除了“生命周期”检查配置文件外,还有更多计划,包括“边界”配置文件,可确保所有访问数组的代码都包含范围检查安全检查。
Stroustrup 指出,C++ 已经通过其 2020 年推出的新span类模板支持更好地防止范围错误 。Bounds Profile 只是确认那些确保边界安全的功能到位。
Stroustrup 告诉开发者们说:“其中大部分都是标准的,现在就可以开箱使用。”他们还计划推出其他几个配置文件,以帮助代码避免类型或运算错误。Stroustrup 还确信的说,“在不久的将来,配置文件将提供一个框架来执行各种约束。”
希望这些可以为 C++ 提供人们所期待的安全保障,这也是 Stroustrup 40 年前对 C++ 最初的设想的自然发展。
他在敦促 WG21 采用 Profiles 的说明中也强调了这一点:
“正如我之前所说,这也是一个机会,因为类型安全和资源安全(包括内存安全)从一开始就是 C++ 的主要目标。
我对此处深有感触。但请不要被我相对平静的语言所欺骗。”
Stroustrup 的文章也指出,语言不断发展的一个问题是“很多人对 C++ 的看法过时了”。“今天,我们仍然看到无数人提到 C/C++ 认为这是一种神秘的语言,通常认为 C++ 是 C语言的一个小扩展,包含了 C 的所有糟糕方面,并且还严重滥用了复杂的 C++ 特性……”
Stroustrup 一再向人们强调说,C++ 仍在不断发展中,还有很多“正在进行的工作”和可用于改进的实验性特性,例如异步计算和SIMD 的通用模型等好东西。
“一个严重的问题是,如何将不同的思想整合成一个连贯的整体,”Stroustrup这样写道,“与大多数软件项目并不相同,也与学术界的大多数计算机科学工作不同。设计一种编程语言需要在一个并非所有相关因素都已知的领域做出决策,并且公认的结果中要几十年内都不要发生重大变化。”
当然,现在这成了一个难题,而且是一个已知问题。“几十年来几乎所有的语言设计努力都失败了,这一事实表明了这个问题的严重性。”
但这并不意味着 C++ 就停止了进化的尝试……
作者:洛逸
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。