0%

2024春夏季开源操作系统训练营第一阶段小结-Daniel

背景

在加入此次训练营之前,我正在学习MIT的xv6操作系统(RV汇编,C语言),一直听闻清华的用Rust写的OS–rCore–,而且也是基于xv6,RV版的。本打算结束了xv6再了解的,但是恰巧发现了春夏季训练营的报名机会而且时间也算合适,觉得如果想了解Rust和rCore就不要再拖延了,于是下定决心报名并开始正式地学习Rust语言。

心得

早已听闻Rust在内存安全方面全面的保护,以及Rust学习曲线之陡峭,在正式开始前就给自己做足了心理建设。

我并没有过严格的C/C++编程体验,在CS61C短暂的接触过C语言,在CMU-15445短暂的接触过C++,所以可能我并无法感受到相比C/C++,Rust为编程者带来的“思想解放”。但是在MIT xv6学习过程中,我确实深刻地体会到C语言“天使与魔鬼”的含义,C语言让编程者随心所欲地调用系统资源,但是编程者就要为(潜在的、无数的、折磨人的)“segmentation fault”,“undefined behavior”们负责。

在Rust学习过程中,我也切身体会到了“编译器教我做人”的感觉,意识到这并不是一句玩笑话。初期面对一堆报错,我会苦恼一个编译器怎么这也管那也管,我就是想把这个值赋给这个变量,你信我就好了这没问题……但是我逐渐意识到Rust语言的安全性也正因此得以体现,它让程序编写的初期就足够安全,避免了许多运行时的bug,也许增加了编程者的心智负担,但是确实为程序的运行增添了值得这样负担的保障和性能。这更加深了我作为编程者的“责任感”:你要对自己写下的程序负责,而不是随意暴露问题。

但是我作为Rust初学者,必须承认仍然对它知之甚少。我仍然无法感觉到为什么Rust作为系统编程语言,这也许是因为我把能对硬件资源肆意调用的权力当作了“一门系统编程语言”的特点。至此我觉得应该要对系统编程、C语言、Rust语言都要重新进行思考。

心得的最后,我想这样简短概况一下这两个多星期的Rust入门带给我的感受:Rust是一门要用心学的语言,不是一门顺便就学了的语言,如果无法做到反复体会咂摸Rust的思想,几乎无法用Rust做任何事。

目标

希望在未来rCore阶段的学习中,加深对操作系统,xv6,Rust语言,C语言的理解,同时对RV汇编再熟悉一下,上一次接触RV汇编以及是7个多月前61C的project了。