美国国家安全局督促弃用 C/C++,使用更安全的 Rust、C# 等( 二 )


第二点是,如果总是把语言功能限制在一些有限的、更安全的范围内,或者用一些自定义的东西取代核心功能(例如 malloc 或编译器) 。这就把你能使用的库限制在那些使用功能集的库上,并要求你无限期地维护这些核心功能 。即便如此,你也不会得到 "真正的 "安全,因为这取决于每个人都很小心、不使用错误的功能、编译器,而你又非常确定你的核心实现本身是安全的 。
因此,如果你全力以赴,与其需要一个特定的编译器,再加上一套不同的核心语言特性,再加上你需要确保所有的支持库都符合要求,再加上需要为静态分析和编译工具链定制支持工具,倒不如直接用一种新的语言,Rust 便是不错的选择 。

美国国家安全局督促弃用 C/C++,使用更安全的 Rust、C# 等

文章插图
Rust 是未来,但任重而道远
「弃用 C、C++,扶持 Rust」的争论经过几年的发酵持续到现在,愈演愈烈 。与此同时,推动软件开发向使用内存安全语言发展的队伍也从最初微软、Google、亚马逊等大厂的倡议,逐渐拓展到具体的开发者们以及学术界,现如今也包括了 NSA 在列 。
NSA 表示,使用内存安全语言可以帮助防止程序员引入某些类型的内存相关问题 。
内存是作为计算机语言的一部分自动管理的,它不依赖于程序员添加代码来实现内存保护 。内存管理通常是使用编译和运行时检查机制来实时自动保护 。使用更加安全的语言,如 C#、Go、Java、Ruby、Rust、和 Swift 等语言,可以一定程度上保护程序员不会无意中引入内存管理错误 。
不过,罗马并非一日之功 。
要想用 Rust 将 C、C++ 取而代之,也需要很长的一段时间,为此 C++ 之父 Bjarne Stroustrup 在回应 C++ 与 Rust 之争时分享道,“直接替换 C++ 代码,或者让它们变得更加安全都是一项非常艰巨的任务,需要逐步慢慢地才能做到这一点 。否则大量不安全的 C++ 代码将会永远存在 。”
网络安全公司 Acronis 的 CISO Kevin Reed 在接受外媒 The Register 采访时也说道,“多年来,使用 C 和 C++ 编写的代码数量巨大,即使我们明天都开始使用 Rust 和 Go,也需要几十年的时间才能清理这个烂摊子 。”
参考资料:
https://langui.sh/2021/12/13/Apple-memory-safety/
https://www.theregister.com/2022/11/11/nsa_urges_orgs_to_use/

【美国国家安全局督促弃用 C/C++,使用更安全的 Rust、C# 等】


推荐阅读