未来已来|人工智能与数据库融合发展分论坛议程初探 了解详情
写点什么

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

The Daily Edit

  • 2022-06-26
  • 本文字数:2899 字

    阅读完需:约 10 分钟

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

本文最初发布于 The Daily Edit 博客。

 

在 The Daily Edit,我们有一个小而敏捷的团队,每周都会推出新产品。虽然产生这种节奏的原因有很多,但有一个技术选择提供了很大的帮助,那就是只要可能就使用 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 这种相对小众的语言时,其中一个主要的顾虑是人才库的规模可能太小。问题是,真正的世界级人才关心的是他们能够使用什么工具实现什么想法。

 

是时候试试水了。我们联系了 This Week in Rust 通讯,刊登了我们的招聘信息。我们是一家偏远地区的公司,我们不关心工程师住在哪里。真是幸运,来自 Twitter 的 Jack Dorsey 在推特上说:“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 就像是一种超能力。

 

在下一篇文章中,我们将讨论使用 Rust 的一些缺点。

 

查看英文原文:Why Rust is a great choice for startups

 

2022-06-26 22:038324

评论 4 条评论

发布
用户头像
初创公司基本上都是php呀!文档多,开源多,二次开发快。这文章不是瞎扯吗
2022-07-03 18:04
回复
用户头像
Infoq是退步了么
2022-06-29 19:41
回复
用户头像
居然全盘不提 PHP
2022-06-28 09:05
回复
用户头像
居然全盘不提 go
2022-06-27 08:36
回复
没有更多了
发现更多内容

Dimitra荣获Web3 & Blockchain企业精神奖,有望成Web3农业领导品牌

EOSdreamer111

【运营宝典】华为分析服务如何助力广告投放策略优化?

HMS Core

HMS Core

Force佛萨奇合约系统开发|原力元宇宙2.0

薇電13242772558

智能合约

数据库挖矿系列-优化器设计探索穿越之旅

阿里技术

数据库

Meetup No.8 回顾 | OpenMLDB + MaxCompute:集成打通云上生态,高效构建 AI 应用

第四范式开发者社区

人工智能 数据库 开源 时序数据库 特征

融合内存计算和分布式计算 数据智能分析处理平台RapidsDB更快、更简单、性价比更高

科技热闻

Dimitra荣获Web3 & Blockchain企业精神奖,有望成Web3农业领导品牌

股市老人

专访 | 刘乔升:开源是人类智力劳动最好的组织形式

第四范式开发者社区

人工智能 机器学习 数据库 开源 时序数据库

柏睿数据融合数据联邦+AI 打造更快、更简单、性价比更高的数据智能分析处理平台

科技热闻

澜舟2022年度产品发布,抢鲜看!

澜舟孟子开源社区

人工智能

Zebec获BNB Chain生态大力支持,ZBC通证将陆续登录一线平台

鳄鱼视界

OpenMLDB 社区月报 | 2022年11月

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

花费半个月啃完这份滴滴Redis核心手抄本,我终于把面试官按在地上摩擦了

程序知音

Java 数据库 redis 后端技术

6个实用技巧,让你快速入门数据集成平台,成倍提升工作效率

Apache SeaTunnel

技术分享 数据同步 数据集成 Meetup 开源项目介绍

如何基于 APISIX 迭代数字智联平台

API7.ai 技术团队

api 网关 Apache APISIX 用户案例

【计算讲谈社】第十四讲|从学科融合走出的数字人,是技术变革还是应用创新?

大咖说

阿里云 吴翰清 数字人 元宇宙游戏

PingCAP 成为中国唯一入选 Forrester Wave 数据库厂商,被评为卓越表现者

PingCAP

TiDB

圆桌实录:技术无感化成为 2023 年最值得开发者和企业用户关注的技术趋势丨PingCAP DevCon 2022

PingCAP

数据库·

【MyBatis】mybatis中#{}与${}的区别

No8g攻城狮

MySQL mybatis sql

cleanmymac2023体验版功能讲解

茶色酒

CleanMyMac CleanMyMac X2023

列存引擎 Tianmu 如何实现 Delete?| StoneDB 研发分享 #3

StoneDB

MySQL HTAP 数据库· StoneDB 12 月 PK 榜

基础设施 NFTScan 正式发布 Cronos 网络 NFT 浏览器

NFT Research

区块链 NFT 数据基础设施

一个多开发虚拟环境的命令行工具——asdf

DisonTangor

Python ruby

跬智信息(Kyligence)荣获浦东新区人工智能创新应用大赛一等奖

Kyligence

大数据 人工智能创新应用大赛

CleanMyMac试用版4.12.1下载教程

茶色酒

CleanMyMac X CleanMyMac X2023

CleanMyMacX2023免费版Mac清理软件

茶色酒

CleanMyMacX

活动预告 | 2022 中国开源开发者(北京)峰会

第四范式开发者社区

人工智能 机器学习 数据库 特征

如何用纯css代码实现太极阴阳鱼动画效果

千锋IT教育

从源码到架构实战,Spring Boot+Spring Cloud微服务开发笔记全分享

小小怪下士

Java spring 微服务 springboot SpringCloud

Apache APISIX 玩转 Tongsuo 国密插件

API7.ai 技术团队

加密 api 网关 Apache APISIX

【Meetup 明天见】OpenMLDB + MaxCompute:集成打通云上生态,高效构建 AI 应用

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

为什么 Rust 是初创公司的绝佳选择_语言 & 开发_InfoQ精选文章