Last updated 2017-03-20
I have been programming primarily in Go for about six months. I find it frustrating. There are two reasons for this:
First, functional programming is particularly difficult in Go. In fact the language discourages functional programming. This frustrates me because the imperative code that I write requires a lot of boilerplate, and I think it is more error-prone than it could be if I could use functional abstractions.
Second, I see Go as a missed opportunity. There is exciting innovation in programming languages - especially in areas of type checking and type inference to make code safer, faster, and more ergonomic. I wish Google had chosen to put their weight behind some of those ideas.
I am not the first person to look at Go this way. Here are other posts that echo my feelings:
- Why Go Is Not Good
- Everyday hassles in Go
- Three Months of Go (from a Haskeller’s perspective)
- The Language I Wish Go Was
I will add to those with some of my own opinions. To highlight exactly how I think Go could be better, I want to make comparisons to Rust.