-
Notifications
You must be signed in to change notification settings - Fork 437
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #274 from theOnlyUnique/master
20240425刘启东提交2024开源操作系统训练营一阶段总结
- Loading branch information
Showing
1 changed file
with
95 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
--- | ||
title: 2024春季开源操作系统训练营刘启东一阶段总结 | ||
date: 2024-04-25 09:13:51 | ||
tags: | ||
--- | ||
# Rust一阶段总结 | ||
|
||
# 零、个人照片 | ||
|
||
随便放张生活照吧,很久之前拍的了,呵呵~时间过得真快 | ||
|
||
 | ||
|
||
# 一、本次参赛情况概述 | ||
|
||
本人也是上届训练营参营成员,不过那时候是和一个水友组的队,基本只有我一个人在努力写题。想起上次训练营我啥也不会,也没看过[《Rust语言程序设计》](https://rustwiki.org/zh-CN/book/title-page.html),抱着[《Rust圣经》](https://course.rs/about-book.html)+ChatGPT硬啃,勉强过了一阶段的100题,后面由于二阶段实在是有点复杂,迫于学业和项目组项目压力,勉强做了两个就做不下去了。 | ||
|
||
这次拉了两个工作室成员,都是有一定工程基础的,有一位成员在此之前接触过Rust,所以这次一阶段至少还算轻松,不会了线下相互请教一下,最终也是慢悠悠地过了一阶段。当然这次总结我倒不打算主要讲Rust代码上的东西,哈哈,相比较于程序设计,我倒感觉思想上的收获更多。 | ||
|
||
|
||
|
||
# 二、rustlings任务完成心得 | ||
|
||
这次任务,我将之前的(多)线程、外部导入函数、裸指针、所有权与借用以及模式匹配更层次地理解了一遍。想起我上次都是靠GPT撑过来的,属实确实有点搞笑了,这里我总结一下如何跟着这个Rust训练营的学习方法: | ||
|
||
|
||
|
||
## 2.1看官方文档 | ||
|
||
这里的官方有多个含义。 | ||
|
||
首先是训练营官方给出的环境搭建文档,跑软件不可避免要进行环境搭建,最简单也得学会用docker,学会了搭建最基础的环境,才能整式开始学习之旅。 | ||
|
||
然后是看《Rust程序设计》这本mdbook,一阶段很多知识点,其实可以从这本书找到答案,换句话说,这本书相当于rustlings的提示手册了,仔细钻研这本书,还是可以学到很多东西的,如果直接去看《Rust圣经》 对没有基础的同学来说还是容易劝退 | ||
|
||
最后就是看Rust语言的官方文档了,有中英双语版本,可以看到每个函数的具体解释,这里我推荐使用`zeal`这个[软件](https://zealdocs.org/download.html)安装Rust的文档进行查看,不需要联网,支持全局查找,还是很不错的 | ||
|
||
|
||
|
||
## 2.2看他人博客 | ||
|
||
虽然很多文档都有,但是大部分都是英文的,可惜我们一组3个成员英语都不太好,只能硬啃文档。另一种好的方法是去找别人学习源码的笔记,一遍写得好的笔记也是能传递很多知识的,我在仔细翻阅他们的笔记之后,加深了对所有权和一些陷阱的理解 | ||
|
||
|
||
|
||
## 2.3多动手实验 | ||
|
||
当然,理工科的东西还是以动手为主。我们由于本身有工程基础,于是乎就开始拉几台服务器自己装下环境,在ubuntu装,在windows装,在WSL装,在classroom装,都装一遍,写好通用的执行流程和坑点,加深对Rust的理解。 | ||
|
||
不过说实话,如果操作系统训练营要成为一门面向大众的训练营,以目前的文档详细程度来说,其实在文档上面下的功夫依旧不够,代入一个新手的视角来看,配置gitHub秘钥是陌生的,github进在线classroom运行时陌生的,git是陌生的,如果仅仅只有LInux基础还是很容易劝退,这就必须要个人有一点自主学习,热爱钻研的能力才能坚持下去,很多工程新手要完成这个阶段也得两三天。就我个人刚入门工程项目的时候,我自学git就很容易犯低级错误,或者进行不规范的操作,我觉得训练营至少要给出一遍基础操作,这样就能带动更广泛的学生参与进来。只要过了环境配置,后面通过一阶段那就只是坚持下去就能完成的事情了。 | ||
|
||
|
||
|
||
# 三、完成rustlings过程中遇到的困难 | ||
|
||
## 3.1语法不熟悉 | ||
|
||
其实环顾rustlings和《Rust语言程序设计》,这两者都没有重点讲Option是什么,Result是什么,unwarp()是什么,都需要自己去找额外的文档进行理解,很多需要的函数,不如trip(),insert(),get_mut(),as_mut(),as_ref()这些奇怪的函数,但是其实这些挺基础的,如果不会这些,不知道某些函数的返回值是什么类型,OPtion有什么用,其实是很难写下去的。鉴于以往学C++的经验,我自己重新学习了一下Rust的基本数据结构,以及基本数据结构的内置方法,还有一些通用方法和获取指针的方法,这些都是比较重要的。 | ||
|
||
|
||
|
||
## 3.2STL不会用 | ||
|
||
这次新增了一些算法题,颇有种使用C构建数据结构写算法的感觉,不过还好是填空的模式,对于没有掌握全部数据结构的我来说,还是能勉强接受的。致辞的算法题都是基于基本的容器进行操作的,比如bfs就是基于queue,算法里面使用deque,还有后面使用vec充当邻接表,还用到了hashMap当做node进行映射,不会使用容器做这些还是稍微有些困难的,当然,稍微学学容器方法还是可以写出来的 | ||
|
||
# 四、本次一阶段的收获 | ||
|
||
这次一阶段,我个人和另外的成员承担的项目任务更轻松了一点,拉了两个人来一起学习,还是蛮不错的 | ||
|
||
掌握了更多的学习途径和方法,从“正确的方向”巩固了Rust的语言基础,我现在感觉Rust+cargo越来越好用了,中途踩了几个小坑,每犯一次错误都能学到东西,嘿嘿~ | ||
|
||
|
||
|
||
# 五、自己找的学习资源汇总 | ||
|
||
权当分享啦~ | ||
|
||
5.1[Rust 程序设计语言 - Rust 程序设计语言 中文版 (rustwiki.org)](https://rustwiki.org/zh-CN/book/title-page.html) | ||
|
||
5.2[std - Rust (rustwiki.org)](https://rustwiki.org/zh-CN/std/index.html) | ||
|
||
5.3[Rust 中文文档 | Rust 文档网 (rustwiki.org)](https://rustwiki.org/docs/) | ||
|
||
5.4[关于本书 - Rust语言圣经(Rust Course)](https://course.rs/about-book.html) | ||
|
||
5.5[Rust入门第一课 - Rust入门秘籍 (junmajinlong.com)](https://rust-book.junmajinlong.com/ch1/00.html) | ||
|
||
5.6[介绍 - Rust精选 (rustmagazine.github.io)](https://rustmagazine.github.io/rust_magazine_2021/index.html) | ||
|
||
5.7[简介 - 通过例子学 Rust 中文版 (rustwiki.org)](https://rustwiki.org/zh-CN/rust-by-example/index.html) | ||
|
||
|
||
|
||
|
||
|