Rust is Exciting

Rust is an exciting language. I recently bought The Rust Programming Language Book. It’s quite dense with a lot of concepts I haven’t thought about since college. Working in high-level programming languages such as Java, Python, and TypeScript have allowed me to mostly forget about the woes of low-level programming. Rust has both re-introduced me to these problems, and then immediately solved them with the advanced static analysis that its compiler provides.

I’m still a beginner with Rust. That’s the exciting part. I have so many questions; so many things to figure out. It’s a challenge. It’s a lot to learn. It reminds me of when I first started programming. There was a mountain of work to do, and an endless number of things to figure out. Eventually it gets easier and you become productive. You write small applications just because you can — because you want to prove that you know what you think you know.

Rust is full of features. Many of them deal with safety, such as the ownership system and borrow checker. It helps to guarantee memory safety, and coincidentally also helps when writing code that will be executed concurrently. These features are important, but what I’m really excited about are the language features — the features that make a language a joy to work in. Rust has plenty of these. Interoperability with C, pattern matching, the lack of a null type, Cargo, immutability-by-default, functional programming constructs built-in, macros, a compiler with the most helpful error messages I’ve ever seen, tuples, and pattern-matching. I’m just scratching the service. The type system and syntax isn’t quite as good as TypeScript, which I hold as the absolute gold standard (even if it isn’t perfect).

What’s particularly exciting is the applicability of Rust. I tend to use Python or Java for small shell scripts/programs. It works great for me, but it’s not especially portable. If I want to share my creations with my team members I have to provide explicit instructions about which runtime versions must be used, and any possible dependencies. Rust is a bit different. Since it produces native binaries I can simply hand them the executable (provided the dependencies are bundled) and let them have at it.

I’m excited to be a beginner again. I’m excited to learn about things I’ll never use in my day job. I’m excited to get good at writing Rust code. I’m excited for the future of programming languages, which will hopefully follow in Rust’s footsteps.

Recent posts from blogs that I like

The Coast of Maine: 19th century paintings

Paintings from 1845 by Thomas Cole, Frederic Edwin Church his pupil, Winslow Homer, and other American artists from the 18th century.

via The Eclectic Light Company

Themes from DjangoCon US 2024

via Simon Willison

Some Go web dev notes

I spent a lot of time in the past couple of weeks working on a website in Go that may or may not ever see the light of day, but I learned a couple of things along the way I wanted to write down. Here they are: go 1.22 now has better routing I’ve never felt motivated to learn any of the Go routing li...

via Julia Evans