Over the decades I have been involved in all kind of system. From deeply embedded real-time systems (avionics, radar, industrial control) to desktop applications (CAD) to server side processing to web browser client. This has involved having to learn and use a dozen different languages, most of which nobody had heard of today.
All that endless language learning, pretty much a different language on every project, has been an annoying and ultimately pointless waste of time.
As a result in recent years I made it a rule to only be concerned with main stream languages that have recognized standards bodies, wide spread support, multiple implementations. That are mature and likely to be around for decades more.
Therefore I studiously avoided fly-by-night, fringe, languages. I came down to three: C, C++, Javascript. With those I could get everything I want done easily and satisfy my requirements as above. The likes of Python, Swift, Kotlin, Java can all take a hike. As can every other new language, we seem to have been hearing of a new language every day for years now.
As such, I should not have looked at Rust at all. In fact I can't remember what it was that I saw that convinced me to try it out. So why am I still here? I found that:
-
Rust can work well in embedded systems, even small ones.
-
Rust is available for ARM and RISC V and other architectures.
-
Rust gives me all the performance of C/C++. For embedded systems and for computer intensive processes in the cloud.
-
It turns out that with Rust I can do everything I would normally turn to Javascript and node.js for. REST API servers, web socket servers, database interaction etc. Almost as easily as using node but with much better results in terms of performance and stability.
-
The big one: It does all that with a genuinely new and helpful feature, memory and thread safety. Fantastic, no other language has that.
-
It gets me away from the ever growing madness of complexity that is C++.
-
This might sound crazy but I quite enjoy having a conversation with the rustc error messages. I would never have expected error messages to be anything but annoying and inscrutable.
Meanwhile my stance on requiring international standardization has softened. C++ has that but it has not stopped the ongoing train wreck that is C++ feature bloat.
As for multiple vendors, I'm confident that there will be a Rust front end for GCC at some point.
The only thing I don't have is Rust in the browser. But that seems to be coming along nicely as well.
I could also on about the wonders of Cargo, the crate system, the amazingly helpful community here and so on. I will leave that to others...