点击上方蓝字关注我们
理清头脑混沌,觉醒心智天地
对 Rust 语言感兴趣,但被网上的各种评价 Rust 语言的观点和看法所困扰,到底 Rust 语言是什么样的一门语言呢?那么看本文就对了。 因为问题比较多,所以这是一个系列,争取每篇文章回答五个问题,目前大概需要三篇就可以回答完。
本文为系列的第一篇文章,试图解答以下问题中的前五个,如果你感兴趣的问题不在其中,请回复评论。
要回答好这些问题并不容易,但是这些问题的答案,至少可以帮你指明一个方向。
Rust 创造者们是一群什么样的人?
Rust 最早是由 Mozilla 工程师 Graydon Hoare(https://github.com/graydon) 于 2006 年开始开发的。后来提交给了 Mozilla ,2010年对外公布过 0.1.0 版本,最早由 Ocmal 语言编写。
InfoQ 在 2012 年 专访过 Graydon (https://www.infoq.cn/article/2012/10/interview-rust )。 也是同年早期,因为 InfoQ 采访了Rust 语言团队,而当时由 JS 之父 Brendan Eich 担任 Mozilla CTO ,当时 Graydon 受他领导,可能被一些读者解读为:JS 之父发明的新语言 Rust。然而,JS 之父确实为 Rust 贡献了几十行代码,但Rust语言的创造者必须是 Graydon。JS 之父也在同年离开了 Mozilla。
为什么?因为是 Graydon 的理念诞生了 Rust 这门语言。如果你去看 Graydon 那篇采访稿,你就会知道。作为职业编译器工程师的 Graydon,看到了互联网的未来是安全和性能并重,并且他熟悉很多优秀编程语言的特性,他想把这些优秀语言特性融合到一门语言中。是他的这种理念创造了 Rust。
Graydon 在 2015 年 Rust 1.0 发布前期高调宣布(于 Reddit)离开 Rust 团队。他自称累了,不想当技术Leader,只想开开心心写代码。后来去了苹果 Swfit 团队,现在应该已经离开了苹果,自己创业了吧。
在 Graydon 身边,还有一群优秀的人:以 Niko 为核心的语言核心团队的人。可以在Rust官网 Governance 页面看到 Rust 语言各个团队的成员信息:https://www.rust-lang.org/governance 。在这个页面上,你也可以看到曾经为 Rust 效力的前队员。然而,Graydon 却没在其中,但社区的人们是不会忘记他的。在 GitHub 上的一些Rust 语言特性,现在 Graydon 偶尔也会参与讨论。
2020 年 8月,Mozilla 大裁员。因为疫情导致经济下滑,Mozilla改变了战略。将 Servo 团队的成员全部裁掉,并且也包含了 Rust 团队的部分 Mozilla 员工。其中包括了 Rust 编译器团队的Leader之一 Felix Klock。
2020 年 11月底,亚马逊在其官网博客高调宣称招聘了 Felix Klock。但是很多国内媒体,包括一些自媒体,把 Felix Klock 解读为 Rust 语言创造者。然而,Felix 只是编译器团队Leader,他只是不领 Mozilla 的工资,但是依然还在 Rust 编译器团队中。所以,不要被网上的那些谣言给带偏了。要学习 Rust,就要自己亲自了解下 Rust 语言及其生态信息。
Rust 基金会目前也在积极筹备中,据说放在了瑞士,Rust 未来可期。
Rust 是一门什么样的语言?
Rust 是一门同时注重安全和性能的通用编程语言。
Rust 官网的口号是:
A language empowering everyone to build reliable and efficient software.
Rust 语言从语言层面去保证了程序的正确性,并且基于类型安全的类型系统,专门为内存安全和并发安全做了所有权语义模型。可以让开发者在编译阶段就能识别出内存不安全和线程不安全的错误。
然而,这也造就了 Rust 语言的高学习曲线。因为在Rust语言出现之前,绝大多数开发者并没有受过专门的安全编程规范。Rust 编译器内建的各种安全检查规则,配合Rust语言的所有权语义,就像是一个拦路虎,阻挡着每个没有掌握 Rust 安全编程模型的开发者。
这也是很多 C++ 开发者诟病 Rust 的原因之一,因为 Rust 的安全模型成为了很多开发者的”心智负担“。到底是不是“心智负担”,见仁见智吧,至少我并不这样认为。因为安全之根在于「人」,有人的地方就有Bug。Rust 语言给开发者带来的「心智安全模型」是为了辅助开发者在编译期就发现问题,这是必须付出的成本。前期付出一定的学习成本,总要好过为内存不安全问题付出惨痛的代价。
至于「高效」不仅仅是指性能。Rust可以写出媲美C/C++的高性能代码,而且 Rust 也拥有着媲美像 Ruby /Python 这些高级动态语言的开发效率。当然,这是开发者在掌握了Rust语言安全模型之后才能体现出来的。
Rust 高效的开发效率体现在多个方面:
1. Rust 语言本身所具备的优秀的工程能力。
2. Rust 语言现代化的开发工具链。
3. Rust 语言强大的类型系统和显式的语义,可以让开发者实现高效且无麻烦的代码重构。
总之,一句话:Rust 语言是兼备安全和性能,且拥有高抽象表达力的现代化语言。
Rust 语言的哲学可以总结为:
1. 内存安全为第一原则。
2. 在不违反第一条原则基础上,做到不牺牲性能。
3. 做到语义层面的高度一致性。
4. 在做到安全和性能的基础上,开发者的人体工程学(开发体验)至上。
5. 语言特性必须保持实用。
6. 提供详尽的文档和学习资料。
7. 开放和谐的社区也是语言的一部分。
学习 Rust 语言需要高智商吗?
智商正常的人,都可以学习 Rust。
学会Rust也不代表你一定是高智商。
但学会Rust,代表你是一名合格的程序员了,掌握了一定的安全编程基础。
掌握 Rust 并不能给你带来智商优越感,但一定会让你重新爱上编程。
Rust 是 Better C++ 吗?
Rust 语言刚发布的时候,很多人拿 Rust 和 C++ 比较。因为 Rust 语言不管是语法,还是应用领域,都和 C++ 有得一比。
但 Rust 并不是 Better C++。如果用一个更确切的描述来形容,那 Rust 应该是 「新时代的 C 语言」。
每个语言背后都是一个时代。
上世纪70年代,C语言、ML语言等奠定了编程语言范式。C语言伴随着 Unix/Linux 操作系统一路高歌。
上世纪80年代,C++语言带着 C with Class 的标签诞生。C++ 走向的是一个高度注重开发人员生产力的时代,90年代。
90年代诞生了不少高开发效率语言。并且号称纯函数式编程语言的Haskell也诞生了。面向对象语言和函数式编程语言两大编程范式语言都得到了长足发展。
在20世纪末,系统软件通常使用C(或之前的“现代” C ++)构建。 因为它们的语义紧密地反映了CPU的使用方式,所以这些语言产生了精简的高性能系统。 为了提高效率而付出的代价是冒着安全漏洞的风险,例如缓冲区溢出,这使我们的关键系统容易受到恶意行为者的攻击。
21世纪初,随着互联网的发展,学术和企业都意识到了安全的重要性。2001年,Trevor Jim(AT&T研究公司)和Greg Morrisett(康奈尔公司)发起了一个联合项目,以开发C编程语言的安全方言,这是早期有关Typed Assembly Language的成果。经过五年的努力和一些已发表的论文,该团队(包括Dan Grossman,Michael Hicks,Nik Swamy和其他人)于 2006 年发布了Cyclone 1.0。 在 Cyclone 看来,不安全的程序应该很难编写,不能编译,并且在运行时遇到安全违规时会恐慌。也是同年,Rust语言的创造者,Graydon 受 CyClone 的启发,创立了 Rust 语言。
从现在来看, CyClone 的安全模型和 Rust 核心思想是非常吻合的:
从上面对 Rust 的“考古”中,我们看得出来,Rust其实更像是对 C 语言的一种重新实现。而这种实现,是为了满足新时代安全和性能并重的需求。在未来,安全并不是仅仅是一个可选项。
综上所述,说 Rust 是 Better C++,并不是一个严谨的说法。Rust 更像是一个开启新的时代的通用的 “C” 语言。
Rust 学习曲线高吗?
首先,Rust的学习曲线是有的。因为前面提到了,Rust的安全编程模型是每个开发者必须要掌握的心智模型。
其次,不同编程语言基础的人,掌握这个心智模型的学习曲线都不同。为此我列了下面的脑图:
感谢阅读
本系列未完待续,下一篇要解答的五个问题:
如果喜欢本文,就点个赞再走吧!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有