微软 Windows 与 Rust!

本文讨论了微软和谷歌等公司逐渐采用 Rust 语言来替代 C/C++ 的趋势,Rust 在内存安全和代码质量方面的优势,以及学习 Rust 的一些挑战和益处。文章还分享了谷歌关于开发者学习 Rust 语言的调查结果,包括学习时间、编译器速度以及最具挑战性的领域等。

Microsoft Windows 与 Rust!

在我的密码学编码中,我必须设计出能够精确运行的代码,并且通常需要尽可能快(但没有错误)。为此,我经常先用一种语言进行原型设计,以便可以访问一个集成了所需代码的库。这通常最终会使用 C/C++ 或 Golang。对于生产环境,我越来越关注 Rust,因为它消除了内存分配中的问题,并迫使我停止在程序中随意使用变量。

Windows 和 Rust!

因此,当有传言称 Microsoft 计划到 2030 年用 Rust 替换 C/C++ 作为其 Windows 操作系统时,IT 行业深吸了一口气[这里]:

这项任务可以比作拆除爱丁堡城堡,然后将它一块石头一块石头地搬到另一个地方,并将所有的石头都替换成新的。引入全新的一系列 bug 和弱点的可能性在大多数人认为可能出错的事情列表中会名列前茅。总的来说,Windows 的代码库花费了数十年的时间才最终消除了其许多核心弱点,并且将其移植到另一种语言(即使它是一种内存安全的语言)可能会威胁到我们数字世界的大部分基础设施。

可能涉及的方法之一是直接将 C++ 交叉编译为 Rust,但这并没有真正带来使用 Rust 进行工程设计的好处,并且可能会带来很多效率低下的问题。在使用 GenAI 进行交叉编译时尤其如此,因为 AI 引擎不太可能具备以 Rust 为重点重新构建架构的技能。但最终,Microsoft 澄清说这是一个研究项目,而不是一个生产项目。

我喜欢 Rust,但是……

虽然我喜欢 Rust,但我确实发现它在很大程度上减慢了我的开发速度。当我在另一种语言中编写原型代码,然后将其移植到 Rust 时尤其如此。基本上,我发现你必须首先采用 Rust 的方法,然后为之设计你的代码。我更喜欢的编程语言实际上是 C#,因为我认为它是最接近完美编程语言的。但它的缺点是,它从未真正在行业中大规模采用,并且它总是比编译型语言慢(因为代码在托管框架中运行)。

但是,Microsoft 和 Google 对 Rust 的关注确实表明了一些事情,那就是我们或许需要戒掉对 C 和 C++ 的热爱,并转向一种不允许开发人员在内存中随意处理数据的编程语言。在 2026 年,我们的代码中肯定不应该存在缓冲区下溢/溢出吧?而且,为什么在 2026 年,我们仍然会遇到蓝屏和系统崩溃?基本上,软件世界一直过着受庇护的生活,我们不得不忍受无法正常工作的产品。想象一下一辆经常抛锚的汽车,我们不得不重新启动它。可以对汽车进行修补,但最终,设计师必须回到绘图板,并确保在设计中修复了 bug。

Google 关注 Rust

C 和 C++ 长期以来一直统治着我们数字世界的内核,现在仍然如此。但是,它对内存的处理不好,并且我们经常会遇到缓冲区溢出(Morris Worm、SQL Slammer 等等)或缓冲区下溢(Heartbleed)。这可能涉及到栈溢出攻击,即程序向为给定缓冲区分配的堆栈写入过多的数据;以及堆溢出攻击,即我们覆盖内存到未为缓冲区分配的空间。

这些问题通常允许攻击者将数据写入到非预期的地方,或者可能导致代码处理中的异常(从而导致代码行为不可靠)。一个典型的领域是覆盖分配给其他用途的内存,然后对代码造成拒绝服务 (DoS) 攻击——从而使代码停止工作。

除此之外,开发人员通常不会清理他们的变量,因此必须引入垃圾收集器来释放不再使用的内存。但是,Rust 就是不允许你做这些事情。它在编译时对变量的使用进行严格检查,如果你对它们做了不好的事情,它会告诉你,并拒绝编译代码。

2015 年,Rust 诞生了,在短短八年时间里,许多主要的软件公司都将其作为其系统的核心。Google 是早期采用者之一,现在 Microsoft 也加入了他们的行列,他们正在使用 Rust 开发其核心代码。但是,存在许多问题……学习这门语言需要多长时间?它会提高开发人员的生产力吗?以下内容与 Google 进行的研究有关,该研究回答了这些问题[这里]。为此,Google 对其 1,000 名开发人员进行了调查。

学习 Rust 需要多长时间?

首先,Google 询问了学习 Rust 需要多长时间。图 1 显示,大多数人(约 2/3)花费了不到两个月的时间来学习,只有 9% 的人花费了超过四个月的时间。必须说明的是,在学习 Rust 之前,大多数开发人员都具有 C/C++、Python、Java、Go 或 Dart 的经验。正如 Google 在其博客中定义的那样,这些数字与开发人员学习新语言(无论是在 Google 内部还是外部)所花费的时间相似。

图 1:学习 Rust 的时间

Google 还在他们广泛的 Rust 培训中发现,许多开发人员在培训课程的第二天就会对 Rust 中使用的概念感到满意。

编译器很慢?是的!

那么,编译器速度慢吗?Google 发现只有 40% 的受访者认为编译器速度是可以接受的。这个比例很低,希望社区能够在性能增强方面取得进展。

Rust 的挑战领域?

调查中发现的 Rust 的三大挑战领域是 Macros(宏)、Ownership and borrowing(所有权和借用) 和 Asyn programming(异步编程)(创建消息创建者和消费者队列)。将 C/C++ 作为不安全代码集成并不是总体上的首要挑战之一。对于 Google 而言,他们的目标是投入时间进行培训,以涵盖三大挑战领域。

编译器错误消息非常棒!

难道你不讨厌 C++ 和 Python 中那些懒惰的错误和警告消息吗?它们几乎没有说明是什么导致了错误/警告。对于 Rust 来说,它喜欢给你相当详细的信息,并且几乎会因为你是一个糟糕的程序员而拍打你的手腕。在调查中,只有 9% 的受访者认为诊断和调试信息的质量不好,大多数人认为提供的信息是一流的。总的来说,可能需要一段时间才能理解编译器提供的信息,但是一旦你理解了,调试代码就会变得容易得多。

Rust 产生高质量的代码

在调查中,77% 的开发人员对生成的代码质量感到满意,85% 的人认为代码是正确的。超过一半的受访者认为代码也很容易审查。这些数字高于通常对编程语言的预期。

结论

Rust 很酷。它教会你如何成为一名安全的开发人员,并避免我们都会掉入的陷阱。不幸的是,我们大多数人都是在指针和垃圾收集器的世界中接受教育的,但事实上,你可以教老狗新把戏。

如果你有兴趣学习一些 Rust 和密码学,请访问这里:

https://asecuritysite.com/rust

  • 原文链接: billatnapier.medium.com/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
asecuritysite
asecuritysite
江湖只有他的大名,没有他的介绍。