Given how little I’ve been programming; I haven’t had many opportunities to really delve deep into the very fundamentals of programming. Based on what I’ve read (which only amounts to very basic preliminary research); Rust appears to have a lot of what many consider to be the good points of C (it’s rarely surprising, the pieces are fairly simple, there are plenty of libraries), removes a lot of unnecessary garbage (fussy syntax, in particular), adds a straightforward object model, adds modern tooling, and has some brilliant ideas (ownership/borrowing is the primary one). Ideas like the ownership model add a lot of the benefits of garbage collection without much of the overhead.
I haven’t heard of anybody looking for Rust people; I think in terms of job opportunities you’re better off learning C# or Java. If you want to seem “cool and trendy,” I think all the cool kids are messing around with Go and Scala. But if you’re looking for something like C that feels like it was created today instead of 1970, Rust is probably a good choice, and I feel like I’ll learn a lot from the experience.
Rust is awesome in what it achieves - stability, safety, speed, concurrency, explicitness. It is quite a pleasure to write in (compared to say C) once you understand the principles it’s built on (most importantly, the ownership/borrowing/lifetimes model).
It’s also a very young language, and I hear that there are quite a few rough corners and even missing features. These are likely to be improved and fixed as Rust matures.
I hope Rust will become widely adopted and highly used. In the future. Being realistic though, you’d be far more efficient as a C++ developer rather than a Rust developer, because that’s what the current ecosystem is built on.
But I think Rust is still worth learning. Maybe not because I’m going to write "The Next Big Thing" in it, but because I feel like it will seriously impact the way I reason about things, and in a good way so. Just understanding the way ownership/borrowing/lifetimes work in Rust is going to effect a huge mental shift that I’d otherwise have to blindly develop by repeated trial-and-error.
It’s about noticing new patterns. Thinking about some aspects of your code or even your program’s architecture in a different way. Just getting a new perspective.
It’s not only Rust that is important this way. Learn C. Learn Haskell. Go back to Python and find out how meta-classes and descriptors work. Then for some contrast learn assembly language. You’d be amazed at how many new perspectives on the same ideas you’ll see.
The fun thing is that once you develop the proper mental model for some stuff, it’s hard to understand what exactly you were missing before, because it all fits the big picture nicely. But trust me, the difference is huge.
And all this - is just based on a couple weeks’ worth of reading.
In the upcoming days, I plan on experimenting extensively with Rust as part of a working group at ProtoSem, and trying (very hard) to build a simple programming language as an exercise. I look forward to the challenges that lie ahead!