
C++
安全性并非等同于内存安全针对市场上的各种传言,
C++之父Bjarne Stroustrup并未选择沉默,而是在今年多次做出回应。其中最具代表性的是他在2月发表的一篇文章认真思考安全,然后采取明智的行动。在这篇文章中,Bjarne指出,很多人过于关注C/
C++的缺陷,但实际上这些问题是完全可以避免的。首先需要明确的是,C和
C++是两种截然不同的语言,不应被混为一谈。
C++能够更直观地表达程序员的意图,但遗憾的是,
美国国家安全局(NSA)忽略了
C++在过去30年中的巨大进步,将C与
C++视为同一类语言。这种误解令人遗憾。事实上,
C++正在引入越来越多的新特性,变得越来越安全。一位合格的
C++程序员完全有能力编写出与Rust媲
美的高安全性程序。忽视安全问题不仅会伤害
C++社区的大多数成员,也会破坏我们在改进
C++方面所做的许多努力。同样,过度专注于安全问题也可能带来负面影响。此外,安全这个词本身就有多种含义。我们可以通过编程风格、库的组合以及静态分析来实现不同层面的安全性。然而,NSA对安全的理解仅局限于内存安全,却忽略了其他十几种可能的安全隐患。并不是所有人都将安全置于首位。例如,在性能至关重要的应用领域,规则允许在必要时保证安全,并在需要时使用优化技术。目前,全球有数百万
C++程序员,数十亿行
C++代码被广泛应用于航空航天、医疗设备、人工智能/机器学习、知识图谱、生物医学及高能物理等领域。然而,据我所知,在发布相关报告之前,没有任何
专家向
C++标准委员会咨询过意见。所谓明智的做法究竟是什么?建议明确列出一份清单。1月中旬,官方
C++指导小组发布了一份声明,回应了人们对
C++安全性的担忧。尽管许多现代编程语言已经实现了基本类型安全,即确保变量只能访问其数据类型明确界定的内存部分,但
C++在这方面一直面临挑战。这并不意味着
C++无法实现安全性,而是需要更多的方式方法来解决这一问题。