整理 | 辛晓亮
出品 | CSDN(ID:CSDNnews)
9 月 20 日,微软 Azure 现任 CTO、Sysinternals 主要开发者 Mark Russinovich 在其个人推特账号发表动态称是时候停止使用 C/C++启动任何新项目,并建议在需要使用 noc-GC 语言的场景下使用 Rust 编程语言。
Rust 由 Graydon Hoare 设计,而后在 Mozilla 成型,Rust 设计时借鉴了许多 C++ 的设计思想如并发特性等,也以高性能著称,还实现了内存安全。2015 年 Rust 作为 C/C++ 的替代品开始引起人们的关注,正因如此,Rust 也经常被拿来与 C++ 进行比较,开发者也经常因为 Rust 还是 C++ 更好而争论。
Mark Russinovich 此番言论一出,也是在技术圈引起大量讨论。
Mark Russinovich 圈内地位
不同于从小就热衷于计算机的其他技术大牛,Mark Russinovich 15 岁才开始对编程很感兴趣,随后在卡内基·梅隆大学获得计算机工程博士学位。加入微软之前,Mark Russinovich 先是做着 Windows NT 性能监控软件的开发工作,随后与 Bryce Cogswell 共同创办了 Winternals Software 公司并一起开发了数十款流行的 Windows 管理和诊断实用程序,这其中就包括著名的系统工具 Sysinternals。
2006 年微软收购了 Winternals Software 公司,Mark Russinovich 也随即加入微软,帮助提升 Windows 的技术水平。在微软,Mark Russinovich 开发了非常多的系统工具,比如 winobj、sysmon、diskmon 和进程监视器,同时他还著有被称为 BSD 红皮书的《Windows Internals》,此外,Mark Russinovich 还精通逆向工程,震惊世界的索尼BMG光盘复制保护丑闻就是他发现的。
也因如此,不少开发者认为像他这样的大佬不应该参与到这种哪个编程语言更好的争论之中。
大厂对 Rust 的态度
尽管作为微软 Azure 的 Mark Russinovich 表示自己发表的只是个人意见,但其实微软对 Rust 的态度已经很明朗。不仅仅是作为 Rust 基金会的创始人,早在 2019 年,微软就开始使用 Rust 重写 Windows 组件。当时微软表示,其产品 70% 的安全漏洞都是内存安全问题,他们需要更安全的系统编程语言,毫无疑问,Rust 是最好的选择,Rust 编译器提供的内存和数据安全给微软的开发者提供了很大的帮助。
微软在官方文档中提到,他们选择 Rust 作为 Windows 最新的程序设计语言,另一个因素就是 Rust 在 Stack Overflow 开发者报告中已经连续 7 年成为最受开发者欢迎的编程语言。
得益于内存安全,Rust 备受青睐,不止微软,Rust 已经在其他科技大厂如苹果、亚马逊、谷歌、Linux 开发中广泛应用。Meta 还将 Rust 列为开发人员首选语言名单。
众所周知,Linux 之父 Linus Torvalds 对 Rust 也有独特的 Rust 的偏爱,Rust 目前已经成为 Linux 的第二编程语言,目前 Linux 的内核正在使用的 C 语言相比,Rust 最大的优点在于内存安全。
在 9 月 19 日结束的内核维护者峰会上,Linus Torvalds 接受媒体采访时说道,“如果不出意外,Rust 将出现在 Linux 6.1 内核之中”。Torvalds 还表示,除了内存安全的因素,他希望在内核中看到 Rust 的另一个原因是鼓励新的开发人员开始研究内核。
Linux 已迭代至 6.0,目前 Rust 进入内核的主要问题是编译器,现在的内核通常使用 GCC 编译,但 Rust 通常使用 LLVM 编译器进行编译。
C++ 之父回应
对于 Mark Russinovich 的言论,外媒 The Register 邀请 C++ 之父 Bjarne Stroustrup 进行了回应。
“人们总是迷恋那些看似能让他们生活更轻松的新事物,这点在企业高管上尤其明显。此外,支持新事物远比解决旧工具的已知问题更令人兴奋。不幸的是,新语言通常需要多年时间和重大努力才能在其广泛的应用领域与成熟语言相匹配。但大多数开发者看不到这一点,而且他们喜欢发表片面的评论。”
Bjarne Stroustru 还表示:”在许多情况下,安全性至关重要,这也是我们多年来一直致力于提高 C++ 安全性的原因。我们现在已经在 ISO C++ 中实现了可靠的完美类型与内存安全。具体来说,我们消除了空指针问题,能够捕捉范围错误,消除了数据争用等。此外需要注意的是,包括 Rust 在内,任何一种号称安全的语言都可能存在不安全代码的漏洞。“
Bjarne Stroustru 最后还补充道:“直接替换 C++ 代码,或者让它们变得更加安全都是一项非常艰巨的任务,需要逐步慢慢的才能做到这一点。否则大量不安全的 C++ 代码将会永远存在。”
开发者的不同声音
不少开发者许多开发者都对 Rust 的过度宣传感到反感,并表示不同的工具适合不同的问题,不要再过度宣传某一种编程语言。Rust 很好,但它不是所有问题的解决方案。
Rust 与 C/C++ 这一次的对比同样少不了网友的调侃,其中就有开发者表示:“在过去的三十年里,每隔五年 C/C++ 会被宣布一次死亡”。
也有开发者认为 C/C++ 只是工具,批评 C/C++ 不如 Rust 安全是不负责任的,程序是否安全应该问责开发者,通过更换编程语言并不能解决程序代码不安全的问题。
确实像这位开发者所言,Rust 本身并不能保证软件是安全的,它提供了针对内存安全漏洞的防御,但并不能消除其他类别的漏洞。正如 Rust 官方文档解释的那样,“Rust 包含安全和不安全的编程语言”,开发人员可以选择为某些任务编写不安全的 Rust,他们可能会在无意中创建不安全的代码。
抛开这些调侃,尽管不少大厂都在扶持 Rust,但在许多开发者眼中,一方面他们更关注 Rust 有没有在更多的产品中得到应用和发展,另一方面 Rust 过于陡峭的学习曲线也给开发者带来了困扰,从学习 Rust 到具备实际生产力需要一定的时间,这也是不少开发者抗拒 Rust 的原因。
参考链接:
https://www.zdnet.com/article/linus-torvalds-rust-will-go-into-linux-6-1/
https://www.theregister.com/2022/09/20/rust_microsoft_c/
— 推荐阅读 —