一点反思

长话短说

最近因为一些原因,我开始学 Rust。
过去这一年里,我刷了 CSAPP,OSTEP 之类的书,也用 C 语言和 x86 ASM 写了一段时间的代码,包括从零开始写内核,并且研究 Linux 内核。我的自研内核项目也有了相当一部分的进展。 
但是其实,写内核的过程中,我就知道我自己的设计模式有问题,因为我一直尝试用应用层的思维去写底层/系统代码,我对内存的所有权没概念,我只知道,程序的内存布局是怎么样的(例如 ELF 的内存布局),从来不会关注数据属于谁。
我也习惯用 OOPC(也就是函数指针+结构体)的组合体写代码,所以虽然感觉很顺畅,但是我总感觉哪有点不对。 
我记得当初学到引用计数这一块的时候,说句实话感觉知识点能理解,我也知道在什么地方用,但是我不知道什么时候应该 push_ref。因为准确的说,我是对生命周期这个概念很模糊,不是引用计数本身有多少难 (引用对象的时候就+1,引用为 0 的时候才可以释放,不为0不能释放)。

1

之前写内核的时候,因为 C 语言它至少能跑,所以我选择性的忽略,逃避。但是 Rust 不一样,它通过 Borrow Checker 把我这个问题通过编译器彻底暴露出来了。当我看到 &'static 一脸懵逼的时候我就知道它暴露出来我的什么问题了。
这不是语法的问题,这是思维范式的问题。我必须转换思维范式,而不是只学语法,否则我永远也学不会rust。
我刚接触 Rust,差不多 5 天吧,我在定义函数的时候就已经傻掉了,但是也谢谢他。

Java 这类自动 GC 的语言不需要我管内存的生命周期。
C 语言虽然需要我管,但是我可以选择装作看不见。

而 Rust,直接把问题摆在了我的面前,我再也不能装作看不见了。

总之

Rust 让我意识到了,我和系统程序员大佬的差距还很大,只能说趁暑假这点时间,努努力吧。

溯洄从之,道阻且长。溯游从之,宛在水中央。
Wed Jun 24, 2026.6.24 EOF

posted @ 2026-06-24 14:10  SudosuBash  阅读(13)  评论(0)    收藏  举报