讲动人的故事,写懂人的代码
2024年3月26日,谷歌安卓部门的编译器和运行时团队负责人Lars Bergstorm在英国伦敦的Rust Nation UK技术大会上,跟大家分享了他们的团队几百名工程师在几年内用Rust重写了几十个C++和Go系统的六点心得哦。
自从我们用Rust重写了C++系统之后,我们发现程序员的生产力至少翻了一番哦。
我们在统计程序员生产力的时候,可不是用那些不靠谱的代码行数作为标准的。我们是采用了更有说服力的程序员匿名问卷调查的方式,就像图1所示的那样。
重写Go系统成Rust后,我们发现程序员的效率没下降,反而让系统更省内存,出错更少,真棒!
记得在2014年,Dropbox这家云文件托管服务的公司,因为他们用Go语言写的系统占用内存太多了,就决定用Rust写了一个占内存更少的系统,就像图2所示的那样。
你知道吗,Figma公司在2016年前后,开发了一款协作式用户界面设计工具。但是,因为用TypeScript写的服务器表现得不太给力,他们就决定用Rust重写,这样就大大提升了性能。就像图3展示的那样。
2023年左右,用Rust写的Python包安装器和解析器工具uv,主打的就是速度超快,就像图4那样。
85%的谷歌程序员觉得,和其他编程语言相比,Rust代码的准确性更胜一筹。看看图5就知道了。
谷歌的安全团队告诉我们,他们已经用Rust开发了3年的系统级组件Keystore咯,这个需要满足高并发需求的中等规模的系统,基本上是无懈可击的呢!如图6。
大家在2024年开始真心认同Rust这个编程语言,因为它在内存管理上超级安全,而且提高了编程的效率。
就在2023年9月,网络安全和基础设施安全局(CISA)发了篇文章,告诉大家内存安全漏洞在软件里有多重要,然后说了软件制造商得先考虑内存安全编程。
微软在博客文章里也说了,“每年我们发现的漏洞(CVE,常见漏洞和暴露)中,大概有70%都是关于内存安全的问题。”
谷歌也说了差不多的事,“我们在Chromium项目中发现的严重安全漏洞中,大约有70%是内存安全问题。”
Mozilla的报告里也有同样的发现,在他们分析的安全漏洞中,“在34个严重的错误里,有32个都跟内存有关。”
这篇文章还说了,除了C/C++,大部分的现代编程语言都很注意内存安全,这样就降低了出现内存安全漏洞的机会。
最后,文章还大赞了Rust的成功。Rust是一种重视速度和内置内存安全的编程语言,已经被亚马逊、脸书、谷歌和微软这些大公司广泛使用。就像图7所示。
2024年2月,w h i t e h o u s e官网搞了一篇文章,说技术圈子里得赶快用内存安全的编程语言,这样才能降低网络安全威胁。看看图8。
历史上有一些真的让人头疼的网络事件——像1988年的Morris蠕虫病毒、2003年的Slammer蠕虫病毒、2014年的Heartbleed漏洞、2016年的Trident漏洞,还有2023年的Blastpass漏洞——这些都是一些相当恶劣的网络攻击,把我们依赖的系统搞得一团糟。
这些问题背后的罪魁祸首其实就是:内存安全漏洞。这个问题已经困扰我们的数字生态系统整整35年了。
超过一半的谷歌程序猿们都觉得,Rust这个编程语言比其他的更好审查代码哦。就像图9那样。
比如说,在C++代码中,代码的逻辑经常跨越多个函数,调试的时候都是写log,状态机就混在操作码中。
但是在Rust代码中,状态机会直接编在dispatch循环里,还用enum来让编译器确保所有情况都处理过了。
再比如,C++代码通常有复杂的控制流,还有那些可怕的std::move()和macro notes。
但是,Rust代码就有整洁的错误处理,还有模式匹配可以确保所有情况都被处理,包括以后新增的情况。
你知道吗?67%的谷歌程序员在学习2个月后,都能熟练使用Rust编写生产代码,真是厉害,就像图10所展示的那样。
33%的谷歌的程序猿们在学了2个月之后,都能把Rust用得跟他们之前最厉害的编程语言一样得心应手了。就像图11那样。
总的来说,就在2024年3月的Rust Nation UK技术大会上,谷歌的小伙伴们分享了他们使用Rust代替C++和Go的小故事。他们发现,用了Rust以后,程序员们工作起来就像喝了红牛一样,效率比C++翻了一番,系统用的内存更少,性能更强,错误也少了。85%的谷歌程序员觉得Rust写的代码比其他的都准确。而且,超过一半的谷歌程序员觉得Rust的代码看起来更轻松。学了两个月以后,67%的谷歌程序员已经能用Rust写出漂亮的代码,33%的程序员甚至觉得Rust跟他们最擅长的语言一样好用。这些都说明了Rust在内存管理和写代码效率上有多么牛。
Rust官网推荐的Steve Klabnik和Carol Nichols所写的Rust书《Rust权威指南》我正在读。写得很接地气。可以找来一睹为快。
如果喜欢我的观点,期待你的点赞、在看和转发。
如果你不喜欢,留个言告诉我哪里不喜欢~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。