Rust 近乎宗教般信仰的案例

这篇具有很好参考价值的文章主要介绍了Rust 近乎宗教般信仰的案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Rust 近乎宗教般信仰的案例 亚历山大·西多罗夫

众所周知,Rust 社区对 Rust 非常热情,有些人甚至责怪我们偶尔表现得像一个邪教。

恐怕我不会打消这个印象。因为在这篇文章将证明 Rust 使您成为一个更好的工程师、更好的管理者和更好的人。

作者背景

我的背景是十多年的 C# 开发。从表面上看,在 Rust 之前,我有一个远大的职业生涯:

我一直在领导团队完成成功的项目,并在 .NET 的最前沿构建软件。

但在内心深处,我从未满足于我一直在做的事情。我一直认为这是冒名顶替者综合症,但不知何故,这种感觉在我切换到 Rust 后消失了。

感觉像魔术一样,对编码冷淡的状态消失了,我重新发现了我对软件开发的热爱。

经过长时间的自我反省,我发现了情绪变化背后的三个关键原因。

Rust之美

关于 Rust 与其他语言相比的技术方面的文章已经绰绰有余了,我不想重复相同的论点。

但是,所有这些绝妙的想法巧妙地组合在一起,恰到好处地让我再次对软件开发感到兴奋。

考虑到 Rust 从工程师那里得到的爱,我绝对不是唯一一个。

开源社区

与其他不太集中的生态系统相比,.NET 中的开源社区一直感觉非常不活跃。

公平地说,自从Microsoft开始在.NET Core上工作并变得更加开源友好以来,在过去的5 +年中有很多改进,但是浪费了很多时间。

相比之下,Rust 中的开源社区是如此健康和充满活力,你自然希望成为其中的一员。

我们正在开发开源交易基础设施,并计划尽可能多地开源我们的工作。

项目类型

随着 Rust 越来越主流,这个论点可能会被淡化,但现在 Rust 中的项目质量非常出色:许多雄心勃勃的想法正在专门在 Rust 中实现。

迁移

我当时经营着一家金融科技公司。事情进展顺利,但我们正在寻找进一步发展的方法。

考虑到我们正在开发高负载、延迟敏感的软件,在 Rust 中做一些严肃的事情的想法有明显的长期好处。

此外,这会让开发人员感到高兴,因为我们有越来越多的对 Rust 充满好奇的工程师。

大约两年前,一旦async/await 支持稳定下来,我们就开始构建第一个 Rust 团队。

最初我们没有计划将其作为从 C# 到 Rust 的完整迁移,但是,一旦我们开始朝着这个方向前进,就没有办法阻止它。

越来越多的开发人员开始要求加入 Rust 团队。告诉他们“不”,从而使他们失去动力绝对不是最好的选择。因此,我们承诺逐步将绝大多数软件迁移到 Rust。

现在可能很难意识到这一点,因为 Rust 似乎越来越主流,但两年前,从经营公司的角度来看,这是一个非常可怕的决定。

从一个你一直在工作的成熟生态系统的舒适区,转移到一个你经验很少的年轻生态系统,是很艰难的。

但悲惨的失败不是一种选择,所以我们继续前进。在最初的几个月里,我们看到了各种区块的惊人快速改进:我们对 Rust 的理解一天比一天好,Rust 生态系统正在迅速成熟。

我们迁移到 Rust 的激进程度肯定有赌博的成分。但是,幸运的是,大约半年后,就在我们开始适应新的生态系统时,Rust 起飞了。

从那时起,我们遇到的唯一问题是人才奇缺!

但即使是这个问题最终对我们来说也是一件好事。当我们用主流语言招聘时,我们一直希望得到一位经验丰富的工程师,他此时此地都非常适合。

回想起来,我们的招聘过程自私和近乎傲慢。由于我们刚开始的时候基本上没有经验丰富的 Rust 开发人员,这促使我们更加开放,投资于人,

提供机会并自己培养人才

不仅能改善我们的团队文化,使我们的团队更加平衡。即使现在不再严重缺乏 Rust 开发人员,我们也遵循这种方法。

当我与其他公司的同事讨论我们内部的 Rust 革命时,我最常被问到的问题是 Rust 团队是否比 C# 团队慢。

这是一个非常普遍和合理的问题。因为 Rust 是一种较低级别的语言,您必须手动执行 C# 等高级语言自动为您执行的操作。

但是我们没有遇到开发人员性能的任何显着下降。考虑到现代 C# 是一种非常好的语言,这更令人惊讶。

虽然我确实对C#有疑问,但现在 C# 可以说是复杂后端软件的最佳编程语言之一:

它相当快,跨平台,并且具有清晰的语法和现代功能。

我没有看到太多的竞争:

使用 Python 在生产中会很慢并且由于类型系统不佳而难以维护;

C/C++ 会降低开发速度并经常出现内存泄漏,即使是我们中最好的人也容易出现!

Go 在其舒适区之外往往是一个糟糕的选择(微服务等)

我唯一可以证明比较更好的语言是 Kotlin,但前提是你真的喜欢 Java 生态系统。

C#肯定做对了很多事情。它提出了一个问题,为什么在转向较低级别的语言后,开发过程没有减慢。

这是需要篇幅更长才能详细解释的文章,解释了为什么会这样。补充一点,当你在开发真正复杂的软件时,工程师很容易需要长达一年的时间才能熟悉代码库。

因此,重要的是人才保留,这主要基于工程师的满意度,这是 Rust 闪耀的另一个领域。

结论

与其深入技术细节,更适合从工程师和整个公司的角度分享一些较少有争论的、不太明显的转向 Rust 的话题。

总的来说,迁移到 Rust 是一次非常积极的体验:

一切都以绝对完美的方式结合在一起。

虽然 Rust 显然不是所有这些进步背后的唯一原因,但它绝对是其中的关键因素。

希望这篇文章的内容没有冒犯任何喜欢其他语言的人。虽然我们找到了对我们有用的方法,但没有一种永远通用且正确的方法来编写软件:

魔鬼在细节中,并且有各种语言的位置。

补充:

Async-Await 范式是编程发展中向前迈出的一大步。它不仅使您的异步代码“看起来”同步,增强了可读性,而且还提高了应用程序的响应能力和性能,特别是对于 IO 绑定用例。

但是,考虑到它在不同语言和框架中的处理方式,一开始可能有点令人生畏!

在我进一步讨论之前,我假设我们对 Rust 中的 Async-Await 有基本的了解,并且对 tokio、executors、futures 和任务等运行时有所了解。

什么是async/await 异步/等待? async/await 是 Rust 编程语言中一个强大的功能,它使开发人员能够编写高效并发运行的异步代码。

它是一种允许函数以非阻塞方式执行的技术,释放执行的主线程以在等待异步函数完成时执行其他任务。

这样,程序可以在等待异步函数的结果的同时继续执行其他操作。在 Rust 中,异步函数可以与 await 关键字结合使用,以在特定点暂停和恢复函数的执行。

此功能在处理 I/O 绑定或 CPU 密集型任务时特别有用,因为它允许程序在等待异步功能完成时执行其他任务。

为什么将Tokio与Async/Await一起使用?

虽然 Rust 的特性提供了一种编写异步代码的方法,但它不提供运行这些函数的执行器。这就是Tokio的用武之地。

Tokio 是 Rust 的一个流行的异步运行时,它提供了一个执行器和其他工具来帮助编写异步代码。

Tokio 的执行器提供了一种在不阻塞主线程的情况下有效地同时运行多个任务的方法。

它使用一种称为“反应器模式”的技术来管理 I/O 事件和计划任务。这使Tokio 能够以较低的开销有效地管理数千个任务。

信息论入门非常有帮助的书籍推荐如下:

  1. 《信息论、推理与学习算法》 - David J. C. MacKay 权威的信息论教材,内容全面,数学严谨,非常适合作为信息论的入门学习书籍。

  2. 《信息论基础》 - Thomas M. Cover 和 Joy A. Thomas 信息论的典范教材,内容从基础到进阶全面介绍信息论,理论推导严谨。

  3. 《信息论与可靠通信》 - Robert G. Gallager 更侧重于通信领域信息论内容,书写简洁明了,示例丰富形象生动。

  4. 《信息论与网络编码》 - Raymond W. Yeung 对各种网络编码做了详细阐述,内容新颖,对网络信息论感兴趣的人很适合。

  5. 《深入理解信息论》 - 张贤达 国人编著的信息论书籍,理论推导严谨,内容通俗易懂,对信息论入门很有帮助。

以上都是信息论领域非常经典和优质的著作,对理解和学习信息论理论非常有帮助。可以根据个人喜好和学习阶段选择合适的书籍进行学习。

本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-572188.html

到了这里,关于Rust 近乎宗教般信仰的案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里后端开发:抽象建模经典案例

    在互联网行业,软件工程师面对的产品需求大都是以具象的现实世界事物概念来描述的,遵循的是人类世界的自然语言,而软件世界里通行的则是机器语言,两者间跨度太大,需要一座桥梁来联通,抽象建模便是打造这座桥梁的关键。基于抽象建模,不断地去粗取精,从现实

    2024年02月09日
    浏览(86)
  • 【JavaWeb后端开发-第六章(2)】SpringBootWeb案例

    前面我们已经实现了员工信息的条件分页查询以及删除操作。 关于员工管理的功能,还有两个需要实现:     ♦ 新增员工     ♦ 修改员工     首先我们先完成\\\"新增员工\\\"的功能开发,再完成\\\"修改员工\\\"的功能开发。而在\\\"新增员工\\\"中,需要添加头像,而头像需

    2024年01月16日
    浏览(49)
  • 【JavaWeb后端开发-第六章(1)】SpringBootWeb案例

         前面我们已经讲解了Web前端开发的基础知识,也讲解了Web后端开发的基础(HTTP协议、请求响应),并且也讲解了数据库MySQL,以及通过Mybatis框架如何来完成数据库的基本操作。 那接下来,我们就通过一个案例,来将前端开发、后端开发、数据库整合起来。 而这个案例

    2024年02月02日
    浏览(51)
  • Nodejs后端架构基础知识和案例展示

    入门笔记,大神请绕路!!! 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。 优点: 1.高并发 (高并发的

    2023年04月11日
    浏览(53)
  • 用可视化案例讲Rust编程3. 函数分解与参数传递

    上一节我们在绘制面要素的时候,发现了函数功能体是三个不同步骤组成的: 读取文件获得geometry 把geometry转变为绘图元素trace 把绘图元素绘制到地图上 像我们上一节那样,把所有的功能都写在一个函数里面,这样的函数灵活性太差,例如我们要读取和绘制若干个点、线、面

    2024年01月25日
    浏览(92)
  • [JavaWeb]【九】web后端开发-SpringBootWeb案例(菜单)

    目录 一、准备工作 1.1 需求 1.2 环境搭建 1.2.1 准备数据库表  1.2.2 创建springboot工程 1.2.3 配置application.properties 准备对应实体类  1.2.3.1 application.properties  1.2.3.2 实体类  1.2.3.2.1 Emp类  1.2.3.2.2 Dept类 1.2.4 准备对应的Mapper、Service(接口实现类)、Controller基础结构 1.2.4.1 Mapper

    2024年02月11日
    浏览(46)
  • 【微信小程序】前端+后端 :第一篇(基于javaweb 案例)

    博主:👍不许代码码上红 欢迎:🐋点赞、收藏、关注、评论。 点击新建项目 这里记得选择web application 点击下一步 这是我们需要的目录结构 如果没有如下图这个东西 可以点击+号 选择Artifact 即可 4.1、创建一个新的页面pages 目录结构 4.2、demo2.js 4.3、demo2.wxml 微信小程序端

    2024年02月09日
    浏览(47)
  • 跨域案例go gf ,请求代理,前端请求后端A转发给多个后端B

    跨域案例go gf ,请求代理,前端请求后端A转后端B 案例:从前端请求后端A(路径携带argusx),后端A转发请求到多个不同地区(可一个)后端B(切掉argusx,其他不变进行请求),由请求头x-proxy指定请求哪个服务端 方案一:handler形式处理: 方案二:中间件的形式代理: 对所有请

    2024年02月10日
    浏览(40)
  • Python圈的普罗米修斯——一套近乎完善的监控系统

    普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统。当年,由于SoundCloud公司生产了太多的服务,传统的监控已经无法满足监控需求,于是他们在2012年决定着手开发新的监控系统,即普罗米修斯。 普罗米修斯(下称普罗)的作者 Matt T.Proud 在2012年加入SoundCloud公司,他从

    2024年02月07日
    浏览(36)
  • 【JavaWeb后端开发-第六章(3)】SpringBootWeb案例—登录认证

        在前面的章节中,我们已经实现了 部门管理 、 员工管理 的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。 这是不安全的,所以我们今天的主题就是 登录认证 。 最终我们要实现的效果就是用户必须登录之后,才可以访

    2024年01月19日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包