Gopher的Rust第一课:Rust的那些事儿

原文约11300字,阅读约需27分钟。发表于:

本文永久链接 – https://tonybai.com/2024/04/22/gopher-rust-first-lesson-all-about-rust 要说这两年后端编程语言谁最火,Rust说自己第二,没人敢说第一。Rust连续8年霸榜stackoverflow最受推崇的编程语言,甚至被推特之父Jack Dorsey称为“完美的编程语言”: 注:最火:仅代表人气最旺,最受欢迎,但并不代表使用者最多。 如果你经常读我的博客,你可能会问:“你不是Go语言布道师吗?怎么也要转Rust了?”其实不然,学习Rust不是要蹭热度,而是实际开发的需要。这些年在汽车行业这个赛道上,云端和车端都要兼顾。目前车端基础软件的开发语言主要是C/C++,但内存安全、性能不输C且高可靠的Rust日益受到车载软件开发的青睐,AUTOSAR组织在2022年成立了Rust工作组就是一个重要的信号。并且据我所知,一些国内造车新势力已经或正在将一些Rust开发的中间件或应用放到了量产车或即将量产的车上。 注:AUTOSAR (Automotive Open System Architecture) 是一个面向汽车电子系统的开放式软件架构标准,由汽车制造商、零部件供应商和电子供应商共同发起并持续维护的一个全球性标准化组织。 不过,Rust语言在某些领域的崛起确实引发了其他编程语言社区的一些不满和争议。特别是Rust社区的一些人提出“Rewrite Everything in Rust”的观点,让很多编程语言社区,尤其是C++社区十分不安。Go社区则相对更加开放和友好的,主流观点是Go与Rust是可以互补的,两种语言在各自的优势领域发挥作用,通过合作而非对抗的方式,能为开发者提供更好的选择。更多细节,可以参考几年前我曾翻译过的前Go团队产品经理、gohugo的作者Steve Francia联合创作的一篇文章《Rust vs. Go:为什么强强联合会更好》。 也就是说Go依然是我的主力语言,但考虑工作上的需要,我要系统学学Rust了。为了避免“从入门到放弃”,我打算采用边学习边输出的方式,一方面可以督促自己学习,另一方面也希望能和读者及时互动,纠正学习中的错误理解。 我的Go语言第一课专栏广受欢迎,其知识结构想必也是大家认可的,这里我就仿照其形式,写一下学习Rust的第一课这个入门系列。 正如我在Go语言第一课专栏所说的那样:我一直认为,当你开始接触一门新语言的时候,你一定要去了解它的历史和现状。因为这样,你才能建立起对这门语言的整体认知,了解它未来的走向。而且,也能建立起学习的“安全感”,即相信它能够给你带来足够的价值和收益,更加坚定地学习下去。 在这篇文章中,我就先来了解一下Rust的诞生历史和现状发展,以及它独特的设计哲学。并与Go语言做个简单对比,希望能够让自己和读者对Rust有一个初步的认识。 1.1 Rust的历史与现状 1.1.1 Rust的诞生与演进 Rust诞生于2006年,这比Google三巨头“密谋”创建Go语言还要早上一年。不过和Go的三位创始人:图灵奖获得者、C语法联合发明人、Unix之父肯·汤普森(Ken Thompson),Plan 9操作系统领导者、UTF-8编码的最初设计者罗伯·派克(Rob Pike),以及Java的HotSpot虚拟机和Chrome浏览器的JavaScript V8引擎的设计者之一罗伯特·格瑞史莫(Robert Griesemer)相比,Rust之父格雷登·霍尔(Graydon Hoare)的身份和江湖地位却没有那么“显赫”。彼时的他只是Mozilla Research的一位加拿大籍的、不到30岁的开发人员: 注:Graydon Hoare这个人非常低调,极少在公开场合露面,因此在网络上很难找到他的肖像,上面图中的肖像来自https://www.crunchbase.com/person/graydon-hoare,我这里甚至不能保证这个肖像就是Hoare本人的。 新生代编程语言的诞生都伴随着一段轶事,比如Go语言的创始人们在Google内部经常遇到C++项目漫长的编译时间问题,每当他们启动一个C++项目的编译,都要等很长时间,期间都能喝上几杯咖啡。这让他们深有感触并意识到需要设计一门编译速度更快的新语言,于是Go语言就这样诞生了。和Go语言“喝咖啡,等C++项目编译”类似,Rust的诞生也有一段轶事: 2006年,29岁的Hoare有一天回到温哥华的家中,但他发现电梯坏了,电梯软件崩溃了!他不得不爬楼梯回到位于21层的家中。当他爬上楼梯时,他感到很恼火。他想:“我们做计算机编程的人居然无法制造出一部可以正常工作而不崩溃的电梯!” Hoare知道,许多此类崩溃都是由于程序使用内存的问题造成的。电梯等设备内部的软件通常是用C++或C语言编写的,这些语言以允许程序员编写运行速度非常快且相当紧凑的代码而闻名。问题是这些语言也很容易意外引入内存错误,这些错误会导致崩溃。Hoare决定对此做点什么。于是他打开笔记本电脑,开始设计一种新的计算机语言,他希望这种语言能够编写小而快速的代码,而不会出现内存错误,他将其命名为Rust。 这段轶事显然不可考证了。但可以确定的是从2006年开始的若干年里,Hoare创建的个人语言项目Rust并没有真正的用于改善电梯系统的程序,而是在得到了Mozilla的赞助下,用在了持续开发Mozilla的浏览器引擎Servo上了,Mozilla在2010年官宣了该项目,Hoare在2010年的一次演讲中也第一次介绍了Rust语言: Rust开源的第一行代码也是在2010年完成的: 此外,最初的Rust编译器是由OCaml实现的,2011年Rust团队使用Rust基于LLVM重新实现了编译器并实现了自举。同年,Rust也有了自己的LOGO,其设计灵感来自于自行车齿盘: 2012年,Graydon Hoare接受InfoQ专访,谈及他带领Rust team在Mozilla开发的系统编程语言Rust,包括Rust的特性、Rust相对于C/C++/Java/Go的优势与不同以及Rust的1.0版本发布计划。 但是,就在下一年,即2013年,Graydon Hoare就因为精力耗尽而辞去了Rust team的领导职务,离开了自己的Rust team,并从此远离了Rust开发。Hoare的离开对Rust team和语言本身来说是一次重大的损失,但Rust社区和团队采取了积极的措施来确保Rust的持续发展和演进。 2014年11月,Rust官宣了cargo和crates.io,前者是Rust项目构建管理器,后者则是Rust官方维护的Rust代码的中央包存储库,通过cargo可以轻松构建和发布包到crates.io,或从crates.io上拉取Rust代码的依赖。 2015年5月15日,Rust迎来了一个里程碑的时刻:Rust 1.0正式发布! [...]

Rust是一种流行的后端编程语言,以其内存安全性和性能而闻名。它在汽车行业中越来越被用于开发汽车软件。然而,它的崛起也在其他编程语言社区引起了一些争议。Rust的核心价值包括内存安全性、性能和生产力。它在流行度上排名低于Go,但在AWS、华为、谷歌、微软和Meta等公司中的采用率正在增长。Rust在系统编程、Web开发、网络和嵌入式系统等各个领域都有应用。它的设计理念注重内存安全性、性能和生产力。相比之下,Go强调简单性、安全性和可扩展性。

相关推荐 去reddit讨论