Rust has exposed my lack of knowledge on how computers work.

864 points thot-taliyah

I've been a professional developer since about 2012. Most of the stuff I work on is web applications, and I believe I am pretty good at it given my experience and interactions with my peers. I love programing and it takes up most of my free time.

For the past few months I have been learning Rust from the ground up. Its a fun and exciting language and there is plenty to learn. But there are parts of the language I don't understand because I have never worked with any systems language... and its at times dreadful. There are things I run into that I understand the functionality and maybe a use case. But I don't understand why the rules exist; furthermore, creating a small example of why the code behaves the way it does and why the feature needs to exist is difficult.

For example, the difference between Rc and Arc and what makes one thread safe and the other not. What is thread safety anyways? Atomics? What are those? What is memory ordering? and down the rabbit hole I go.

Or things like how is Rust written in rust? LLVM? bootstrapping a compiler???

A simple exploration into one of rusts features has exploded into a ton of new information.

It has dawned on me that everything / or at least most of what I know about software development is based on abstractions. And I'm not talking about library abstractions, i mean language level ones.

There really isn't a super specific point to this post, It just makes me feel so bad I don't understand these things. I wish I could go back in time to earlier in my development career and work with things closer to the metal. Its really fascinating and I wish someone would have pushed me in the right direction when I was learning.

I've been working with Rust for about 6 months in my free time and I can write safe single threaded rust pretty easily, but I have yet to do any deep dive on async / multi threaded applications. And everything surrounding unsafe rust seems like an entirely different monster.

I want a deep understanding of how Rust works and its taking a lot longer then I expected.

When I get to a comfortable place with Rust, I will probably go do some things that most other developers do in College... like writing on compiler, or learning machine code. I do have a BS but its in web development... Nothing low level was ever taught. It got me into the industry fast and I have a nice comfortable job, but I want to learn more.