2024开源操作系统训练营第一阶段总结报告
寒假期间即了解了操作系统项目rCore,并跟着做了rCore的一些练习,相关项目可以参考KamijoToma/rCoreOS。
在这期间通过rCore学习了Rust这门语言。Rust语言的威名我早已听闻,大家都说“学习Rust可以改变个人的一些编程习惯”,在我真正学习到Rust之后,对这句话有了更形象和深刻的理解。
下面我简单列出我的感想:
- 对编程语言的设计有了更深的理解
在学习其他语言和使用的过程中,我经常遇到如何在一个函数中返回异常的问题。高级语言,例如Java、C++,给出的解决方案是通过一个特殊的路径——异常,来返回这些错误。
然而,这些异于正常控制流的异常返回会令编译器的工作更加繁重,打乱执行流也意味着会造成额外的性能损失和更加复杂的汇编设计,也是基于此原因Google不建议在C++中使用异常。
另一门语言,Java,也使用异常。在学习Java异常的时候,我了解了Google的Optional库。它取代或部分取代了Java中异常的功能,通过将返回值包裹在一个Optional类中,来指示函数是否正确的处理了这个值。
到这里可能就有些熟悉了,这正是Rust中Option和Result枚举的设计思路。通过将异常和返回值包裹在一个枚举中作为函数的真正返回值,我们将异常的控制流非异常化,减少了编译器设计难度和性能损失。
同理,Rust中对各种trait进行组合也是我认为很优秀的设计思路。这些设计手法让我对编程语言设计的问题理解的更加深刻。
- 改进了编码习惯
提到Rust的特点,绕不开的关键词就是“所有权”。作为一门系统级语言,Rust当然不使用gc来自动管理内存,它也不完全需要程序员手动管理内存。事实上,它强迫程序员按照一定的规则来申请和释放内存。
在这里我不再提所有权的细节,而是想说,通过这种强迫的方式,我改掉了很多之前随意申请释放内存的情况。即使编写C程序,我也谨依Rust曾经教过我的管理方法去管理内存。
Rust是一门简洁有力但又有深度的编程语言,难怪有很多人为Rust所狂热。道路是曲折的,前途是光明的,我希望能同255DoesNotExist和TrisuyaN、reecho等同学一起,完整的学完这个夏令营~