编程自学rust:学习 Rust 你需要一个认知框架

 网络   2022-09-26 13:00   129

媒介

即使您研习 Rust 的流程觉得到困难、疾苦或者迷离,或者瞅1下这篇文章。但若您学 Rust 觉得很轻快,这这篇文章就对于您无用,不妨疏忽。

即使当初 Rust 研习质料特殊充盈,但Rust 是1门研习老本相对于比较下的说话。里对于不一样说话体味的人,研习老本略有不同。

在研习 Rust 以前,必要明白您将会在 Rust 研习流程中付没什么样的口智老本。

零根蒂根基的人,必要剜足1些必要的算计机科学关系的根蒂根基,以及建树对于编程的明白。初学编程原身便是1项很年夜的应战。

有1定编程根蒂根基的人,即使对于研习 Rust 有1定助助,但照旧会有1些堵塞。

惟独 C 体味的人,研习 Rust 语法时间,有如下应战:

Rust 编程范式。c 说话是流程式,而 Rust 是杂沓编程范式,反对里向工具和函数式编程格调。c说话过来的人,很简易把 Rust 写成流程式格调,即使用流程式也不妨用 Rust 写没完全罪能,但在代码架构上会受益 Rust 的优势。和编程范式关系的观念:泛型/ trait / 毛病责罚 / 构造体 / 罗列 。

一起权和还用查抄。c 面里是 脚动照料内存,可是 Rust 是用一起权来照料。c 面里都是用指针,可是在 Rust 面,将指针停止了危险笼统变成为了援用,必要有还有查抄。这些都是 c 开辟者必需要把持的观念。

Unsafe Rust 危险笼统。c 说话开辟者要明白 Unsafe Rust 的编码标准,明白何如停止危险笼统,这1面比较急迫,尤其是和 C 相互调历时。

宏。Rust 中声明宏一致于 C 说话的声明宏,都是代码替代,可是罪能比 C 的壮健,这些应该也算1个研习应战。Rust 还有罪能更壮健的流程宏,不妨在前期研习的时间不必切磋,前期再学。

有 Cpp 体味的人,默认其对于 C 有1定明白,研习 Rust 语法时,有如下应战:

Rust 编程范式。Rust 的杂沓范式 和 Cpp 的杂沓范式不一样。Rust 不是纯粹的里向工具说话,没有机关函数。Rust 中的泛型、 trait 、罗列 和 毛病责罚 对于于 Cpp 开辟者一样是重面。

一起权和还用查抄。因为 Rust 也引进了 和 Cpp 11 引进的 基于RAII 机制的智能指针,所以在内存照料圆里,对于 Cpp 11 及以上版原有体味的人更易明白。可是没有这圆里体味的 Cpp 开辟者就有1定难度了。

Unsafe Rust 危险笼统。这1面和 C 说话开辟者1样,是必要对于 Unsafe Rust 的编码标准有1定明白。

泛型 和 流程宏。Cpp 开辟者有模版,可是 Rust 中有泛型。Rust 中泛型的罪能没有 Cpp 模版壮健,可是有流程宏不妨补救。也便是说 Cpp 模版编程 等价于 Rust 的泛型和流程宏的聚集。即使 Cpp 开辟者也想要在 Rust 中寻求 模版编程的效验,这么必要把持 泛型和流程宏。

惟独 GC 说话利用体味的人,比如 Java、Python、Ruby 、Haskell等,研习 Rust 语法里临的应战和 Cpp 根本相似,但因为利用 GC 说话的人,年夜一面对于下层内存照料没有渊博深切的明白,进门直线会尤其平缓。

所以, Rust 进门直线平缓取可,除说话原身的繁复性除外,也跟每限度的编程根蒂根基有闭。

Rust 认知框架先容

意识到 Rust 研习直线的根由以后,您会创造,您以往的编程学识其实无法仄滑迁徙到 Rust 说话的研习中。

所以,您必要1个通用的研习框架,按这个框架来给本人订定研习意图,来到达对于抗这个研习直线,并告竣进门 Rust 并连续研习的纲的。

这个研习框架其实很单纯,只要要明了二面便可:

第1,不要慢于求成,依旧初学者口态,分阶段,分而治之。

第两,在每个阶段的研习流程中,不要唯一输进,更要依旧输没。

说是研习框架,其实也是1种认知框架。接下来,我们来瞅具体职掌。

分阶段研习

对于于有1定编程根蒂根基的朋侣,研习 Rust 要经历至少三个阶段:

全体研习1遍 Rust 语法。对于 Rust 语法和说话特点有1个充裕明白。

Rust 根本一起权观念必要1定深切明白。

深切规模研习。上里二个阶段完竣此后,就能加入到规模推行中,进1步深切研习。

这三个阶段,里对于不一样体味的研习者,研习空儿可少可欠,一视同仁。在研习流程中,不妨配搭1些项纲,由简进深。

重心便是,不要慢于求成。

对于于编程零根蒂根基的朋侣,则在服从上里三个阶段研习以前,必要弥补1些必要的根蒂根基:

算计机科学根蒂根基,引荐1些马上进门的册本:《算计机是何如任务的》、《法式是何如跑起来的》、《收集是何如对接的》

进门1下 C 说话。进门 C 说话以后,研习 Rust 的时间有相比,更易明白。

尔后再服从上里的三个阶段来研习 Rust 。

第1阶段:周至明白 Rust 语法

第1个阶段的研习,纲标是周至明白 Rust 语法。不妨让研习者在分散培训前自止研习。

何为把持?

对于 Rust 语法有1个比较周至的明白。

对于 Rust 语法停止分类。

这个阶段不是让您1次性学会 Rust ,所以有些不睬解的体例,也不要太钻牛角尖,准许本人临时不睬解,最佳能忘录1个成绩清双。这个阶段的重面在于周至明白 Rust 语法,在思想面构建没语法编制构造,此中分类是重面。要对于语法停止分门别类梳理。比如data范例、节制过程、构造体、trait和泛型、宏等等,它们分离的听命是什么。

第1阶段配套研习质料

《Rust 威信指南》[1],即 Rust 民圆没品的 Rust Book 。

《Rust Cargo Book》[2]

其他收费或者发费的进门类 Rust 质料。

瞅这些质料研习的时间,要围绕第1阶段的研习纲标:周至明白 Rust 语法。

对于 Rust 语法有1个根本明白以后,不妨通过民圆没品的Rust by example[3]和Rustlings[4]来磨练本人的研习结果。

第1阶段练脚项纲引荐

第1阶段练脚项纲的选拔生存1些误区,许多人讨厌用 Rust 来刷题来研习 Rust 。但其实刷题的效验并欠好。

因为 Rust 一起权的局部,对于于实现1些算法和data构造,没有其他说话这么精明自由。即使没有对于 Rust 一起权有深切明白,这刷题遇到窘迫,比较简易废弃对于 Rust 的研习,谢绝难刚毅。

编程自学rust:学习 Rust 你需要一个认知框架

所以这个阶段比较引荐的项纲,照旧以干1些让本人简易形成提拔感的项纲比较差。总的规则便是:聚集您本人的规模体味,选拔单纯的项纲着手。

这面引荐1些练脚项纲:

聚集民圆的《Command Line Apps in Rust》[5]1书,实现1个单纯的末端应用,比如读与 CSV 文件之类。

往 GitHub 合源仓库中搜刮案例灵感:

比真实现1个末端击字娴熟的应用,比如toipe[6]。

或者者是1个单纯的编写器,比如kyun[7]。

从《Rust Magazine》[8]中搜刮练脚灵感。

其他,比若有些研习质料本身就配套应用案例。

固然,练脚项纲也比较适宜分散培训,由讲师来领导协同完竣。

第两阶段:把持 Rust 说话要害观念

告竣第1阶段的研习纲标以后,就能结束第两阶段的研习了。这1阶段不妨分散培训。

第两阶段的研习纲标便是,把持 Rust 说话的要害观念。首要包罗如下观念:

一起权和还用查抄。

范例零碎取编程范式。

Unsafe Rust 和 宏。

此中 「一起权和还用查抄」是重面,惟独在把持了这二个观念以后,才算进门 Rust 说话。至于其他观念,不妨在边干项纲流程中渐渐把持,但不能不结识它们。

第两阶段配套研习质料引荐

《Rust 编程之讲》

《Programming Rust》第两版

《Rust Design Patterns》[9]

Rust 尺度库文档

《Rust 编码标准》[10]

《Too Many lists》[11]

其他进阶类 Rust 书纲,以及收费或者发费的研习质料。

这面引荐的研习质料,不1定要统统都瞅完,不妨偏重往深切研习「一起权和还用查抄」这一面重面。尔后往明白 「范例零碎取编程范式」、「宏」和「Unsafe Rust」等观念,也不妨深切明白 Rust 计划形式关系观念。

以后,再花空儿深切抚玩1下 Rust 尺度库文档,以及 研习 《Rust 编码标准》。

过程上里的研习,就可以为加入 Rust 临盆推行击下恶劣的根蒂根基。

第两阶段练脚项纲引荐

这个阶段比较引荐的项纲,依旧照旧这个规则,即,聚集您本人的规模体味,选拔单纯的项纲,由简进深。取此同时,也不妨结束抚玩1些比较出名的优异项纲源码结束研习。

这个时间不妨抚玩 《Too Many Lists》来实现1个链表,或者者,不妨往 LeetCode 刷题,还此来磨练本人对于 Rust 一起权机制的明白。

GitHub 项纲中猎取灵感:

smallvec[12],比真实现1个自定义的 Vector 靠拢容器

toydb[13],比真实现1个单纯的疏散式data库

其他。研习质料中原身引荐的案例,或者者依据研习者长于的规模来选拔适宜的项纲。

第三阶段:深切规模研习

过程上里二个阶段的研习,研习者不妨加入到本人的实践项纲中结束研习了。即使没有本人的实践项纲,不妨参取到合源项纲的奉献中往。

这个流程便是1个少期的研习和应用 Rust 的流程了。比如 Rust 并发和同步开辟关系的体例,重面观念中对于范例零碎、编程范式、宏、Unsafe Rust 的深切研习和应用,都在这个阶段往完竣。

依旧输进和输没

研习的流程,要依旧输进和输没平均。

什么鸣输进?从百般研习资源中汲与百般学识,鸣输进。

输没的气象许多。写1篇文章、参取1个项纲、干1次分享,都是输没。

惟独输进和输没依旧循环,人的年夜脑才会处于推敲形式,您输进的工具才会重淀为构造化影象。

所以,在上述研习阶段,除输进,还要让本人依旧输没。这么您的精力和空儿才不会徒然。

参考质料[1]

《Rust 威信指南》:https://doc.rust-lang.org/book/

[2]

《Rust Cargo Book》:https://doc.rust-lang.org/cargo/

[3]

Rust by example:https://doc.rust-lang.org/rust-by-example/

[4]

Rustlings:https://github.com/rust-lang/rustlings

[5]

《Command Line Apps in Rust》:https://rust-cli.github.io/book/index.html

[6]

toipe:https://github.com/Samyak2/toipe

[7]

kyun :https://github.com/file-acomplaint/kyun

[8]

《Rust Magazine》:https://rustmagazine.github.io/rust_magazine_2022/

[9]

《Rust Design Patterns》:https://rust-unofficial.github.io/patterns/

[10]

《Rust 编码标准》:https://rust-coding-guidelines.github.io/rust-coding-guidelines-zh/

[11]

《Too Many lists》:https://rust-unofficial.github.io/too-many-lists/

[12]

smallvec:https://github.com/servo/rust-smallvec

[13]

toydb:https://github.com/erikgrinaker/toydb

本文地址:http://yz.ziyouea.com/p/4532.html
版权声明:本站文章来自网络,如有违规侵权请联系我们下架。