I’ve been feeling the itch to learn something new lately. As usual, I want to learn all the things at once, and that never ends well. A couple of the things I’ve been interested in learning are new programming languages, and more generally the inner workings of programming languages and their design.

Luckily, I think there’s a way for me to cover both of these this summer.

Of all the languages I’m interested in - Go, Rust, Elm, Haskell, ReasonML, OCaml…I think Go is the one I’ll go (hehe) with first.

First off, it’s designed to be a simple language. Something you can reasonably pick up in a few weeks. It also is statically typed and compiled, two things I haven’t had in a while writing Ruby, and I kind of miss those features. All the tooling and developer experience is supposed to be top-notch.

I plan on following Learn Go with Tests, as it looks like a good introduction that should work well with how I learn. This should get me a handle on the basics of the language, and get comfortable writing it.

Then, my ultimate goal is work through Thorsten Ball’s Writing an Interpreter in Go. I’ve been eyeing this book for a while, and I think it’s time to dig in. The book will walk through creating a programming language, building a fully working interpreter, all in Go. This will be a great starting point to learning more about the inner workings of programming language design.

The plan is to work on this a couple of mornings or evenings a week in small pieces. I have no idea if end of summer is an ambitious or easy or just right goal, but we’ll see how it goes.

And who knows, maybe when I finish this I’ll have time to Fall into Rust 🍂🦞.