A Dismissal of the Go Programming Language

This was originally intended to be a critique, but then I realized I can't be bothered to try programming in Go.

Back in 1992, Bell Labs released Plan 9[a], an operating system built on network transparency (you don't have to care whether a resource is local or accessed over the network), and the concept that every operating system object was represented as a file.

It failed to gain any traction. If I were to take a guess at why, I would sum it up as nobody having a problem that would be solved by network transparency and having everything as a file. While those two features sound good in an academic way, the reality is that they often make things much harder:

Enter Go[b], a programming language from Robert Griesemer, Rob Pike, Ken Thompson and the giant company called Google.

Pike and Thompson are known for Plan 9, which is why I brought it up. Just as Plan 9, Go ticks most academic checkboxes: Dynamic typing, lightweight processes (goroutines) and in general a wish to make a systems programming language simpler than C++ in particular. Unfortunately there are many echoes of Plan 9 in this. Just as Plan 9 tried to simplify access to resources but actually made it harder by ignoring real-world constraints, Go does the same. The designers try to help by hiding some complexity, but can only hide it in trivial cases. In every other case, the complexity hits you full-on anyway - but now you have no way of dealing with it because the language designers staked everything on you not having to.

To summarize, Go is the new Plan 9. It's a bag of programming language features, but with no clear way to assemble these into a real advantage; while at the same time coming with lots of disadvantages. Programming languages are not scored on how well they have managed to implement mathematical purity or that elusive attribute, "simplicity". If they did, we'd all be writing self-modifying LISP code.