Skip to content

Commit

Permalink
Merge pull request #274 from theOnlyUnique/master
Browse files Browse the repository at this point in the history
20240425刘启东提交2024开源操作系统训练营一阶段总结
  • Loading branch information
ZhiyuanSue authored Apr 25, 2024
2 parents 05226ce + 091ccf8 commit 856d4fc
Showing 1 changed file with 95 additions and 0 deletions.
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一阶段总结

# 零、个人照片

随便放张生活照吧,很久之前拍的了,呵呵~时间过得真快

![](https://ikun-1322198038.cos.ap-guangzhou.myqcloud.com/undefined202404242218564.jpg)

# 一、本次参赛情况概述

本人也是上届训练营参营成员,不过那时候是和一个水友组的队,基本只有我一个人在努力写题。想起上次训练营我啥也不会,也没看过[《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)





0 comments on commit 856d4fc

Please sign in to comment.