“However, as someone once observed, given the right lever you can move a planet” - Piter De Vries

Go is not my favourite programming language, but I do think it is the best of the mainstream/industrial programming languages, or what I prefer to refer to as the pragmatic programming languages. That is, those languages with lots of libraries, a large user base and (more often than not) corporate backing.

Everything depends on context (or pragmatics, ed.), of course, but, for my purposes, the pragmatic programming languages are Java, C#, JavaScript and Go. Java, C# and Go are all supported by a Silicon Valley giant. Namely, Oracle, Microsoft and Google respectively. These are the languages that, to adapt an old piece of IBM sales patter, nobody ever lost their job for choosing.

In addition to corporate and community support, Go is in the “C family” of programming languages—as are Java, C# and JavaScript (are you seeing a pattern here?)—taking the form of a set of ordered statements with curly brackets to denote block scope. In other words, Go code looks familiar to most professional programmers working today, while also having a few niceities that make it ever so slightly cleaner.

As well as being syntactically similar to many of the most popular programming languages that preceded it, Go has excellent library and package support. Indeed, I wrote all of Podcat without relying on a single third-party dependency; everything that I needed to parse and serialize JSON and XML, to write to and read from the file system, to access environment variables and to call other processes is available in the standard library.

The Go standard library may be the key feature that elevates Go above the other pragmatic programming languages, providing as it does everything that you need to write simple command line tools and web applications. Moreover, the tooling that is part of the standard Go distribution is also very good, ensuring that Go code is written in a clear and consistent style—Go APIs tend to look alike—which, in combination with the high quality documentation, makes the language and its idioms that little bit easier to learn.

Finally, Go programs compile to a single, statically-linked binary, which makes deployment in any environement trivial.