前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2024年谷歌工程师Rust心得:重写C++和Go系统的6大经验

2024年谷歌工程师Rust心得:重写C++和Go系统的6大经验

原创
作者头像
程序员吾真本
发布2024-04-09 09:49:20
4130
发布2024-04-09 09:49:20
举报

讲动人的故事,写懂人的代码

2024年3月26日,谷歌安卓部门的编译器和运行时团队负责人Lars Bergstorm在英国伦敦的Rust Nation UK技术大会上,跟大家分享了他们的团队几百名工程师在几年内用Rust重写了几十个C++和Go系统的六点心得哦。

1 用Rust后生产力更高

自从我们用Rust重写了C++系统之后,我们发现程序员的生产力至少翻了一番哦。

我们在统计程序员生产力的时候,可不是用那些不靠谱的代码行数作为标准的。我们是采用了更有说服力的程序员匿名问卷调查的方式,就像图1所示的那样。

图1 自从我们用Rust重写了C++系统之后,我们发现程序员的生产力至少翻了一番
图1 自从我们用Rust重写了C++系统之后,我们发现程序员的生产力至少翻了一番

2 用Rust后内存更省

重写Go系统成Rust后,我们发现程序员的效率没下降,反而让系统更省内存,出错更少,真棒!

记得在2014年,Dropbox这家云文件托管服务的公司,因为他们用Go语言写的系统占用内存太多了,就决定用Rust写了一个占内存更少的系统,就像图2所示的那样。

图2 Dropbox因为用Go语言写的系统占用内存太多了,就决定用Rust写了一个占内存更少的系统
图2 Dropbox因为用Go语言写的系统占用内存太多了,就决定用Rust写了一个占内存更少的系统

3 用Rust后性能更高

你知道吗,Figma公司在2016年前后,开发了一款协作式用户界面设计工具。但是,因为用TypeScript写的服务器表现得不太给力,他们就决定用Rust重写,这样就大大提升了性能。就像图3展示的那样。

图3 Figma公司觉得用TypeScript写的服务器有点慢,所以决定用Rust重写,这样性能就上去了
图3 Figma公司觉得用TypeScript写的服务器有点慢,所以决定用Rust重写,这样性能就上去了

2023年左右,用Rust写的Python包安装器和解析器工具uv,主打的就是速度超快,就像图4那样。

图4 uv的主打特点,就是飞快的速度哦
图4 uv的主打特点,就是飞快的速度哦

4 用Rust后bug更少

85%的谷歌程序员觉得,和其他编程语言相比,Rust代码的准确性更胜一筹。看看图5就知道了。

图5 和其他编程语言相比,85%的谷歌程序员都认为,Rust代码的正确性要好得多呢!
图5 和其他编程语言相比,85%的谷歌程序员都认为,Rust代码的正确性要好得多呢!

谷歌的安全团队告诉我们,他们已经用Rust开发了3年的系统级组件Keystore咯,这个需要满足高并发需求的中等规模的系统,基本上是无懈可击的呢!如图6。

图6 谷歌的安全团队已经用Rust把我们的Keystore搞得稳如磐石了,这个系统得应付高并发需求,已经开发了3年,现在基本无懈可击哦
图6 谷歌的安全团队已经用Rust把我们的Keystore搞得稳如磐石了,这个系统得应付高并发需求,已经开发了3年,现在基本无懈可击哦

大家在2024年开始真心认同Rust这个编程语言,因为它在内存管理上超级安全,而且提高了编程的效率。

就在2023年9月,网络安全和基础设施安全局(CISA)发了篇文章,告诉大家内存安全漏洞在软件里有多重要,然后说了软件制造商得先考虑内存安全编程。

微软在博客文章里也说了,“每年我们发现的漏洞(CVE,常见漏洞和暴露)中,大概有70%都是关于内存安全的问题。”

谷歌也说了差不多的事,“我们在Chromium项目中发现的严重安全漏洞中,大约有70%是内存安全问题。”

Mozilla的报告里也有同样的发现,在他们分析的安全漏洞中,“在34个严重的错误里,有32个都跟内存有关。”

这篇文章还说了,除了C/C++,大部分的现代编程语言都很注意内存安全,这样就降低了出现内存安全漏洞的机会。

最后,文章还大赞了Rust的成功。Rust是一种重视速度和内置内存安全的编程语言,已经被亚马逊、脸书、谷歌和微软这些大公司广泛使用。就像图7所示。

图7 CISA发了一篇文章,让我们知道内存安全漏洞在软件中是多么的重要,他们也提醒软件制造商应该把内存安全编程放在首位
图7 CISA发了一篇文章,让我们知道内存安全漏洞在软件中是多么的重要,他们也提醒软件制造商应该把内存安全编程放在首位

2024年2月,w h i t e h o u s e官网搞了一篇文章,说技术圈子里得赶快用内存安全的编程语言,这样才能降低网络安全威胁。看看图8。

图8 w h i t e h o u s e官网发了篇文章,聊到了技术圈子很需要用内存安全的编程语言来降低网络安全威胁呢
图8 w h i t e h o u s e官网发了篇文章,聊到了技术圈子很需要用内存安全的编程语言来降低网络安全威胁呢

历史上有一些真的让人头疼的网络事件——像1988年的Morris蠕虫病毒、2003年的Slammer蠕虫病毒、2014年的Heartbleed漏洞、2016年的Trident漏洞,还有2023年的Blastpass漏洞——这些都是一些相当恶劣的网络攻击,把我们依赖的系统搞得一团糟。

这些问题背后的罪魁祸首其实就是:内存安全漏洞。这个问题已经困扰我们的数字生态系统整整35年了。

5 用Rust后代码更易评审

超过一半的谷歌程序猿们都觉得,Rust这个编程语言比其他的更好审查代码哦。就像图9那样。

图9 超过一半的谷歌程序猿都觉得,Rust代码比其他编程语言要容易审核多了呢!
图9 超过一半的谷歌程序猿都觉得,Rust代码比其他编程语言要容易审核多了呢!

比如说,在C++代码中,代码的逻辑经常跨越多个函数,调试的时候都是写log,状态机就混在操作码中。

但是在Rust代码中,状态机会直接编在dispatch循环里,还用enum来让编译器确保所有情况都处理过了。

再比如,C++代码通常有复杂的控制流,还有那些可怕的std::move()和macro notes。

但是,Rust代码就有整洁的错误处理,还有模式匹配可以确保所有情况都被处理,包括以后新增的情况。

6 掌握Rust至少要学2个月

你知道吗?67%的谷歌程序员在学习2个月后,都能熟练使用Rust编写生产代码,真是厉害,就像图10所展示的那样。

图10 就两个月的学习,已经有67%的谷歌程序员能轻松地用Rust编写生产代码啦!
图10 就两个月的学习,已经有67%的谷歌程序员能轻松地用Rust编写生产代码啦!

33%的谷歌的程序猿们在学了2个月之后,都能把Rust用得跟他们之前最厉害的编程语言一样得心应手了。就像图11那样。

图11 学习了两个月后,33%的谷歌程序员已经可以用Rust编程像用他们最擅长的语言一样高效了
图11 学习了两个月后,33%的谷歌程序员已经可以用Rust编程像用他们最擅长的语言一样高效了

总的来说,就在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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 用Rust后生产力更高
  • 2 用Rust后内存更省
  • 3 用Rust后性能更高
  • 4 用Rust后bug更少
  • 5 用Rust后代码更易评审
  • 6 掌握Rust至少要学2个月
相关产品与服务
腾讯问卷
腾讯问卷是专业的在线问卷调查平台,支撑了腾讯核心业务的?户、市场、产品研究工作。平台提供基于数据收集的专业调查研究解决方案,覆盖问卷调查、信息上报、在线测评、在线考试、360度评估、投票打卡等工作场景,致力于为客户提供高效的洞察决策工具。同时平台还拥有超百万级的真实样本用户,可以提供高效、精准的问卷有偿投放服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档


http://www.vxiaotou.com