rust缘起和目标 rust的英文是锈菌,是一种真菌,这种真菌的生命力非常顽强,其 在生命周期内可以产生多达5种孢子类型,这5种生命形态还可以相互转 化。“Rust”也有“铁锈”的意思,暗合“裸金属”之意,代表了Rust的系 统级编程语言属性,有直接操作底层硬件的能力。此外,“Rust”在字形 组合上也糅合了“Trust”和“Robust”,暗示了“信任”与“鲁棒性”。 未来的互联网除了关注性能,还一定会高度关注安全性和并发性。整个世界对C和C++的设计方式的青睐在不断地发生改变。 其实20世纪七八十年代涌现了很多优秀的语言,拥有很多优秀的特性, 但它们的内存模型非常简易,不能保证足够的安全。比如Ada语言(军方会用)的动态内存管理虽然是高规格的安全设计,但还是引起了非常重大的安全事故。

rust目标:更安全,更高效,更可维护。被视为可以替代C++的语言 必须是更加安全、不易崩溃的,尤其在操作内存时,这一点更为 重要。 · 不需要有垃圾回收这样的系统,不能为了内存安全而引入性能负 担。 · 不是一门仅仅拥有一个主要特性的语言,而应该拥有一系列的广 泛特性,这些特性之间又不乏一致性。这些特性可以很好地相互协作, 从而使该语言更容易编写、维护和调试,让程序员写出更安全、更高效 的代码。(Rust涉及的知识范围非常广泛,涵盖了面向对象、函数式、泛型、底层内存管理、类型系统、设计模式等知识)

Rust的诞生为业界提供了一个除C和C++之外的更好的选择。 因为Rust是对安全、并发和性能都很看重的语言,它可以用于嵌入式系 统、操作系统、网络服务等底层系统,但它并不局限于此,它还可以用 于开发上层Web应用、游戏引擎和机器学习,甚至基于WebAssembly 技 术还可以开发前端组件。因为高的安全性和不逊于C/C++的性能,Rust 也被应用于新的前沿领域,比如区块链技术

rust设计哲学 为了达成目标,Rust语言遵循了三条设计哲学: · 内存安全 · 零成本抽象 · 实用性 健壮性,对错误处理有更好的机制 也就是说,Rust语言中所有语法特性都围绕这三条哲学而设计,这也是Rust语言一致性的基础。

内存安全:Rust语言如果想保证内存安全,首先要做的就是保证类型安全。 只有当程序访问未定义内存的时候才会产生内存错误。一般来说, 发生以下几种情况就会产生内存错误: · 引用空指针。 · 使用未初始化内存。 · 释放后使用,也就是使用悬垂指针。 · 缓冲区溢出,比如数组越界。 · 非法释放已经释放过的指针或未分配的指针,也就是重复释放。 这些情况之所以会产生内存错误,是因为它们都访问了未定义内存。为了保证内存安全,Rust语言建立了严格的安全内存管理模型,然后用类型系统表示出来。

安全内存管理模型:所有权系统。每个被分配的内存都有一个独占其所有权的指针。只有当该指针被销毁时,其对应的内存才能随之被释放。每个变量都有其生命周期,一旦超出生命周期,变量就会被自动释放。还包括了从现代C++那里借鉴的RAII机制,这是Rust无GC但是可以安全管理内存的基石。 (C++其实也没有GC机制,需要手动malloc,free。但是C++11的智能指针应该算是基于引用计数的GC机制) Rust从 Haskell 的类型系统那里借鉴了以下特性: · 没有空指针 · 默认不可变 · 表达式 · 高阶函数 · 代数数据类型 · 模式匹配 · 泛型 · trait和关联类型 · 本地类型推导 内存安全的Bug和并发安全的Bug产生的内在原因是相同的,都是因为内存的不正当访问而造成的。同样,利用装载了所有权的强大类型系统,Rust还解决了并发安全的问题。Rust编译器会通过静态检查分析,在编译期就检查出多线程并发代码中所有的数据竞争问题。 零成本抽象

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: