在美国国家安全局 (nsa) 建议组织从 c/c++ 切换到内存安全语言 (如 c#、rust、go、java、ruby 或 swift) 之后。c++ 之父 bjarne stroustrup 回应称,在他看来,nsa 报告中提到的 “安全” 编程语言在重要应用程序中实际上并不优于 c++。
bjarne 指出,nsa 的这一判定忽略了 c/c++ 三十多年来的进步;且许多 c++ 的用例也停留在遥远的过去而忽视了改进,其中就包括极大地提高安全性的方法。
现在,如果我认为这些 “安全” 语言中的任何一种在我关心的使用范围内都比 c++ 优越,我就不会认为 c/c++ 的淡出是一件坏事,但事实并非如此。另外,正如所描述的那样,“安全” 仅限于内存安全,而忽略了一种语言可能(并且将会)被用来违反某种形式的安全和保障的十几种其他方式。
bjarne 表示,自己几十年来一直致力于实现更好、更安全、更高效的 c++。特别是关于 c++ core guidelines 的工作,旨在为有需要的人提供静态保证的类型安全和资源安全的 c++。符合 c++ core guidelines 的良好静态分析器可以为 c++ 代码安全提供必要的保证,且比升级到更新的安全编程语言要简单得多。
他批评 nsa 的报告只关注内存处理问题,而忽略了许多其他影响项目安全性和可靠性的编程语言问题。并建议使用代码注释和编译器选项来控制规则的包含,以确保类型和资源得到安全处理。考虑到可能对项目造成的破坏,他保证 c++ 社区不会忽视安全问题,但只关注安全问题也不行。因此他计划列出一份可被视为安全问题(包括 ub)的问题清单,并找到预防这些问题的方法。
此外,bjarne 在与日前 infoworld 的邮件沟通中补充道,“太多人谈论神话般的 c/c++ 语言,但转头却去关注 c 部分的弱点。许多这些弱点在 c++ 中是可以避免的,通常可以通过编写更高效的代码来更直接地表达程序员的意图”。
邮件中 bjarne 也分享了他对安全的定义:目标是类型和资源安全,即每个对象都根据其类型使用,没有资源泄漏。对于 c++,这意味着一些运行时范围检查,消除通过悬空指针的访问,并避免误用强制转换和联合。c++ 提供 high-level 工具,例如容器、span、range-for 循环和变体,它们可以在不损害生产力或效率的情况下提供保证。关于 nsa 引用的所谓安全语言,bjarne 则表示,所有这些语言都容易受到未经静态验证的代码的攻击。此外,每个系统都必须使用硬件,而有效的硬件访问很少是安全的。
bjarne 还概述了他安全使用 c++ 的策略:
静态分析以验证没有不安全的代码被执行。
简化代码的编码规则,使工业规模的静态分析可行。
使此类简化代码相当容易编写并确保在需要时进行运行时检查的库。
目前共存在数百万 c++ 程序员和数十亿行 c++ 代码,该语言目前的主要用途包括航空航天、医疗仪器、人工智能 / 机器学习、生物医学、高能物理学等。
为什么大多数电路板会选择绿颜色的阻焊油墨
工信部将对我国800MHz频段的使用规划进行调整
多功能钥匙扣灯拆解
能够制造血管支架 最小可以打印7微米的细部特征
疫情下的智能家居有什么不一样的
C++之父:Rust等内存安全语言的安全性并不优于C++
悟空话务机器人:创业者必看!代理加盟电话机器人真的能赚钱吗
三环锁 紫光芯!共同守护万千家庭的第一道防护屏障
意法半导体与微软合作开发传感器支持Win8
如何分辨电池伪劣?
基于YMl2864R点阵式液晶显示模块的IVC监控系统
HiFS2023 | 5彩缤纷,华为全球智慧金融峰会参会指南一键获取!
目标0.6元每千瓦时,中国计划扩大国内太阳能光伏市场
2017最火SUV!10万国产车热销,宝骏510成最强黑马!
中美贸易摩擦升级,美国政府炮口瞄准华为,美国供应商也因此躺枪
大联大世平集团推出基于TOSHIBA产品的智能监控与远距视频方案
新一轮的5G手机上市热潮拉开 各大巨头之间竞争异常激烈
深开鸿与中国老龄协会老年人才信息中心签署战略合作协议,推动智慧健康养老产业发展
三星电视面临的诸多挑战,三星电视面临技术抉择
华为公开光通信技术专利:可降低光模块尺寸、成本及功耗