缘起
我工作中主要是用C++,也跟了11、17和20标准,在11出来之前写C++程序觉得很难,当然也和刚工作比较菜有关。C++的多范式以及内存控制的颗粒度都很考验开发人员的水平,好的C++开发者能写出艺术般的代码,菜的开发者就GG了,偏底层的还得懂点操作系统,那时候写多线程也痛苦,直到11标准出来才官方支持线程,智能指针才真的在项目中派上用场,一直到20标准才有包管理。所以当Rust刚出来的时候,我就一直想看看,无赖工作和生活确实不太允许我有太多时间干这个事,最近过年终于开始把这个事搞起来了,顺便记记笔记,也分享给对Rust学习感兴趣的人,大家有意见可以直接留言交流,一起探讨。
Rust 简介
本系列文章主要是对比C++/C来学习Rust,当然也会先介绍Rust基本概念。Rust语言是由Mozilla研究院的Graydon Hoare在2006年开始开发的,目标是设计一种类似C++,但是更安全、高效的系统级编程语言。2010年,Rust发布了第一个版本,之后,Rust社区不断壮大,在2018年发布了1.0版本,发布后不久,口碑就一路高飞猛进,从 16 年起,连续 6 年成为 Stack Overflow 用户评选出来的最受喜爱的语言,被广泛认为是未来编程语言发展的重要趋势。
Rust得到了很多国外厂商认可,被广泛应用在工业界,例如Dropbox、Firefox、Fuchsia、Docker等公司和项目中。不过我认为他会大量使用在中间件,而C/C++会去做更底层的部分,而Java会更向应用层发展。
rust对初学者并不友好,即便是有编程基础的人,对诸如变量的所有权、生命周期这些新概念也需要时间去感受去理解。所以他会有一个陡峭的学习曲线,一个好的教程就显得尤为重要,而我就正在做这个事情。
Rust 特点
-
安全性:Rust语言通过静态类型系统、内存管理等机制保证程序的安全性,避免常见的缓冲区溢出、数组越界等问题。下述代码中,Rust 编译器会报错,因为在 y 和 z 指向 x 的时候 x 是不可变的,不能进行修改。而在 C++ 编译器可能不会报错,而要等到运行期才会报错。
fn main() { let mut x = 10; let y = &x; let z = &x