高效又节能的 Rust 能帮助拯救地球吗?(rustt)

高效又节能的 Rust 能帮助拯救地球吗?(rustt)

这种编程语言安全又高效,但很难学,会拖累生产力。

去年 12 月,在 AWS Re:invent 大会上,Rust 基金会主席 Shane Miller 和 Tokio 项目负责人 Carl Lerche 提出了使用 Rust 来尽可能减小人类对环境破坏的概念,但他们认为 Rust 陡峭的学习曲线是通向这一目标的道路上最大的障碍。

Miller 还是 AWS 的高级工程经理,而 Lerche 是这家云巨头的首席工程师。

Rust 为什么能拯救地球呢?答案是,更高效的代码需要的运行资源也会更少,这意味着数据中心消耗的能源会更少,而且制造计算设备并将其运送到世界各地的过程中对环境的影响也会更低。

高效又节能的 Rust 能帮助拯救地球吗?(rustt)

Shane Miller 和 Carl Lerche 在 AWS Re:invent 2021 上谈论 Rust 的效率和安全性

“数据中心消耗了……全球能源总量的 1%,”Miller 说道。不过他补充说,由于技术进步以及云计算行业倾向于减少闲置资源的比例等因素,过去 10 年来行业消耗的能源总量几乎没有变化。

他们论点的第二部分是说 Rust 是最高效的编程语言之一。他们引用的证据来源是 2017 年的一篇论文[PDF],这篇论文测量了 27 种编程语言的性能、内存使用量和能源效率,并将 C 列为最高效的语言,而 Rust 紧随其后,能源使用量仅比 C 增加了 3%。根据这项研究,Java 使用的能量几乎是 C 的两倍,C#则是 C 的三倍以上,Python 则需要使用 75 倍以上的能量。

高效又节能的 Rust 能帮助拯救地球吗?(rustt)

根据 2017 年的一项研究项目,按能源效率排名的语言

高效率的 Rust 语言

这项研究是有问题的,正如这次会议上的一些人所观察到的那样:之所以会产生这样的结果,不是因为有些语言不那么关心能源效率,而是因为编程语言有许多实现和编译器,其中一些是相对更高效的。这篇论文还测出来 TypeScript 的效率只有 JavaScript 的十分之一,这也很奇怪,因为它明明可以编译为 JavaScript,并且两种语言编写的代码差不多。

不过这些问题并没有那么重要,因为没有人质疑 Rust 作为一种系统语言的效率的确极为出色这个结论。 而且 Miller 和 Lerche 的论点并不仅仅依赖于这项研究。Miller 还引用了来自 Discord 和 Tenable 的案例研究,这些研究显示了 Rust 带来的显著效率提升。

在 Tenable 案例中,开发人员用 Rust 重写了一个 JavaScript 组件,并实现了 50%的延迟改进、75%的 CPU 使用率下降和 95%的内存使用率下降。“这真是不可思议,”Miller 说。“这可节约了不是一点半点,而且不仅仅是在基础设施方面节省了资源,它还意味着节约大量能源。”

Lerche 说,垃圾收集语言本质上就是效率较低的。垃圾收集是自动化内存管理工作的常用方法,它的机制是识别超出范围的对象并释放它们的内存。

“垃圾收集器必须暂停进程以执行垃圾收集操作。当它暂停时……该服务无法再响应请求,”他说。这意味着 Java、C#和 JavaScript 等语言永远无法像 C 和 Rust 那样兼具高效率和高性能。

为什么不直接使用 C 和 C 呢?原因在于安全性和与内存相关的错误上,Lerche 说,他还引用了一项研究,“C 和 C 软件中所有高度严重的安全漏洞中有 70%是由于[缺乏]内存安全性。”

他说,Rust 是革命性的,因为“Rust 是第一种在保持内存安全性的同时具备高效率的主流编程语言。”Lerche 解释了 Rust 如何通过所有权(ownership)的理念来实现内存安全性,这种理念基于一个称为仿射逻辑的概念,其中每个对象一次只有一个所有者(owner)。

所有权规则会在编译时检查,因此没有运行时开销。并发在 Rust 中也比在 C 或 C 中更容易实现、更安全,从而进一步提升了性能和效率。

看起来这个目标很容易达成。开发人员和 IT 社区需要做的就是迁移到 Rust 即可,代码将运行得更快、更安全,地球的能源使用量会随之下降,AWS 可以关闭他们一半的数据中心(尽管我们在会议期间没有听到最后这句话)。

Rust 很节能,但太难学导致流行不起来

“但是,”Miller 说,“如果我们要实现碳减排目标……我们将需要使用 C 或 Rust 等节能语言编写大多数新软件。但是 Rust 确实有一个“臭名昭著”的学习曲线……我们看到了不少人在采用它,但我们并没有看到它广泛流行开来。

“我看到 Rust 使用率增长最快的场景是通过使用 Rust 可以获得显著性能提升的场景,例如大容量的数据库服务等等;在物联网和嵌入式等资源受限的小型环境中也有很多人用 Rust。但在类似这样的场景里:你正在写一个 JavaScript 应用的后端——我们是很难看到类似的采用率的。”

问题是在 Rust 中编程是很困难的。Java、JavaScript 和 Python 等语言被广泛采用的原因之一是程序员可以更快地提高他们的工作效率。

这就是房间里的大象,“著名的学习曲线,”Miller 说。在最近的一项调查中,“在表示不再使用该语言的工程师中,55%的受访者将学习和生产力列为放弃该语言的原因。经验丰富的工程师需要在主题专家的支持下进行三到六个月的学习,然后才能使用该语言进行高效工作。”

有没有可能抚平学习曲线呢?“学习曲线的部分问题并不是说语言有多难用,而是开发体验存在不足,因此我们看到来自 Java 等语言并尝试使用 Rust 的工程师们说,他们对调试器的体验感到不舒服,”Miller 在回答我们的问题时说。“Rust 的性能分析工具与他们习惯使用的也不一样。这就是我们正在调查的领域。”

“从历史上看,Rust 是作为 C 的替代品出现的,”Lerche 补充道。“它的目标就是那个用例。但是我们发现在更高层次上还有很多应用场景。

“如果你要构建一个服务,你得先看一遍 Rust 写得非常详细的手册,然后了解生命周期、trait 和 trait 模式,以及所有这些属于这种语言一部分的概念,但这些概念和你要编写的服务基本没什么关系。”他说,Rust 项目有计划编写一套简化的文档,其中只包含一些“编写服务所需的知识”。

尽管这些举措会有所帮助,但很难想象 Rust 真的会变得那么简单易用,简单到足够让业务应用程序的开发人员能从 Java 或 JavaScript,或 C#或 Python 切换过来。毕竟他们还是有很多业务问题需要解决,并且用其他那些语言来搞定会快得多。

进一步说,在计算栈的底层,代码可能会是用 Rust 或 C 或 C 编写的,因为对于 Linux 内核或数据库引擎的核心来说,高性能和效率已经是一项要求了。

也就是说,Rust 要发挥作用的关键在于目标环境的软件低效率已经显著增加了客户成本,并且 IT 行业非常关注这种低效率问题才行,而且 Rust 也只是解决低效率问题的一部分手段而已。

原文链接:https://www.theregister.com/2021/11/30/aws_reinvent_rust

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年7月8日 下午7:00
下一篇 2024年7月8日 下午7:12

相关推荐

  • 比较好的项目管理软件

    好的项目管理软件可以帮助项目经理有效地管理项目,提高项目进展和效率。以下是一些常用的项目管理软件,供参考: 1. Microsoft Project: 一款广受欢迎的项目管理工具,…

    科研百科 2024年8月19日
    54
  • 电厂项目管理系统图

    电厂项目管理系统图 电厂项目管理系统是一个重要的工具,可以帮助电厂管理人员更好地管理项目。该系统可以提供各种功能,如项目计划,进度跟踪,成本管理,质量管理和风险管理等。本文将介绍一…

    科研百科 2024年12月17日
    0
  • 党建材料写作技巧

    党建材料写作技巧 作为一名党员,写党建材料是一项重要的任务,也是党员学习和应用党的理论、路线、方针和政策的重要方式。写好党建材料不仅有助于提高党组织的凝聚力和战斗力,也有助于党员更…

    科研百科 2024年11月8日
    5
  • 协同云办公平台官网(协同云办公平台)

    协同云办公平台: 让办公更高效 随着科技的不断发展,协同云办公平台已经成为现代企业不可或缺的一部分。这种平台可以提供各种工具和功能,帮助企业轻松实现内部协作和沟通,提高生产力和效率…

    科研百科 2024年8月27日
    29
  • 临汾市党建研究会第三届理事会召开第一次常务理事会议(临汾市党建研究会电话)

    6月21日,临汾市党建研究会第三届理事会召开第一次常务理事会议,研究和推动2020年度工作任务落实。   会议宣读了《关于市党建研究会领导机构组成的通知》《关于市党建研究会第三届理…

    科研百科 2023年10月12日
    162
  • 开源低代码平台JeecgBoot,如何Docker一键启动前后端(docker搭建前端开发环境)

    1. 下载项目 git clone https://github.com/jeecgboot/JeecgBoot.git2. 修改后台配置cd jeecg-bootjeecg-mo…

    科研百科 2024年7月8日
    54
  • 工程项目管理系统软件

    工程项目管理系统软件 随着现代项目管理的日益复杂,使用工程项目管理系统软件已经成为一种必要的工具。这些软件可以帮助项目经理更好地组织和管理项目,提高项目的效率和质量,减少成本和时间…

    科研百科 2024年9月12日
    20
  • 项目管理软件制作

    项目管理软件制作:从想法到实现 随着现代项目管理的重要性不断凸显,项目管理软件已经成为了许多企业和组织中必不可少的工具。制作一款好的项目管理软件不仅可以提高项目管理的效率和质量,还…

    科研百科 2024年7月22日
    62
  • 吉林省教育厅社会科学项目公示

    吉林省教育厅社会科学项目公示 尊敬的社会各界: 为加强吉林省高校社会科学研究,推动社会科学事业的发展,根据《吉林省教育厅关于公布2021年省级社会科学项目公示的通知》要求,现将20…

    科研百科 2024年10月18日
    0
  • 研究生参与科研情况怎么写(研究生参与科研项目的总结报告)

    研究生参与科研项目的总结报告 作为一名研究生,我有幸参与了一项科研项目,这是一次非常宝贵的经历。在这个过程中,我不仅学到了很多知识,还锻炼了自己的科研能力。在这篇文章中,我将回顾我…

    科研百科 2024年8月3日
    69