0%

2024春夏季操作系统训练营一阶段总结-Renli

Rustlings 学习感悟

不得不说,Rust对于我这种只会C/C++的语言的人来说还是很有一定难度的,这种难度来自于对于函数式编程的不熟悉。但一旦熟悉后就感觉到了函数式编程的便捷,特别是迭代器的处理。同时这也增加了一些压力,相较于啥都自己手写的C/C++,Rust等函数编程语言的重点则是熟悉各种各样的函数方法,有时候自己冥思苦想几天的代码,一个简单的函数就能解决,这种经历还是很难受的。

Rust语言除去函数编程以及一些语法糖之外,令人啧啧称道的就是他的安全机制了。确实,初次接触Rust感觉十分惊艳,觉得取代C/C++只是时间问题。但做过Rustlings后,感觉到可能这还是存在一些距离。一方面对于程序员要求太高了,难度感觉比C/C++高出了很多,另一方面尽管尽力屏蔽了底层,但却不得不使用一些unsafe的代码块实现底层操作,导致有点emmm怪怪的。

难度方面,我感觉Rustlings中的algorithm系列题目可以展现出Rust的“刁钻之处”,特别是对泛型T的处理。由于泛型T既可能有Copy也有可能有Clone,这导致很多常规的赋值方法并不能使用,在老师的讲解中我了解到了

1
2
let mut k = T::default();
std::mem::swap(&mut k, &mut self.data[self.top]);

这种写法,但实际使用中还是存在很多限制。不过经过思考和练习,发现很多赋值是可以优化的,特别是在使用相对应的数据结构的方法。感觉这其实有点像编译器强制程序员思考优化代码(被鞭策的感觉。

底层操作方面,则主要还是指针的使用,不得不说,链表之类的使用指针写代码是真的快。不过网上关于这个争议还是蛮多的,我有一段实现safe的双向链表代码,可惜这里太小了粘不下(笑

Rustlings 感觉练习还是蛮不错的,对于我这种0基础的学生来说,三四天看完b站课程后刷完成就感还是蛮强的(虽然看了不少题解,特别是经过最后algorithm部分的练习,感觉自己算是初步入门了Rust