用Rust很难编写出糟糕的代码


"坏代码无处不在。Rust让坏代码变得更难。Tangram Vision正在全心全意地拥抱Rust。

嗨,我是布兰登-麦纳尔,Tangram Vision公司的首席执行官和联合创始人,这是一家感知传感器软件创业公司。如果你看一下我的LinkedIn资料,你会看到这个头衔,再加上很多其他的东西,可能会让你相信我对电脑很在行。而且,我确实比大多数人有更多的经验(因此公司的创立)。但我有一个公开的秘密,需要与你分享:

我不是一个好的程序员。

实话说,我也不是...坏程序员。我可以通过编码面试。我已经手工制作了跨越多种语言和机器的巨大资料库,而且我为它们感到非常自豪。

但是,我也写过一些糟糕的代码。一年后我看到这些东西,会低声说:"是哪个白痴干的?"然后慢慢意识到,通过git提交的迷雾,我就是那个白痴。

不仅仅是我写了坏的代码。我的朋友也写过坏代码。我的同事也写过坏的代码。我们的导师也写坏了代码。我们所有的代码所依赖的代码都是由写坏代码的人写的。坏代码无处不在。这是一个公开的秘密,很少有人承认,但对于Tangram Vision来说,这是我们在第一天就想面对的事情。

当我为Tangram Vision勾画路线图时,我知道我们的平台最终将成为无数多传感器系统的基础。这个基础必须是明显的稳固和健全。但我也知道,不管你的工程团队多么有天赋,坏的代码还是会发生。我们需要一种方法来防止自我破坏,同时也保证我们的用户有一个良好的体验。Rust向我们展示了这种方法。

Rust使坏的代码很难写。

我的意思是,它让坏代码真的很难写。当我第一次尝试这门语言时,我发现它让人无限沮丧;我多年来习惯性地写代码的方式被编译器的信息和警告撕碎了。我的自尊心很难承受这种打击。不过,一旦我开始挑剔方法论,我就明白这种语言可以有多强大。

Rust的力量和魔力
根据我的经验,糟糕的代码是嵌入式和传感器系统的头号杀手。

测试很难,而内存管理更难。然而,Rust通过其本身的设计,甚至可以处理最糟糕的嵌入式问题。如果代码可以编译,它的安全性就会得到保证。破坏这一安全规则需要意图,这意味着无论如何要在代码中投入更多的思考。测试、依赖性和剖析都可以毫不费力地处理。而且,最重要的是,不管编译的是什么,都可能是非常快的。这些属性使它成为Tangram Vision的完美语言,在进行了更多的试验之后,我们决定从一开始就在公司层面上采用它。

这种安全保证也为Tangram Vision团队提供了一个隐藏的好处:我们都变得更有冒险精神。

我提到过Rust如何撕裂了我的编码习惯;我这样写代码是因为我知道它可以和其他编程语言一起使用。

我不知不觉地陷入了一个困境,采取了一种 "如果它能运行工作起来,就不要修补它 "的态度。

Rust让我意识到,我的代码实际上并不能工作--至少不是我认为的那样。

不仅如此,现在我用Rust写的任何东西都能保证工作,这意味着我可以自由地写而不受到影响。
这是我在早期的编码生涯中没有遇到过的事情,我可以肯定地说,我的团队也没有遇到过。

过去我们可能一直在争论指针和segfaults,而现在我们争论的是高层次的概念,如和类型、数据流和所有权。

Rust给了我们作为工程师成长的空间,我们对此感激不尽。