Rust 学习笔记 - 缘起

缘起

现存语言的问题

不少语言都依然难以解决 内存安全 和 线程安全 两个问题。前端

Rust 出现

06 年 Graydon Hoare 着手开发新的编程语言,名为 Rust。 Rust 名称源自 锈菌(Rust Fungi)也有铁锈的意思,字形上柔和了 Trust 和 Robust 暗示 “信任” 和 “鲁棒性”。程序员

GH 对于语言的指望

  1. 必须是更加安全,不易崩溃的,尤为是在操做内存时,这一点更为重要。
  2. 不须要有垃圾回收这样的系统,不能为了内存安全引入性能负担。
  3. 不是一门仅仅拥有一个主要特性的语言,而应该拥有一系列的普遍特性,这些特性之间不乏一致性。这些特性能够很好的相互协做,从而使爱语言更容易编写、维护和调试,让程序员写出更安全、更高效的代码。

Rust 应该是一个同时追求安全、并发和性能的现代系统级编程语言web

设计哲学

  • 内存安全
  • 零成本抽象
  • 实用性

内存安全

Rust 要保证内存安全首先要作的是保证类型安全。 类型安全有如下好处: - 容许编译器侦测无心义甚至无效的代码,暴露程序中隐含的错误。 - 能够为编辑器提供有意义的类型信息,帮助优化代码。 - 能够加强代码的可读性,更直白阐述开发者的意图。 - 提供了必定程度的高级抽象,提高开发效率。编程

何为内存安全

简单讲就是不会出现内存访问错误。 当程序访问未定义内存才会产生内存错误,通常会出现一下集中状况: - 引用空指针 - 使用未初始化内存 - 释放后使用,也就是使用悬垂指针 - 缓冲区溢出,好比数组越界 - 非法释放已是放过的指针或未分配的指针,也就是重复释放数组

Rust 扥内存管理模型
- 全部权系统。每一个被分配到的内存都有一个独占期全部权的指针。只有当前指针被销毁时,其对应的内存才能随之被释放。
- 借用和生命周期。每一个变量都有其生命周期,一旦超出生命周期,变量就会自动释放。若是有借用,则能够经过标记生命周期参数供编译器检查的方式,防止出现悬垂指针,也就是释放后使用的状况。
复制代码
Rust 借鉴 Haskell 的特性
- 没有空指针
- 默认不可变
- 表达式
- 高阶函数
- 代数数据类型
- 模式匹配
- 泛型
- trait 和关联类型
- 本地类型推导
复制代码
为实现内存安全,Rust 提供如下独特特性
- 仿射类型(Affine Type),该类型用来表达 Rust 全部权中的 Move 语义
- 借用、生命周期.
复制代码

零成本抽象

Rust 中零成本抽象的基石就是泛型和 trait。安全

实用性

如何评价一门编程语言的实用性
- 实践性,首先必须可以应用于开发工业级产品,其次要易于学习和使用。
- 有益性,是指可以对业界产生积极的效果或影响。
- 稳定性,指语言自身要稳定。在解决同一个问题时,不会由于使用者不一样而出现随机的结果。
复制代码
Rust 表现
  1. 实践性markdown

    • 对于失败的状况,可使用断言工具。
    • 对于错误,Rust 提供了基于返回值的分层错误处理方式,好比 Option 能够用来处理可能存在控制的状况,而 Result 就专门用来处理能够被合理解决并须要传播的错误。
    • 对于异常, Rust 将其看作没法被合理解决的问题,提供了线程恐慌机制,在发生异常时,线程能够安全地退出。
  2. 有益性和稳定性网络

Rust 语言解决了内的村安全和并发安全的问题,能够极大的提高软件的质量。Rust 提供了 C 和 C++ 以外的更好选择,由于 Rust 是对安全、并发和性能都很看重的语言,能够用于嵌入式系统、操做系统、网络服务等底层系统,也能够用于 web 应用开发、游戏引擎和集齐学习,webassembly 能够用来开发前端组件。同时能够用于区块链技术。并发

相关文章
相关标签/搜索