17611538698
webmaster@21cto.com

Microsoft:我们不会为了 Rust 而“放弃”C#

编程语言 0 1181 2024-03-05 11:22:23

图片

尽管最近有关于微软减少其自家C#语言的使用,以支持Rust语言的消息不断传出,但是这家公司表示它仍然致力于支持C#。

这一消息来源于MSPoweruser的Rafly Gilang看到微软的招聘信息,它在寻找熟悉Rust的架构师帮助在Rust中重写使用C#(.net序列中的编程语言)构建的核心组件。

图片

地址:https://jobs.careers.microsoft.com/global/en/job/1633482/Principal-Software-Architect

其职位描述是指导现有大规模 C# 云服务向 Rust 代码的技术过渡。此举被视为是Microsoft采用Rust实现全球平台服务现代化和优化的更广泛努力的一部分。Rust 语言提供内存安全性和性能。

C# 不会无处可去


Microsoft承认它对 Rust 的各种用例感兴趣,但 C# 不会被取代。相反,Rust 只是该公司武器库中的一种语言。


微软的发言人这样说道


“在 Microsoft,我们使用各种编程语言来开发并向客户交付产品和服务。C#仍然是Microsoft高度重视的语言,我们致力于其持续增长和发展”。


C#是一种通用的高级编程语言,由Anders Hejlsberg设计。Anders Hejlsberg是Microsoft“自吹自擂“的技术研究员、软件工具制造者和编程语言创建者。Microsoft 于 2000 年发布了 C#。


图片

Anders Hejlsberg


而 Rust 是一种多范式、通用的编程语言,强调性能、类型安全和并发性。Rust 于 2015 年问世,被视为一种更现代的编程语言。Rust 基金会是该编程语言的管理者。

Rust基金会的一位代表说:

“因为Microsoft是Rust基金会白金会员的创始成员,我们的团队自成立以来一直致力于Rust编程语言的发展和未来的成功。尽管如此,我们并不认为Microsoft对 Rust 的承诺表明 C# 被'放弃',正如最近的报道和评论所暗示的那样。

Microsoft寻求填补的职位角色是该公司的Substrate App Platform组,该开发小组是Microsoft 365核心平台开发团队的一部分。

”生锈的爱“

现如今,Rust 程序员的需求量开始变得很大,因为越来越多的组织因其安全性和性能而转向该语言。

Omdia分析师Brad Shimmin说:

“这就像人们在说'嘿,我们为什么要用 Rust 重写 Linux 内核的一部分?'这些都是挺大的问题,因为与Python之类的东西相比,Rust对开发者并不友好,但作为一种通用语言,与C语言相比,它有一些重要的优势。而这些优势中的大多数似乎都围绕着一个词——安全。更具体地说,两个词——内存安全。

Rust 在最新的流行编程语言 TIOBE 排行榜中排名第 18位,而 C# 排名第5。

图片

同时,2023 年 Stack Overflow 调查将 Rust 列为最受推崇的语言,因为去年使用它的开发人员中有超过 80% 希望今年再次使用它。2022 年 Stack Overflow 调查报告显示了 Rust 的类似结果。

Brad Shimmin还说:

“你可以编写与 C# 一样快的裸机代码,而不必担心伴随该语言的内存'陷阱',我认为对于更广泛的应用程序中的特定项目和模块,Rust 绝对是一个不错的选择,尤其是在性能和健壮性被提上日程的情况下。出于这个原因,我看到越来越多的 Linux 项目跳转到 Rust,从终端模拟器开始,现在转向整个窗口管理器,就像 Pop!_OS 发行版一样。

事实上,就性能和健壮性而言,Rust 是一个不错的选择。

“我想这是一种更好、更有效的编码和管理资源的方式——Rust 的价值在于它是被编译的,它管理内存,而不是 C++,你管理内存(安全问题),但它很快,C# 管理内存(垃圾收集器),但它是字节码动态编译,没有那么快或节省空间,“

Rust 管理内存(新格式,而不是垃圾回收器),并且对其进行编译,使其更快、更高效。这主要对在 Office 365 等云平台上运行的东西有价值。

关于预算


针对Microsoft 经常修改Azure中运行的服务代码。微软MVP和区域总监,Campbell&Associates的创始人Richard Campbell这样表示


“我怀疑他们热衷于优化该代码,因为这会花掉他们部门的预算”。


Campbell 指出,这些代码最初是用 C# 编写的,因为可以快速开发并进入市场——只有当它变得热门时,才会考虑 Rust 可以带来的那种极端的性能优化。只有当服务需求量很大时,微软才会考虑这种优化——如果很少有人使用它,那就不值得了。


“当你追求峰值优化时,你会倾向于使用低级语言——那种'接近金属'的语言,这样你就可以尽可能地节省每一个处理周期。C# 是一种很棒的语言,但它存在于托管运行时中,该运行时针对可靠性和易用性进行了优化。当然它也很快,但如果你想从一些代码中榨取所有可能的性能,你需要切换到较低级别的语言 - 通常是C++。


而相关的权衡是,C++代码更难编写和调试,并且需要非常熟练的人来编写高度优化的代码。


Campbell 说:“Rust 代表了新一代的低级编程语言,它使得在该级别创建高质量的代码变得更加容易。


一个错误?


然而,对于一家软件公司来说,仅仅用 Rust 重写其代码库可能是一个错误。


Brad Shimmin这样说:


“首先,有能力的 Rust 开发人员比那些精通 C#、React 等工程师更难找到,其次,如果出现大规模的变化,Rust 中的一些内存安全限制可能会随着时间推移而变得难以维护。


但是,他说可以很容易地想象Microsoft为什么要这样做。


“这与 Linus Torvalds 允许 Rust 进入 Linux 内核的理由相同:性能和稳定性,”这就是 Linus 从驱动程序开始的原因。它们就在祼机金属上工作,而且是高度模块化的。用Rust很合适。就像用 Python 编写Web应用程序一样,它也非常适合数据科学项目。


Google 也提高了 Rust 赌注


与此同时,Microsoft并不是唯一一家密切关注 Rust 的大公司。如果你关注21CTO,本月早些时候,Google承诺向Rust基金会提供100万美元,以提高C++和Rust编程语言之间的互操作性。(相关链接:谷歌向 Rust 基金会捐赠 100 万美元,改进 Rust 与 C++ 的互操作性


虽然这个项目被称为“Interop Initiative”,但其目标本质上更加聚焦,让“组织慢慢地将当前的C++迁移到Rust”。


同样的情况,关注内存安全是一个核心问题。


Lars Bergstrom 在Ggoogle 是 Android 平台工具和库的总监,也是 Rust 基金会董事会主席。 他在一篇博文中这样写道:


“虽然 Rust 可能不适合所有产品应用程序,但优先考虑与 C++ 的无缝互操作性将加速更广泛的开发者社区采用,从而与提高内存安全性的行业目标保持一致,”


作为具有网络安全背景和基础设施安全局 (CISA)的 局长 Jen Easterly 最近倡导在 Android 中使用 Rust 和 Google 内核的实现,作为组织和平台缓解内存安全漏洞的关键方式。据CISA称,大约三分之二的已知软件漏洞是一类被称为“内存安全”漏洞的弱点,这些是引入了与计算机内存访问方式相关某种类型的漏洞。


此外,谷歌一直是 Rust 实施的先行者。谷歌表示,迄今为止,在 Android 的 Rust 代码中发现的内存安全漏洞为零。虽然谷歌在Android中使用Rust的增长最为明显,但该公司仍在继续扩大其在更多应用程序中的使用,包括客户端和服务器硬件。


Microsoft 的“生锈”历史


实际上,Microsoft对 Rust 的兴趣已经不是一两天了。


早在 2020 年,微软就表示逐步转向 Rust 来构建其基础设施软件,远离 C/C++。


2022 年,Azure 首席技术官 Mark Russinovich 就在 Twitter(现在称为 X)上发帖说:“说到语言,是时候停止在 C/C++ 中启动任何新项目了,并将 Rust 用于需要非 GC 语言的场景。为了安全性和可靠性。业界应该宣布这些语言已弃用。


虽然然 Rust 的学习曲线很陡峭,Azure团队更喜欢 Rust 而不是 Go,因为 Rust 能够发现 Go 无法发现的错误。


去年,Russinovich 在平台上发帖说:“如果你在 Windowns 11 Insider 体验频道上,你就会在 Windows 内核中第一次尝到 Rust 的滋味!”


作者:有趣的大雄

评论