下载APP
登录
关闭
讲堂
部落
算法训练营
前端进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者

第177期 | 深受程序员喜爱的Rust(上)

2020-01-07 池建强

讲述:池建强

时长07:51大小6.30M

你好,这里是卖桃者说,今天跟你聊聊一门在程序员中待遇颇为两级分化的语言,Rust。
2019 年早些时候,Stack Overflow 发布了他们的年度开发者报告,面向将近 9 万名开发人员进行了最全面的调查。报告中一个很有意思的数据是 Rust 一骑绝尘,打败一众编程语言,夺得了“最受程序员喜爱的编程语言”这个称号,而且这已经是 Rust 第四年蝉联这个荣誉了。但与此同时,在最常用的编程语言这个调查中,Rust 连前 20 都没挤进去,只排在了第 21 位,说一声它是小众语言也毫不为过了。
那么,Rust 究竟是一门怎样的语言,为什么在程序员中的待遇会如此两级分化呢?这其实可以从 Rust 的诞生说起。
最初,Rust 是 Mozilla 公司员工 Graydon Hoare 的私人项目。Hoare 是一名职业的编程语言工程师,他的日常工作就是给其他的语言开发编译器和工具集,但并不会参与背后的设计工作。老干这种活儿,自然而然的,Hoare 就萌生了开发一门编程语言的想法,这门语言就是 Rust。
2006 年,Hoare 开始在业余时间设计并开发 Rust 的早期版本。任何一门新技术的诞生,都是为了解决某些问题,Rust 也不例外。
自操作系统诞生以来,系统级主流编程语言从汇编语言到 C 到 C++,已经发展了近 50 个年头,但依然存在两个难题:
很难编写内存安全的代码;
很难编写线程安全的代码。
这两个难题存在的本质原因是 C/C++ 属于类型不安全的语言,它们薄弱的内存管理机制导致了很多常见的漏洞。其实 20 世纪 80 年代也出现过非常优秀的语言,比如 Ada 语言。Ada 拥有诸多优秀的特性:可以在编译期进行类型检查、没有 GC 式确定性内存管理、内置安全并发模型、无数据竞争、系统级硬实时编程等。但它的性能和同时期的 C/C++ 相比确实是有差距的。那个时代计算资源匮乏,大家追求的是性能。所以,大家都宁愿牺牲安全性来换取性能。这也是 C/C++ 得以普及的原因。
但随着硬件演进的速度不断加快,Hoare 认为,未来的互联网除了关注性能,一定还会高度关注安全性和并发性,以前那些青睐于 C 和 C++ 的设计方式将会不断的发生改变。
基于这样的认知,Hoare 在设计时对 Rust 的期望是:性能可以和 C/C++ 媲美,还能保证安全性,同时可以提供高效的开发效率,代码还得容易维护。
可以说,Rust 诞生之初就是奔着 C/C++ 去的,Hoare 在一次采访中就曾说过:
纵观周围,大部分堆栈级的系统代码都是用 C 或者 C++ 编写的,而那正是我们的目标所在。同时,我们的目标人群正是那些纠结的 C/C++ 程序员,实际上就是我们自己。如果你也和我们一样,不断重复地迫使自己因为 C++ 的高效和部署特性而选择它来进行系统级的开发,却又希望可以编写一些更加安全而省心的程序的话,希望我们可以给你一些帮助。
正是因为 Hoare 以这种观点作为基石,才使得今天的 Rust 成为了一门同时追求安全、并发和性能的现代系统级编程语言。
但一个人利用业余时间完善一门编程语言是非常困难的,于是,Hoare 在自己设计和开发 Rust 一段时间后,下定决心向他当时的项目经理展示自己的成果。当时,Mozilla 的核心产品 Firefox 背后有着 400 多万行 C++ 代码,也在面临着各种漏洞带来的安全威胁。一看 Hoare 的项目,主管非常惊喜,小伙子想法不错啊,有前途。
于是,2009 年,Mozilla 开始正式赞助 Rust,并专门成立了一个团队来继续它的开发,还将它运用在了实验项目 Servo 中。这是一个 HTML 渲染引擎,最终目标是取代 Firefox 的渲染引擎。总之,Mozilla 对 Rust 寄予了厚望 ,希望它能提供比 C++ 更好的并发性、安全性和易用性。
有 Mozilla 公司的大力支持,再加上后来 JavaScript 之父 Brendan Eich 等技术大牛的加入,Rust 的开发很快走上正轨,整体的设计哲学和功能特性也越来越完善。然而遗憾的是,Hoare 并没有和 Rust 一起走到最后。2013 年,Hoare 卸任 Rust 技术负责人职位。
这件事当时在技术圈里引起了轩然大波,各种猜测、各种阴谋论纷纷上场。后来 Hoare 亲自在 Reddit 上回复,解释了这件事:
我离开 Rust 项目,是因为我感觉自己已经燃烧殆尽,快要崩溃了。我在 Rust 上花了 8 年时间,有 4 年是受雇全职工作,我试图完成这个项目,却随着 Rust 野心的扩展而不断经历失败,我因此一直处在很大压力之下。每天都有新一轮相互冲突的需求涌进来:吸收来自 C++/Lisp/Haskell/Scala/Cyclone 等吸引人的高级特性;追求“世上最快”的性能目标;偿还之前犯错带来的技术债;维护内部一致性和正确性;稳定下来并在一个有模有样的时间表下发布一个完善的版本等等。
 
这些看似无穷无尽的任务,完全毁了我的私人生活,我的健康状况也很糟糕。另外,我当时的人际关系处理的不是很好,从大家的反映看,我已经不能很好的胜任技术领导的职责。把项目领导的职责移交给其他人对我来说是一个极大的释放。直到此后一年半,我都在一点点找回我的生活。
从这段描述中可以很清晰得感受到 Hoare 当时面临巨大压力和不堪重负的心境。后来,Hoare 去了苹果开发 Swift,或许对于他来讲,摆脱领导职务,专注于编程语言本身的探索和开发才是让他更为开心的事情。正如他所说的,“当期结束,我继续向前。”
这么一想,能始终保持对 Linux 项目热情和控制力的林纳斯,真是了不起啊。
少了 Hoare 的 Rust 没有停滞不前,它依旧在核心团队的带领下不断迭代完善,变得越来越好。这个世界就是这么残酷,没有谁是完全不可或缺的,即使你是最初创造这件事的那个人,如果能力的提升跟不上发展的速度,那么最终离开就是一个必然的结果。
有句玩笑话是这么说的,你牛不牛我不知道,但当你跟我说没有你地球照样转的时候,我听着就觉得地球在硬撑。然而现实情况是,世界并不会因为缺了谁而停止转动,编程语言也是如此。
明天我会继续和你聊聊这门语言,卖桃者说,明天见。
(编辑:夏天) 
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
上一篇
第176期 | 给你一座金山也看不见
下一篇
第178期 | 深受程序员喜爱的Rust(下)
 写留言

精选留言(4)

  • 2020-01-07
    好产品是团队的产物,个人再牛力量也是有限的
    3
  • 2020-01-07
    最近刚好在学Rust,感觉还是很强的,就是不太容易上手
    1
  • 还是很牛的
    1
  • 2020-01-07
    喜欢 Rust 的语法风格