前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rust 欧洲之声|真实世界中的 Rust

Rust 欧洲之声|真实世界中的 Rust

作者头像
张汉东
发布2022-12-08 21:10:09
6760
发布2022-12-08 21:10:09
举报
文章被收录于专栏:Rust 编程

“本文为 EuroRust 2022 大会的圆桌讨论,主题为 Rust in reality ,讨论真实世界中 Rust 的应用状况。原视频链接:https://www.youtube.com/watch?v=ubXvKRbULuo,视频也被搬运到了 B 站:https://www.bilibili.com/video/BV11e4y1W7i3/ 。因为本人不会制作视频字幕(或许是因为懒),所以就写文章记录讨论内容了。本文也不是逐句翻译,如有理解错误敬请指正。

圆桌讨论主持和嘉宾介绍

  • 主持人:Rust 基金会执行董事 Rebecca Rumbul
  • 嘉宾从左到右:
    • Luca Palmieri, Amazon Web Services (AWS) 高级软件工程师
    • Florian Gilcher, Ferrous Systems 总裁
    • Armin Ronacher, Sentry 首席架构师
    • Chris Konstad,Meta 生产工程师

问题讨论环节

Rebecca : Florian 你能否给大家透露一些 Ferrous System 公司基于 Rust 相关的商业信息呢 ?

“背景:Ferrous System 是一家 Rust 咨询公司。

Florian : 当然可以。哈哈。

我最喜欢的一篇关于编程语言的论文之一是讲「在商业层面,没有人会为实现一些功能而去改变编程语言」,这是一个残酷的现实,但是这种需求是存在的。我和商业投资人都看到的一个点是,现在很多公司都正在重新考虑技术工具栈,想让一切都变得更加快且连接更加紧密。

我们目前已经锚定的一个领域是汽车公司。汽车公司在考虑,“我们不能再进行五年的开发周期了,因为我们需要连到互联网去更新诸如 crash patch 之类的补丁”。而 Rust 语言既方便使用又拥有可靠性的语言,正好是一个新的工具方向。我们只需要选择一个靠谱的工具,而不需要不断地想要更换工具,可以专注在更有趣的事情上。

Rebecca : Luca ,Rust 有比较陡峭的学习曲线,企业在做出投资到 Rust 语言的决定之后,该如何把 Rust 在内部应用起来?

Luca: 我前东家是一家使用 C# 语言的电子商务网站,大概有100~150名开发人员,并且对 C# 语言有大量投入。几年前(大概 2019年)开始采用 Rust ,预计 2022年底 Rust 开发人员将达到 40~50 名开发力量。

我们选择 Rust 的理由和 Florian 类似。从技术角度看,我们需要更好的领域建模,所以我们需要代数数据类型、需要处理 Null 、需要一种比异常更加易于管理的处理错误的方式。同时,我们需要找到一些在 C# 社区很难找到的某些类型的工程师,但是在 Rust 社区很容易找到。但是我们又遇到了招人的难题,因为 Rust 语言生态非常新,没有那么多 Rust 开发者。但有很多人渴望成为 Rust 开发者,所以,我们也请 Florian 给我们做了很多内部的现场培训。

我们首先将 Rust 用在银行分类账相关的商业案例中,这个场景下,安全和公平很重要,Rust 对正确性的保证足以让我们下决心去尝试新事物。然后我们发现它编写起来并不比我们之前使用的语言难多少,然后 Rust 就在公司内部的开发人员中传播了起来。

Rebecca : Armin ,Rust 在 Sentry 的推广过程是怎么样的呢?

Armin: 我们的业务之前都是用 Python 实现的,当时我玩 Rust 也有一段时间了,Rust 已经成为了我的兴趣爱好,因为我决定它很有趣。并且当时我发现自己出于兴趣爱好用 Rust 实现的 source map处理程序比生产环境的Python 实现更加优越。当时 Rust 和 Python 之间的交互已经非常方便。所以我们开始用 Rust 重新实现一些命令行和服务端的交互工作。接下来的几年,越来越多的 Rust 代码就出现在了我们的代码库中。

最初 Rust 带来的好处几乎就是性能提升。但是 Sentry 的核心组件是我们需要处理本地的stack traces,因此当你遇到 iOS 设备或其他设备崩溃时,你需要处理调试信息文件,这个领域大量的历史工具实际上旨在受信任的数据上运行,因此你将拥有自己的在本地运行的调试器,并且你相信你自己的编译器不会创建无效数据。但是如果你处理来自客户的调试符号,那么你会暴露一些固有的风险。Rust 生态系统开始构建越来越多的工具来安全地处理调试信息,我们也对此做了一些贡献。我很确定,我们除了一些非常小的组件之外,现在所有调试处理实际上都是基于 Rust 来处理的,而之前这部分工作是用 Cpp 实现的。

我认为 Rust 在公司的实际运作方式效果非常好,相对 Cpp 来说,大家都为 Rust 代码库工作更加兴奋。

Rebecca : Chris ,Meta 这家巨无霸公司是如何推广应用 Rust 的呢?

“Meta 就是之前的 Facebook

Chris: 在 Meta 这是一个长期的过程,持续了很多年。

最早是 2016年源代码管理团队(源码管理工具 Mercurial )考虑使用 Rust 。Meta 的工程师在选择使用工具方面有很大的灵活性,包括选择编程语言。只是如果选择受官方“祝福”的语言更容易完成工作。别人不会问你为什么选择这个语言之类的问题。当时,团队中的 Python 工程师考虑提升性能,所以默认选项是 C++,其中一位工程师不喜欢将 C++ 引入到一堆 Python 代码中这样的想法。并且,在 Meta 中处理网络并发和async等在 Cpp 中是一项艰巨的工作。所以他们考虑选择 Rust ,并开始引入 Rust ,结果非常好。后来,其他团队将 Rust 编译器集成到了 Meta 的构建工具中,这项工作完成以后,引起了团队的跳跃欢呼,这个过程就好像星星之火逐渐形成燎原之势,最终,你在 Meta 团队中想找到一个对 Rust 不感兴趣的团队反而很难了。

我们有很多特定的针对 Rust 新手的训练营任务,新人从训练营出来以后,选择可以使用 Rust 的团队加入。

Rebecca: 所以 Rust 现在在 Meta 里已经是受“祝福”的语言了吗?哈哈。

Chris: 我想是的。

Rebecca: 既然谈到了招聘,大家认为现在“Rust 是最受欢迎的语言”是否意味着Rust 岗位的市场空缺有很多呢?还是说 Rust 程序员很容易招聘?

Chris: 我们可以从 Rust 新人训练营中去获得想要的工程师。

Florian: 我们可以轻松地用我们的个人资料去吸引 Rust 工程师。但是从我们的客户或潜在客户那里也有同样的问题,是否可以找到 Rust 工程师。我们目前对团队进行 Rust 培训,以便让他们很好地使用 Rust ,我认为这是一个非常合理的过程。因为公司不会通过雇佣新的团队来使用新的语言,他们通常会重新培训内部受信任的团队去用新语言,尝试一些小的项目,再去扩展到大的项目。然后才开始在某个时间点雇佣新的 Rust 开发者。在过去的两年中,我们为很多大型企业服务,将数百个团队重新培训为 Rust 开发者。

Luca: 绝对是这样的,我们做了同样的事情。你不可能给新人扔一个新项目让他用新语言去实现。通常都会从内部人员开始,你让他们这样做,也是出于信任问题。

Armin: 我通常觉得有越来越多的人都想做 Rust,在 Sentry 我们有很多 Rust 代码,也有很多 Python 和 Javascript 等其他语言的 SDK,所以每个加入我们公司的程序员都可以开始学习 Rust。

Rebecca: 大家对希望找到 Rust 工作的人有什么建议?

Luca: 如果你申请某个领域的职位,要么你需要了解语言,要么你需要了解领域知识,对于使用 Rust 的公司,要找到同时兼备的人是非常难的,我们在招聘的时候会考虑在一个团队里平衡“语言专家”和“领域专家”,让他们在工作中相互指导,然后你就可以得到一个独立的团队。

Armin: 如果你真的有这种想法,你可以先在当前的工作中去寻找可以用 Rust 解决的场景问题,尝试看使用 Rust 有什么改善,看你是否可以证明这项工作是对公司有益的。在没有经验的情况下用新语言构建新服务是非常困难的,但如果你能通过点点滴滴的逐步改进则可能成功。

Florian: 如果你正在找工作,我要强烈推荐两点建议:1. 猎头虽然很 bad,但他们也很专业,如果你想找到 Rust 工作,可以尝试联系他们。2. 因为 Rust 语言很年轻,现在正是一个最佳的时机,让你成为其他语言比如 java/javascript等不可能做到的领域的专家。

Chris: 如果你不喜欢 Rust ,那么你真的可以尝试一下 Rust ,然后确认下自己是不是真的不喜欢。Rust 虽然有学习曲线,但它真的值的你学习一下。

Rebecca: 大家多次谈到学习曲线,那么有没有一个我们应该知道的可以拿去教育那些尝试 Rust 的人让他们知道不必经历三四门语言才能去学习 Rust 的知识?

Florian: 其实现在 Rust 学习曲线已经趋于平缓,社区中有很多代码示例和教程。最难教育的那一部分人其实是,他们认为自己已经掌握了系统编程的全部奥义。因为你需要尝试告诉他们,“是的,你什么都知道,但是你也可以用另外一种语言(Rust)做到这一点”。

Armin: 我认为 Rust 对于那些编程零基础的人应该是一个有趣的入门语言。因为它的工具链非常好。

Luca: 我们害怕学习曲线就好像害怕传统语言那种“包罗万象的一门大的语言”,其实这取决于你想用它做什么,你只需要这些东西的一小部分,比如我不需要 FFi,我就不去看它。你不需要全部都知道,需要的时候再去学它。

Chris: 我从 2019年开始就专门写 Rust 代码。直到现在,我用生命周期的次数可以用一只手就能数出来。很多人在初学 Rust 时就被生命周期给扼杀了学习的兴趣。其实不要害怕,Rust 的文档很棒,编译器错误提示就像老师一样,有人也说编译器像一位跟你结对编程的高级工程师一样,都会帮助你。

Rebecca: 大家认为 Rust 被广泛采用还有哪些挑战?

Florian: 现在行业中遇到的一个大问题就是,大家都在讨论哪个平台哪个产品使用了 Rust ,Rust 就像是一种沉默的语言,很多公司在有效地使用 Rust ,但你不会通过他们的官网页面来找到这个信息,所以最重要的是,我们需要类似于 Conf 大会这样的交流空间,或者更专业的会议,人们可以积极地说:“嘿,我们公司使用了 Rust”。我们可以在更多的公开场合去讨论 Rust 被使用的地方。如果你的公司正在使用 Rust ,那么请鼓励你的公司公开讨论他们正在使用 Rust ,我认为这是一个巨大的推动力。

Luca: 虽然说学习曲线越来越平缓,但是有些地方其实非常陡峭。比如异步编程时遇到编译器错误。Rust 年轻的生态系统需要更多的维护,才能保证让更多公司使用它。

Armin: 我其实并不关心人们是否将 Rust 用于商业,但我知道人们肯定会这么做。目前我看到的挑战有两个:一方面我们很明显有一个开源的生态,这是一个发展方向,另一方面,你的公司经常受到某种形式的限制,它们并不像开源项目那么可见,比如不能经常升级编译器,并且编译时间也不是很理想。

Chris: 能够和其他语言交互是非常重要的。如果一家大型公司想采用 Rust ,它们不会在一个完全和现有系统隔离的独立环境中使用它。

Rebecca: 请大家给那些准备用 Rust 的企业或企业中的个人一些建议吧。

Luca: 我的建议是从小处着手,从关键路径开始。比如用 Rust 做一些 cli 工具、构建工具等一些不会破坏你业务的事情。如果你喜欢它就继续,不喜欢就停下来以后再说,就这么简单。

Florian: 从我的角度(咨询角度)看,诚实地告诉我们是否有一个问题可以通过 Rust 解决是非常重要的。如果你有预感,这可能是个解决方案,现在就去研究它。

Armin: 可以搞一些代码大赛之类的事情,有时会产生一些有趣的事情。实际当你看到代码实现时,你会发现使用 Rust 的人有很多,我已经在公司内部的hackathon看到过这样的事情发生。

Chris: 对,这些活动也可以帮助你找到公司中对 Rust 感兴趣的人。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 觉学社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 圆桌讨论主持和嘉宾介绍
  • 问题讨论环节
    • Rebecca : Florian 你能否给大家透露一些 Ferrous System 公司基于 Rust 相关的商业信息呢 ?
      • Rebecca : Luca ,Rust 有比较陡峭的学习曲线,企业在做出投资到 Rust 语言的决定之后,该如何把 Rust 在内部应用起来?
        • Rebecca : Armin ,Rust 在 Sentry 的推广过程是怎么样的呢?
          • Rebecca : Chris ,Meta 这家巨无霸公司是如何推广应用 Rust 的呢?
            • Rebecca: 既然谈到了招聘,大家认为现在“Rust 是最受欢迎的语言”是否意味着Rust 岗位的市场空缺有很多呢?还是说 Rust 程序员很容易招聘?
              • Rebecca: 大家对希望找到 Rust 工作的人有什么建议?
                • Rebecca: 大家多次谈到学习曲线,那么有没有一个我们应该知道的可以拿去教育那些尝试 Rust 的人让他们知道不必经历三四门语言才能去学习 Rust 的知识?
                  • Rebecca: 大家认为 Rust 被广泛采用还有哪些挑战?
                    • Rebecca: 请大家给那些准备用 Rust 的企业或企业中的个人一些建议吧。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档