阅读本文大概需要 5 分钟。
【CSDN 编者按】创业公司在选择编程语言时往往压力很大,尤其在考虑选择相对小众的新语言时。不仅需要考虑编程语言本身的语法、性能,还需要关注其对人才的吸引力。然而,这家创业公司最终的选择是Rust。快来看看他们的使用体验吧!
原文链接:https://dailyedit.com/blog/why-rust-is-a-great-choice-for-startups/
声明:本文为 CSDN 翻译,转载请注明来源。
我们是一支短小精悍的团队,每周都会发布一些新东西。虽然我们如此高效的原因有很多,但其中之一便是我们在技术上的选择给予了很大的帮助。我们会尽可能使用Rust,因为这种编程语言能够让我们快速而自信地完成公司的使命。
想当初,这个项目刚启动的时候,我们只有三个成员。我是团队中唯一的工程师,因此我可以自由地选择语言和工具。虽然听起来很不错,但其实我的压力很大。除了机器学习部分明显应该选择Python之外,其他一切都悬而未决。我们应该选择平庸的Java?还是应该选择拥有强大社区的Python?还是应该使用JavaScript,因为这种语言几乎可以编写一切软件?
每个备选项都有一定的利弊,所以我一直在原地打转。打破无限循环的是一个简单的问题:选择哪种编程语言会吸引优秀的人才,让我们更自信、更频繁地发布产品?
于是,我们选择了Rust,如今虽然我们的项目已走向成熟,但Rust仍然是我们成长和成功的驱动力。
1
在职业生涯的发展过程中,我曾涉足过很多编程语言、编辑器、工具以及方法论。1994年,我开始尝试QBasic和MS-DOS自带的游戏Gorillas。后来很快接触到C,并开始在Unix平台上工作。后来又陆续学习了 C++、Python、PHP、Ruby,当然还有 JavaScript。其中一些只是为了好玩,尤其是在年轻的时候,喜欢尝试各种编程语言。
2015年,我听说了Rust,然后开始尝试。朋友一直说Rust的语法非常出色,但我表示怀疑,因为我像许多其他人一样,认为C才是最好的系统语言,因为它是如此简单和易于推理。
直到我开始使用 Rust。
很快我的怀疑就消失了,实际上我在使用C语言的时候犯了很多错误,比如内存泄漏、内存释放之后再使用等,当用C语言构建小程序的时候,感觉不到太大问题,但是当你开始使用库,将指针传递给其他黑盒子时,一切都会变得混乱起来。Rust让我认识到,我的编程水平并没有想象中那么高。编译器就像一个顽固的模拟器教练,无论你做得多么好,都得不到它的认可。我在“borrow checker”的阶段陷入了苦战,就好像脚趾踢到了墙角,痛彻心肺。
但这种感觉很快就过去了。
我前后花了大约3个月的时候,就适应了Rust。后来,我开始使用Rust编写更复杂的系统,例如具有异步行为的分布式作业队列,与 FPGA 接口的嵌入式系统,逐渐地我开始感受到Rust的强大之处。使用Rust就像健身一样,你必须勤加努力才能感受到效果。在这些项目之后,我并没有遇到太多烦人的编译器,而且代码的组织在任何项目的早期就能看得很清晰。这就是Rust,虽然有点不讨喜,但确实能帮助你构建优秀的架构。
但Rust最大的优势还不在于此。
最大的优势是,在构建庞大而复杂的系统,同时顺利通过编译器后,得到的二进制文件就能正常工作,而且能保证一直正常。Rust项目所需的调试量比我在其他任何地方看到的要少一个数量级。你可以使用带有标记的联合体(Rust 的枚举)之类的功能,编写清晰的代码。这让我对部署的信心大增。其次,任何项目都有定期的更改和维护。通常,新进公司的工程师都需要花费大量时间,深入研究代码。然而,熟悉Rust的代码非常容易,如果新来的工程师以奇怪的方式修改现有代码,编译器就会指出来。
2
如今Rust的发展已步入全盛时期,很多博客文章都点名表扬,当然也有很多博客文章揭露了它的缺点。这是一个很好的现象,这意味着使用Rust的人很多。虽然我很喜欢Rust,但其他工程师呢?我们选择Rust这样相对小众的语言,最大的忧虑在于人才库的规模可能太小。世界顶级的人才他们如何看待Rust,他们会选用哪种工具?
这个问题就像小马过河,需要亲身实践。于是,我们联系了Rust的新闻邮件,并发布了招聘启事。我们是一家远程办公的公司,我们不在乎工程师选择住在哪里。幸运的是,Jack Dorsey在推特上写道:“Rust 是一种完美的编程语言”。
在接下来的八周里,我收到了近四千名申请人的电子邮件。四千!其实,很多人并没有Rust的经验,只不过他们都对Rust感兴趣。突然之间,我感觉自己拥有一支世界级的工程团队。
看来我们对 Rust 人才库的担忧是不必要的。这是一种对程序员有很大吸引力的编程语言。
3
实际使用Rust
我们决定尽可能在一切地方使用Rust。现在我们的 Web 后端是用 Rust 构建的,后台任务处理器也是用Rust编写的,就连分析引擎的调度程序也是Rust。但有些地方没有使用Rust,因为这些领域有很多伟大的库,但Rust生态系统尚不存在。还有移动应用,我们使用的是Flutter。
人们常说,Rust 的缺点之一是语法过于冗长,阅读和编写都需要很长时间。这话虽然没错,但有一些也不过是夸大其词。例如,在我们的整个代码库中,手动写注释的情况也就十几次。这种情况在应用程序代码中并不常见。
使用Rust,前期的准备工作更多。你需要克服编译器的一堆约束。然而,虽然经验的增加,编写代码的速度会越来越快。我们在短短几周的时间里,就取得了很大进步,工作的速度也越来越快。我们团队一致认为理解Rust代码的难度远低于许多其他语言。Rust代码中的疑惑与模糊性很少,只需阅读代码,你就能确切地知道程序将要做什么。
我们的工程师团队非常给力,代码的迭代速度非常快。我们决定使用Rust代码重新编写一个完整又复杂的模块,而且我们确信通过编译后就能正常工作。有时我们的逻辑会出错,或者我们对问题的理解不完全正确,但这些是无论使用何种语言都会遇到的问题,但如果是需要投入生产的任务,则使用Rust可以让我们更快地完成工作。
使用Rust编写代码,不仅需要的工程师更少,而且发展更为长远。
4
Rust的速度非常快,甚至比Python、Ruby、JavaScript 和 Java 快几个数量级。
对于创业公司而言,高性能意味着所需的服务器更少,相应的运营开销也更低。作为一家创业公司,如果你需要花钱构建每秒只能支持几百个请求的Web服务器,那么很快你的资金就会枯竭。
也许有人会反驳说,“工程师时间比计算机时间更珍贵”,话虽没错,但使用Rust还可以节省工程师的时间,一举两得何乐而不为。
5
我不是创业公司的顾问。
正如本文开头的介绍,为创业公司选择编程语言的压力很大,尤其是选择一种相对比较小众的新语言,我也是诚惶诚恐。不过,根据迄今为止使用 Rust 的经验来看,我们不想再尝试其他任何语言。虽然Rust的入门有点难度,但回报也非常丰厚。
而在经验丰富的团队手中,Rust就会变成一种超能力。
我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《Go语言编程之旅》、开源图书《Go语言标准库》等。
坚持输出技术(包括 Go、Rust 等技术)、职场心得和创业感悟!欢迎关注「polarisxu」一起成长!也欢迎加我微信好友交流:gopherstudio