首页 > 11年成长,Rust被誉“最安全的编程语言”,我该如何学习?
头像
爱吃萝卜炖土豆
发布于 2021-09-10 20:44
+ 关注

11年成长,Rust被誉“最安全的编程语言”,我该如何学习?

rust

🤔 Why Rust?Why can?

Jay Oster, PubNub 架构师 :

“除了安全和性能,我们还有:

  • 泛型;
  • 特征;
  • 代数类型;
  • 函数式和命令式范式;
  • 可能是世界上最好的依赖管理和构建工具,实际上解决了‘依赖地狱’问题;
  • 对内嵌文档、测试和性能评测的美妙支持;
  • 一个大的且正在生长的库、抽象、工具生态;
  • 过程宏;
  • 与已有代码的 FFI 交互性;
  • 支持一打平台(更多的在路上!);
  • 对开发者体验是正向的、毋庸置疑的满足。

Rust 是唯一一个下面所有框框都打勾的语言:

  • 内存安全
  • 类型安全
  • 消除数据竞争
  • 使用前编译
  • 建立(并且鼓励)在零抽象之上
  • 最小的运行时(无停止世界的垃圾搜集器,无 JIT 编译器,无 VM)
  • 低内存占用(程序可以运行在资源受限的环境,比如小的微控制器)
  • 裸金属目标(比如,写一个 OS 内核或者设备驱动,把 Rust 当一个 ‘高层’汇编器使用)”

Peter Varo:

“Rust 有一个很香的地方:它像 C 和 C++ 那样底层,因此也具有底层的这些优势(比如,控制、大小、速度等)。同时呢,它又像 Haskell 那样高层,自带令人吃惊的大量功能传承。它还是命令式的,所以容易被大多数人上手。然后它又像 Python 一样灵活,比如,' 鸭子类型(duck-typing)' 的概念出现在编译时(比如,特征限定),然后它又没有陈旧的面向对象模型以及由这个模型导致的各种出名的问题。

最后但很重要的是,还有一连串的东西被包含进来:精简短小的语法,语言提供的数目不多的特性,标准库及其一致性,高质量的文档的集成,包括对初学者和高级用户都适用的学习材料,这些都是促成因素。”

🏝 环境搭建

安装及工具:https://www.rust-lang.org/zh-CN/learn/get-started

📕 入门秘笈 (PDF档下载)

📖 推荐书籍

国内书籍

  • 《深入浅出Rust》
  • 《Rust权威指南》
  • 《Rust 程序设计语言》
  • 《精通Rust(第2版)》

国外书籍

入门书籍

  • 《The Rust Programming Language》

欢迎!本书将教你有关 Rust 编程语言的知识。Rust 是一种系统编程语言,专注于三个目标:安全性、速度和并发性。它在没有垃圾收集器的情况下实现了这些目标,使其成为其他语言不擅长的许多用例的有用语言:嵌入其他语言、具有特定空间和时间要求的程序以及编写低级代码,例如设备驱动程序和操作系统。它通过在不产生运行时开销的情况下进行大量编译时安全检查,同时消除所有数据竞争,从而改进了针对此空间的当前语言。Rust 还旨在实现“零成本抽象”,尽管其中一些抽象感觉像是高级语言的抽象。即便如此,Rust 仍然允许像低级语言一样进行精确控制。

  • 《Welcome to Rust-101》

这是 Rust-101,一个 Rust 语言的小教程。它旨在成为一门交互式的动手课程:我相信真正学习一门语言的唯一方法是在其中编写代码,因此您应该在课程中进行编码。如果您有任何未在此处回答的问题,请查看下面的“其他资源”。尤其是,IRC 频道里挤满了愿意帮助你的很棒的人!我在那里花了很多时间 ;-) 我假设对编程有一定的了解,因此不会解释大多数语言共有的基本概念。相反,我将专注于 Rust 的特殊之处。

  • 《Rust by Example》

Rust by Example (RBE) 是一组可运行的示例,用于说明各种 Rust 概念和标准库。

  • 《Why Rust?》

尽管自 40 多年前引入 C 以来,系统编程语言已经有了很大的发展,但我们对造成巨大后果的愚蠢错误的能力仍然没有改变,新闻中经常有生动的例子。这份 O'Reilly 报告研究了 Rust,这是一种新的系统编程语言,它将安全性和安全性与性能相结合,与 C 和 C++ 相当。

  • 《Learning Rust》

Rust 是一种高度并发和高性能的语言,专注于安全和速度、内存管理和编写干净的代码。它还保证线程安全,其目的是提高现有应用程序的性能。它得到了 Mozilla 的支持,以解决并发的关键问题。

进阶书籍

  • 《The Rustonomicon》

本书深入探讨了编写正确的不安全 Rust 程序所需的所有可怕细节。由于这个问题的性质,它可能会导致释放出无法言喻的恐怖,将你的心灵粉碎成十亿个无限小的绝望碎片。

如果您希望编写 Rust 程序的职业生涯长久而快乐,那么现在您应该回过头来忘记您曾经看过这本书。这不是必要的。但是,如果您打算编写不安全的代码——或者只是想深入了解语言的本质——这本书包含了宝贵的信息。

  • 《Programming Rust》

这本实用的书向系统程序员介绍了 Rust,一种新的前沿语言。您将了解 Rust 如何提供静态验证的内存安全和低级控制的罕见且有价值的组合——想象一下 C++,但没有悬空指针、空指针取消引用、泄漏或缓冲区溢出。

  • 《Rust Essentials - Second Edition》

本书首先论证了 Rust 在当今编程语言领域的独特地位。安装 Rust 并学习如何使用它的包管理器 Cargo。逐步介绍各种概念:变量、类型、函数和控制结构,以打下基础。然后探索更多结构化数据,例如字符串、数组和枚举,并了解模式匹配的工作原理。

在这一切中,本书强调了 Rust 编译器用来生成安全代码的独特推理方式。接下来看看 Rust 特定的错误处理方式,以及特征在 Rust 代码中的整体重要性。在我们探索各种指针类型时,将深入探讨内存安全的支柱。接下来,看看宏如何简化代码生成,以及如何使用模块和板条箱组合更大的项目。最后,了解我们如何在 Rust 中编写安全的并发代码并与 C 程序接口,了解 Rust 生态系统,并探索标准库的使用。

  • 《Hands-On Concurrency with Rust》

本书将教你如何在现代机器上管理程序性能,并在 Rust 中构建快速、内存安全和并发的软件。它从 Rust 的基础开始,讨论机器架构概念。您将了解如何系统地衡量和改进 Rust 代码的性能,以及如何自信地编写集合。您将了解应用于线程的 Sync 和 Send 特性,并使用锁、原子原语、数据并行等来协调线程执行。

本书将向您展示如何在 C++ 代码中有效地嵌入 Rust,并探索用于多线程应用程序的各种 crate 的功能。它深入探讨了实现。您将了解互斥锁的工作原理并自行构建多个互斥锁。您将掌握生态系统中存在的完全不同的方法来构建和管理大规模系统。

  • 《Hands-On Functional Programming in Rust》

函数式编程允许开发人员将程序划分为更小的、可重用的组件,从整体上简化软件的创建、测试和维护。结合 Rust 的强大功能,您可以开发满足现代软件需求的强大且可扩展的应用程序。本书将帮助您发现可用于以功能方式构建软件的所有 Rust 功能。

我们首先对针对不同问题和模式的函数式方法和面向对象方法进行简要比较。然后我们快速查看控制流的模式、数据以及这些函数式编程独有的抽象。下一部分介绍如何在 Rust 中创建功能性应用程序;还讨论了 Rust 独有的可变性和所有权。接下来检查纯函数,您将掌握闭包、它们的各种类型和柯里化。我们还通过功能设计原则和使用宏的元编程来实现并发。最后,我们看看调试和优化的最佳实践。

读完本书,您将熟悉函数式编程方法,并能够在日常工作中使用这些技术。

📑 大牛文章

📰 官方文档

💽 视频

图片说明

🏗 开源框架

值得新手关注的Rust项目

  • mini redis - 不完整的Redis客户端和服务器实现使用Tokio -仅为学习目的
  • async-graphql - 一个在Rust中实现的GraphQL服务器库

应用程序

数据库

  • indradb — 基于 Rust 的图形数据库
  • Materialize - 由 Timely Dataflow 提供支持的流式 SQL 数据库:heavy_dollar_sign
  • noria — 用于 Web 应用程序后端的动态变化、部分状态的数据流
  • Lucid — High performance and distributed KV store accessible through a HTTP API.
  • ParityDB — 快速可靠的数据库,针对读操作进行了优化
  • PumpkinDB — 事件溯源数据库引擎
  • seppo0010/rsedis — Rust 中的 Redis 重新实现
  • Skytable — 多模型 NoSQL 数据库
  • tikv — Rust 中的分布式 KV 数据库
  • sled —(测试版)现代嵌入式数据库
  • TerminusDB - 开源图形数据库和文档存储

✈ 杂货铺

更多资源内容:https://github.com/0voice/Understanding_in_Rust

全部评论

(0) 回帖
加载中...
话题 回帖