August 28th, 2024 08:21 UTC · 1 month ago

Golang

Relearning Go: Conclusions

Bjarne Stroustrup said:

“There are only two kinds of languages: the ones people complain about and the ones nobody uses.”

Go is special: I both complain about it and I do not use it.

But, somehow, despite reconfirming prior complaints and discovering new ones, I am now more at ease with Go. I could work on a Go codebase and not see red at every turn; that was not true before. I also learned some new parts of the language. I found parts that I liked.

Learning Haskell changed how I think about programming irrespective of language. I’ve taken away lessons from learning C and Elm and Rust and TypeScript. I don’t think Go is going to have any similar influence. It is truly boring – indeed, that’s extolled as an advantage. I do not see it as an advantage. I have loved computing and programming since I was a child, but Go contains none of that joy. It’s beige. I don’t care about it.

Smart people produce good software regardless of the limitations of their tools: look at early games written in assembly, the Linux kernel in C. But developers nevertheless seek more expressive and capable tools: game developers moved to C, C++, and higher level languages, and Linux is adopting Rust.

Smart people write good quality and complex software with Go, of course, but from the moment it appeared it felt like a throwback, stripped of expressiveness, absent features that folks were already looking for at the end of the 2000s, rather than a step forwards. I’m resentful that something so banal captured so much attention1. For 15 years it has captured millions of capable, thoughtful, creative minds. Where would we be if something less stuck in the 1970s had won that moment in the sun instead?


1

Undoubtedly Google’s brand helped elevate its reputation. That’s no fault of Go’s creators. It might well have been an impediment to Go’s evolution.