白宫国家网络主任办公室(ONCD)近期发布报告,敦促科技界采取行动,减少网络攻击面。报告建议,业界应转向使用如Rust等内存安全的编程语言,并减少使用易遭受攻击的C++和C语言,以此降低内存安全漏洞,提高软件安全性。
然而,C++之父Bjarne Stroustrup在接受InfoWorld采访时,对ONCD的上述观点提出了反驳。他表示,对于ONCD报告中似乎对当代C++的优势及其在安全保证方面所做的努力视而不见,他感到惊讶。同时,他也认识到编程语言只是工具链的一部分,工具和开发流程的改进同样至关重要。
Stroustrup强调,安全性一直是C++开发的核心目标。从C++诞生之初,提高安全性就已成为其重要目标。他指出,现代C++中广泛采用RAII(Resource Acquisition Is Initialization)技术、容器和智能指针等,而非传统的C风格指针,使得代码更加安全。
他还详细列举了C++在安全方面所做的努力,并指出当前的问题在于,尽管有数十亿行的C++代码,但其中很少完全遵循现代准则,且人们对于安全性的理解也存在差异。为此,他和C++标准委员会正在积极寻求解决方案,如通过Profiles框架来指定代码所需的安全保证,并鼓励实现者进行验证。
Stroustrup强调,C++的一个显著优势在于其灵活性,允许程序员根据需求调整性能、抽象级别和安全性。虽然C++支持传统C风格指针的使用,但这并非其典型用法。相反,现代C++提供了更为安全、易于理解和维护的替代方案。
他认为,提高安全性是一个综合性的任务,涉及语言、工具、流程以及开发者的技能和知识。C++作为一种功能强大的语言,提供了实现高安全性所需的灵活性和控制力。然而,这并不意味着所有C++代码都是安全的,良好的编程实践、适当的工具支持和持续的教育培训同样至关重要。
至于是否应弃用C++和C语言,Stroustrup认为这是一个过于简化的观点。这两种语言在性能要求严苛的应用场景中仍具有不可替代的优势。关键在于开发者需了解并遵循现代最佳实践,以确保软件的安全性。
总之,Stroustrup对ONCD关于减少使用C++和C语言的建议持保留意见,并坚信通过综合运用现代C++特性、工具链和流程,可以实现高度安全的软件开发。他呼吁业界共同努力,不断提升软件安全水平,以应对日益复杂的网络安全挑战。