假设我们有一个初级开发人员在写 Rust,也在写 C,做的是同一个任务。我们会在其中一种语言中获得更快的代码吗?这控制了能力,但控制不了相同的代码。这是“相同”的吗?
Rust:愿者上钩
2015年6月,Rust 1.0登陆的喧嚣一个月后,我写下了第一行Rust代码。我来自 C、Python 和 JavaScript,从此一发不可收拾。两家基于 Rust 的初创公司和 50 万行 Rust 代码之后,我在此对这一里程碑进行了一些反思。
虽然一些微型 crates 各自都能很好地完成某项任务,但我们仍然应该寻找一种方法来减少依赖树中的依赖项数量。
Rust 中的非初始化缓冲区是一个由来已久的问题, John Nunley and Alex Saveau 想到了一种新方法,使用 Buffer Trait,现在已经出现在 rustix 1.0 中,我将在这篇文章中介绍。
Mozilla 在火狐浏览器中使用了 Rust;谷歌在 Android、Chrome OS 和 Fuchsia 中使用了 Rust;微软在其 Windows 核心库和 Azure Confidential Compute 中使用了 Rust。离我最近的是,Linux 内核现在也采用了 Rust。
在我看来,在 Rust 一侧做更简洁的版本反而更容易,一旦我们知道了它的样子,也许我们就会更新 C 语言版本以与之匹配–或者我们点燃一切,继续用 Rust 重写一切。
我们接受了挑战,做了自己的实验,尽管我们的工程师得到的时间和指令非常有限,但最终产生的 Rust 代码确实避免了与内存安全相关的漏洞。如果你愿意,甚至可以亲自尝试一下。
我学习 Rust 的方式并不常见:阅读教程、书籍或编写小项目。恰恰相反,我把学习 Rust 作为构建 Austral 的研究工作的一部分。我会阅读有关 Rust 的论文和规范,有时我还会去 Rust playground 写一个小程序,以了解借用检查器在特定边缘情况下是如何工作的
Rust 目前非常流行,但我认为它并不能解决所有类型的问题。当对性能有要求时,与其使用 C 或 C++,不如使用 Rust,因为 Rust 可以大大提高性能。Rust 的速度几乎和 C 一样快,但它绝对更安全,选择它将会得到回报…
并发执行在编程世界中并不新鲜。而且,异步编程已经存在了一段时间,你可能在 JavaScript 或 C# 中见过类似的东西。但在 Rust 中,乍一看可能很相似,但仔细观察就会发现有所不同。
我不希望这变成一场语言大战。我的问题是出于善意,而且我确实想从在这里发表评论的人们那里汲取智慧。使用 Rust 的时间比我长得多的人可以提供我可能不知道的宝贵见解。因此,为了避免 “火焰战争”,请允许我尽可能具体地说明这个问题:
Rust 最大的潜力在于,它能无畏地将大部分 Rust 代码并行化,即使同等的 C 代码并行化风险太大。在这方面,Rust 是一种比 C 语言成熟得多的语言。
这种情况–陡峭的学习曲线问题–现在变得容易多了,这要归功于 LLM(Large Language Model,大型语言模型)。
有几种方法可以对 Rust 程序进行分析调试,但我最喜欢的是 flamegraph(也叫 cargo-flamegraph)。它是一款出色的工具,可与标准性能分析器 perf(Linux 上)和 dtrace(MacOS 上)结合使用。
如果你是一位JavaScript程序员,本文将带领你迅速的理解Rust这种编程语言的诸多语言知识。网上有很多关于Rust的零基础教程,但是,既然你已经是一位程序员了,为什么不跟自己已经熟悉的编程语言对比一下呢?
为Rust编程语言爱好者制作的一页囊括所有Rust知识点、相关资料的速查手册。