Revisiting “Revisiting Go”

It’s been a long time between drinks on this blog – nearly 3 years since the last post. A lot has happened in that time. I became a dad (hence the absence of activity here). My day job has moved from C++ on Windows to Python on Linux. I’ve also learned a few more programming languages (Rust, D, Elixir), and spent some more time with a few old favourites (Common Lisp, Racket, F# and Go).

Yes, Go. Even after what I said here. Reading Rob Pike’s blog post Errors Are Values was a real eye-opener, and it answered a lot of my issues in the last post. So, just to see if a couple of years’ worth of day-to-day work in Python had changed my view, I started working through the Rosalind exercises in Go. And was pleasantly surprised by the experience.

Using the techniques in that post (and a few others like using a channel to implement a generator) made the language just get out of the way, and let me just get on with figuring out how to solve the exercises. As much as I love Rust (and, boy, do I really love Rust…) Go let me just bang out code to explore the problem space without fighting the compiler, which is a totally different experience to solving problems In Rust.

I do still have issues with the lack of generics, the lack of immutability and a few other things, but on reflection (ha!) I think the balance in Go is pretty well drawn.

So, yeah. The more you know…

And, if anyone is interested at all, here is the Repo with my Rosalind answers.

Leave a comment