今天我分享的主题是《新时代的编程语言—— Rust 》
刚看到这个主题是不是觉得有些炒作?!
当然,并不是我自己这样说的,咱也没这个分量去说这个,是吧。这个主题是借鉴于 Carol Nichols在 2019 年的费城新兴技术大会上做的关于 Rust 的主题演讲:
原标题是: Rust A Language for the Next 40 years
Carol 是《 Rust 编程语言》的联合作者也是 Rust 核心团队成员,这话由她在一个世界级的技术大会上说出来份量就不一样了吧?!
我们回到主题,为什么说 Rust 新时代的编程语言?
首先我们回顾下编程语言的发展历程,编程语言的发展从先到后分为 3 个阶段:
第一个阶段是机器语言时代,这个时候编写程序主要是使用 0/1 代码,我们的计算机在运行的时候它的脑子比较简单只认识 0 和 1 ,但是人去记忆一长串的 01 代码却比较困难?所以我们的编程先驱们设计了第二代编程语言也就是汇编语言,可以使用字母单词去表示一长串的 01 代码,降低了程序编写的记忆成本,但是汇编语言依然是面向硬件指令的语言而我们人类有自己的语言习惯所以在操作上,生产效率上还是需要改进,先驱们又设计出了更接近自然语言也就是人类语言的第三代编程语言,我们现在普遍使用的 C语言、 C++ 、 Java 、 Python 、 Go 都属于第三代编程语言,第三代编程语言又以 19 世纪 80 年代做为分割线,分为面向过程语言阶段和面向对象语言阶段。
其中面向过程语言阶段以 C 语言为代表, C 语言等面向过程语言在编写大型项目时陷入难于维护的困境,后来先驱们设计了面向对象语言 C++ 。C++ 兼具了 C 语言的很多优点比如高性能、语法简洁等但是在编写的时候也需要程序员自己管理内存,程序员可能一不小心有的内存用过了就忘记释放了,据微软纰漏windows 的 70% 以上的系统漏洞是由内存安全引起的,这个极大的引起了安全隐患、降低了软件的生产效率。所以以詹姆斯 高士林为代表的先驱们又设计开发了带有自动垃圾回收机制的 Java 语言,极大的提高了软件的开发效率。我们可以看到现在很多大型的网站、应用系统都是使用 Java 语言编写的。后面google 推出的 GO 语言也是采用自动垃圾回收机制,我们称这类语言为自动垃圾回收语言。由于 Java/Go 提供的自动垃圾回收机制是在程序运行时对变量进行扫描筛选回收的这对性能有些影响并且会引起“stop world”问题,那有没有一种语言兼具 C 、 C++ 语言的性能有同时具备 Java 、 GO 语言的开发效率并且能在语言机制上避免出现内存泄露等安全问题呢?
这就有了 Rust 语言, Rust 语言是由 Mozila 也就是火狐浏览器的母公司发起开发的,主要面向安全兼具底层编程语言的性能和高级编程语言的生产效率的一个编程语言。2015 年发布第一个版本,我在 2016 年注意到这门语言当时社区还是一些比较小的项目,当时偶尔给一些类似 shell find命令这种小项目提交一些 bug 修复,短短的 俩三年时间Rust 已经有很多比较大的项目了,而且不但是局限在操作系统编程领域,还在网站开发、物联网边缘计算、游戏开发等领域都有了不错的成绩,这也是我们需要学习 Rust 的一个重要原因,也就是它的生态体系已经初具规模有良好的市场前景。有市场需求就有工作岗位,学了这门语言就不用担心找不到工作。在一些国际知名的大厂已经开始使用 Rust 做比较重量级的项目,比如:
Google , 在 Google 推出的新操作系统 Fuchsia 的开源代码里可以看到已经大量采用了 Rust 语言另外微软在物联网边缘计算领域也大量采用了 Rust 在物联网设备上做数据收集传输计算等工作,还有 Facebook 、亚马逊等互联网巨头公司都已开始使用 Rust。
学习 Rust 语言的第二个意义是对我们本身能力的提升, Rust 语言是汲取前期多种语言优势重新设计的一门语言,所以无论你是第一次学习编程语言还是已经学习了其它编程语言再学习 Rust 都是对你能力的很大提升。
当前学习 Rust 语言的第三个意义也可以说是第三个好处,是这门语言能给我们带来更多的机会,无论是就业还是升职加薪,从过去的经验我们知道伴随一个新语言的崛起你本人也会从中收益,我们身边有太多这样的例子。