The Rust Programming Language

Created: 2020-07-09 Updated: 2021-01-13

The resolution begins July 2020

Okay, I’m going to stop fighting the urges: looks like it’s time to give in and learn Rust again.

I previously gave it a go in 2015 (and apparently solved up to Problem 9 of ProjectEuler.net), but without a compelling real-world problem to solve, I didn’t stick with it.

Note
Fun aside: my previous record on Project Euler was Problem 21 with - of all things - the TCL language. :-)

I think I’ve got some real applications I’d like to build now and it’s been a while since I learned a new language (I remember some things, but I’m basically starting from scratch).

Oh, and I’d be remiss to not mention Amos, whose positive opinions about Rust finally made my typing fingers so itchy that I just couldn’t bear it anymore. :-)

Changing my mind November 2020

Now I’m in the future. I’m putting Rust back on my "maybe someday in the future" pile.

Here’s my problem: Rust is not more conceptually difficult than many other languages I’ve enjoyed learning such as Scheme or OCaml, but it’s big. C++ big.

I remember when I learned C++ by doing a deep dive on the big Stroustrup book (cover to cover) and then doing most (all? I can’t remember) of Stepanov’s STL Tutorial and Reference Guide. And just like Rust, I toyed and made sample programs to make sure I understood all of the individual parts.

But once I’d done that, I never actually tackled a real software project with C++ and I quickly lost interest in the language entirely. I still consider that effort to be one of my personal biggest wastes of time and energy. (I’m sure I learned some stuff, but there would have been far more efficient ways to learn those things.)

This time around, learning Rust, I did a much quicker deep dive. I read The Rust Programming Language in print form from cover to cover. I wrote toy programs to make sure I understood each separate issue…​

But I knew that understanding the individual parts (especially the surface understanding that I now have) is the tip of the iceberg in becoming productive with the language. (Perhaps this is the hard-won knowledge I’ve gained from my failed C++ learning experiment?) Arguably, Rust doesn’t have a steep learning curve the way other languages have, it has a long learning curve. Learning how all of these pieces fit into a complete, working medium-sized application is clearly going to take a while.

And at this point in my life, a language that would take me that long to become productive with is not what I need for my nights and weekends.

But I still want a compiled, "systems-level" programming language to finally put in that empty space in my toolbox.

I have a problem with chasing "shiny things", but having now put the effort into properly surveying Rust by touring the complete language, I feel good about exploring another avenue. This time, I’m going deep on Zig (ziglang.org) which promises to have a much shorter learning curve.

I’ll be documenting my progress here.