为什么 Rust 是初创公司的绝佳选择

为什么 Rust 是初创公司的绝佳选择

本文最初发布于TheDailyEdit博客。
在TheDailyEdit,我们有一个小而敏捷的团队,每周都会推出新产品。虽然产生这种节奏的原因有很多,但有一个技术选择提供了很大的帮助,那就是只要可能就使用Rust。Rust让我们能够快速而又充满信心地完成公司的任务目标。
在开始这个项目的时候,我们只有三个人。我是团队中唯一的工程师,所以我可以完全自由地选择语言和工具。这理论上听着很不错,但其实非常令人望而生畏!除了在机器学习方面明显可以使用Python之外,其他一切都是开放的。我们是否应该选择Java,因为它令人厌倦?我们应该因为其优秀的社区而选择Python吗?或者我们应该全部用JavaScript来完成,因为所有东西最终都是用JavaScript完成的?
每个选择都要做各种权衡,所以我一直在兜圈子。是一个简单的问题打破了这种无限循环:哪种选择能够吸引优秀的极客,让我们能够频繁而自信地发布一些内容?
所以这就是我们开始使用Rust的原因,以及今天,即使项目成熟了,它仍然是我们成长和成功的驱动力。
在职业生涯中,我涉猎了大量的编程语言、编辑器、工具和方法。我从1994年开始摆弄MS-DOS自带的QBasic和Gorillas游戏。之后不久,我学习了C语言,并几乎完全在Unix平台上工作。然后是C++、Python、PHP、Ruby,当然还有JavaScript。其中有一些是我年轻的时候为了好玩,还有一些是我在十几二十岁出头的时候为了赚钱。然后我开始开飞机,编程只是为了好玩。
2015年,我从PLT的一个朋友那里听说了Rust,并开始接触它。她一直说,Rust给PLT带来了很长一段时间以来第一个真正的“新”东西,就是生命周期语法。我对此持怀疑态度,和许多人一样,我认为C语言是最好的系统语言,因为它是如此简单和易于推理。
直到我开始使用Rust。
我的怀疑很快就消失了。当我意识到,尽管我有丰富的经验和良好的意图,但我在实际使用C语言时也难免犯错。不易察觉的内存泄露,释放后使用。当程序小而独立的时候,没什么问题,但当我开始创建和使用库,并向周围不透明的结构传递指针时,就变得混乱了。Rust让我明白,我并不是我以为的那个程序员。编译器就像一个老派的模拟器教员,不管你做得多好,他永远都嫌不够。我开始了“与借位检查器斗争”的阶段,就像脚趾碰到了墙角,持续的疼痛,一种破碎的感觉。
但这一切很快就过去了。
我花了大约3个月的时间才开始使用Rust。仅是小项目还不够。当我开始开发更复杂的系统(比如有异步行为的分布式作业队列或有FPGA接口的嵌入式系统)时,就开始受益了。这就像健身一样,你必须坚持下去才能看到效果。经过这些项目,编译器就不大困扰我了。而且,不管是什么项目,早期的代码组织都变得比较清晰了。这就是Rust,它可能会让人烦,但也真的会引导你走向一个优秀的架构。
但这还不是最精彩的部分。
最好的地方是在你构建完这个庞大而复杂的系统,并且可以编译器生成一个二进制文件之后。很有效,并且一直有效。Rust项目所需的调试工作量比我在其他任何地方看到的都要少。有了像标签联合体(Rust的枚举)这样的特性,就可以非侵犯式地明确指定代码的工作方式。这让你在部署任何东西时都非常有信心。然后是任何项目都有的定期更新和维护。通常,新入职的工程师不得不研究一些他们以前没见过的代码。Rust提供了护栏。如果他们以一种意想不到的方式与现有代码交互,编译器会告诉他们。
Rust已经进入了大众使用阶段,有多少文章在赞美它,几乎就有多少文章在揭它的短。这是一个很好的信号,这意味着它正在被使用。我喜欢Rust并不奇怪,但其他工程师呢?我们选择Rust这种相对小众的语言时,其中一个主要的顾虑是人才库的规模可能太小。问题是,真正的世界级人才关心的是他们能够使用什么工具实现什么想法。
是时候试试水了。我们联系了ThisWeekinRust通讯,刊登了我们的招聘信息。我们是一家偏远地区的公司,我们不关心工程师住在哪里。真是幸运,来自Twitter的JackDorsey在推特上说:“Rust是一种完美的编程语言”。
在接下来的8个周里,我收到了近四千名申请人的电子邮件。四千人!许多人实际上根本没有Rust开发经验。这很好,他们只是对这个想法感兴趣。我们竟然发现自己拥有一个世界级的工程团队,真是受宠若惊。
我们对Rust人才库的担心是不必要的。它是一种能吸引有经验的程序员的语言。
只要可以,我们都使用Rust。现在,我们的Web后端是用Rust构建的,我们的后台任务处理器也是Rust的,我们分析引擎的调度器呢?你猜对了,还是Rust。我们唯一不使用Rust的地方是在Rust生态系统中缺少相关库的时候。还有移动应用,我们使用Flutter。
经常有人说,Rust的缺点之一是语法相当繁琐,编写和阅读都非常耗时。其中有一些说法是符合实际的(它比Python要啰嗦得多),但很多都是夸大其词。例如,在我们的整个代码库中,手动标注生命周期的次数还不到十次。它在应用程序代码中并不经常出现。
对于Rust来说,前期需要做的工作更多。确实,编译器有大量的约束条件要你遵守。然而,这种认知开销,以及实际编写代码所需的时间,会随着经验的一点点积累而迅速减少。只要短短几周的时间,当创业公司在这段时间里经历过无数变化之后,需要做的工作就会减少,而且少很多。我们的团队都认为,阅读Rust代码比许多其他语言都简单。没有任何疑问或模棱两可的地方,通过阅读就能清楚地知道程序要做什么。
我们有一个规模非常小的天才工程师团队,代码迭代的速度很快。有了Rust,我们决定重写整个复杂的模块,并有信心保证它在编译后可以正常工作。有时候,我们也会犯逻辑上的错误,或者对问题的理解不太正确,没有任何一种语言可以避免这种情况,但对于其他每一项需要投入生产应用的东西,Rust让我们做得更快。
使用Rust,只要很少的工程师,你们就可以走得很远。
关于Rust的任何文章如果没有这一条,都是不完整的,但这也是众所周知的,所以我将长话短说。Rust速度很快。如果你只是偶尔使用‘clone’或‘Arc’,那么人们所写的关于生命周期的大部分痛苦就会消失,你猜怎么着,它仍然比Python、Ruby、JavaScript和Java快几个数量级。然后,如果真的要榨取最后一滴性能,那么你可以编写复杂的生命周期。轻松就能写出一些真正拥有出色性能的东西,真是让人高兴。但要知道,其性能的上限比这要高。
这和创业有什么关系呢?高性能意味着使用的服务器少,服务器少意味着运营开销小。作为一家初创公司,如果一开始就把钱花在只能支持每秒几百个请求的服务器上,那么你走不了多远。
通常,人们会这样反驳我:“工程师的时间比电脑的时间更昂贵”,是这样的。但与使用其他语言相比,你并不需要付出更多的工程师时间,而当你实际运行程序时,开销却更低。
很快就能收回成本。
我不是创业顾问。
我在本文开头写道,为初创公司选择一种语言可能会令人生畏,尤其是当你认为最适合的语言有点小众而且比较年轻的时候。从目前使用Rust的经验来看,我们团队不想使用其他任何东西。Rust可能很难学,但投资回报也极大。
在经验丰富的团队手中,Rust就像是一种超能力。
在下一篇文章中,我们将讨论使用Rust的一些缺点。
查看英文原文:WhyRustisagreatchoiceforstartups

主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/15321.html

(0)
上一篇 2023年3月7日 上午1:11
下一篇 2023年3月7日 上午1:13

相关推荐

  • Python 处理 JSON 我选择 ujson 和 orjson

    Python 处理 JSON 我选择 ujson 和 orjson 优质文章,第一时间送达!在Python使用用json.dumps(data)时突然发现特别慢,data本身不大,但是一个包含很多元素的列表,所以促使本人寻找一个替代的JSON处理库。大概对比了一个ujson(UtltraJSON),python-rapidjson(RapidJSON)和Py…

    RUST资讯 2023年2月19日
    100
  • ZARA也出彩妆了?这些你意想不到的牌子都在搞事情!

    ZARA也出彩妆了?这些你意想不到的牌子都在搞事情! 这两天刷ins的时候,发现ZARA出彩妆了,其实也算是意料之中吧,毕竟它之前就出过一些香氛什么的,比如这款刷爆屏的流沙香水,神仙一般的颜值,魔鬼一般的价格,撩起了多少少女心~~(当时我跑了好几家ZARA都没买到)图源/小红书用户@Sammi@一根小黄瓜儿如今服装品牌做彩妆早已不是什么新鲜事了,只要好看好用…

    RUST资讯 2023年2月22日
    90
  • (撕裂的美国)「国际锐评」利益集团成为美国政治衰败的催化剂

    (撕裂的美国)「国际锐评」利益集团成为美国政治衰败的催化剂 四年前,当时作为共和党竞选人的美国领导人曾夸下海口,称“将抽干华盛顿的泥沼”。四年时间一晃而过,人们看到:华盛顿政治非但没有风清气正,反而更加污浊不堪。其中,利益集团与政治集团深度捆绑、游说政治、金钱政治引发的“合理”腐败,成为美国政治衰败的催化剂。在美国,利益集团和个人通过游说方式影响政府决策甚至…

    RUST资讯 2023年2月13日
    90
  • 「结构化并发」简析,或:有害的go语句

    「结构化并发」简析,或:有害的go语句 每种并发API都有其并发执行代码的方式。下面是几个看上去使用了不同API的例子:符号和术语的区别不影响语义的一致:它们都安排myfunc开始与程序的其余部分并发运行,然后立即返回以便父程序执行其他操作。另一种选择是使用回调:情况依旧,符号不同但是效果一样:从现在起,如果特定事件发生,执行myfunc。一旦设定完毕,就立…

    RUST资讯 2023年2月14日
    70
  • rust语言基础学习:使用trait定义接口

    rust语言基础学习:使用trait定义接口 trait类似于其他编程语言中的常被称为接口(interface)的功能,但还是有一些区别的。trait告诉Rust编译器某个特定类型拥有可能与其他类型共享的功能。可以通过trait以一种抽象的方式定义共享的行为。可以使用traitbounds指定泛型是任何拥有特定行为的类型。简单的理解,trait就是Rust中…

    RUST资讯 2023年2月21日
    120
  • steam上令人沉迷的生存类游戏

    steam上令人沉迷的生存类游戏 steam平台,是目前游戏种类最多的平台,上面分布各个游戏开发商的作品,现如今就连大名鼎鼎的EA橘子平台上的王牌大作,也都登陆了steam平台,这个平台称霸大多数游戏市场。而且这个平台上还有好多独立游戏,都是些比较小的开发商或工作室开发的作品,它们虽然小,但是他们开发出来的独立游戏,并不代表不完美,这种游戏一般是开放性世界的…

    RUST资讯 2023年2月21日
    90
  • 安全嵌入式操作系统Tock

    安全嵌入式操作系统Tock Tock是一种用于传感器网络和物联网的安全嵌入式操作系统。Tock是第一个允许多个不受信任的应用程序在基于微控制器的计算机上同时运行的操作系统。Tock内核使用Rust(一种不依赖垃圾回收器的内存安全系统语言)编写。用户空间应用程序在可以用任何语言编写的单线程进程中运行。Tock设计用于在基于Cortex-M和RISC-V的嵌入式…

    RUST资讯 2023年2月22日
    80
  • 去掉炒作和噱头 区块链到底需要怎样的技术人才?

    去掉炒作和噱头 区块链到底需要怎样的技术人才? 区块链虽然早已不是什么新鲜物种,却随着币圈的浮沉,从去年下半年开始彻底成为互联网科技圈的人才抢夺热点。在政策环境尚不明朗的当下,正在招聘技术人员的区块链公司,有的选择蹭热度吸引应聘者,有的选择闷声发大财,招聘和宣传都谨慎行事,三缄其口。曾经靠「炒币」实现财务自由的极端个案,在今天大多已经不可复制。去除「暴富」的…

  • 切粒机及金属分离器

    切粒机及金属分离器 龙门式切粒机特点优化切粒区结构设计,进料平稳,换料清理方便刀具采用钨钢材质,延长切刀使用寿命机体内壁采用防腐、防锈处理结构合理、节省空间、经济适用适用面广,软胶、硬胶都能均匀切粒最佳切刀角度设计,胶粒均匀、粉末少GantrytypegranulatorOptimizationofstructuraldesignpelletizingzon…

  • 可拉伸膜VCI 745

    可拉伸膜VCI 745 概述:RUST-XVCI745可拉伸膜是使用先进的SMP技术制造而成,加速了水分钝化并对所包装的机械设备提供长期的防锈蚀防腐蚀保护。金属设备使用可拉伸膜包装之后,隔离了金属与外界的接触,使得金属免受湿度、水分的影响。可拉伸膜适用于黑色金属和有色金属,整套的包装系统防锈期长达5年。在生产可拉伸膜时,RUST-X加入了特殊的专用添加剂,增…

关注微信