So I finally got to use Go at work, which was a great excuse to learn the language. Here are some newbie impressions after all of three weeks with it.
- the documentation is fantastic. Having a tutorial where one can execute (and edit!) the examples on the webpage itself really helps.
- the syntax favors terseness. It is a relief after the chattering verboseness of something like Java. Types don’t need to be always declared and are inferred wherever possible. There are a few quirky choices: I didn’t think I’d see “:=” after I moved on from Pascal. And the biggest breakthrough of all: the automatic formatter “gofmt” saves Go programmers quintillions of hours in avoided debates about formatting style and micro-futzing with spacing in the editor.
- concurrency is part of the language in the form of channels and goroutines. About time too, since we’re in the 21st century and threads cannot be implemented as a library(or at least, it’s always clunky when they are).
- like Python, the cognitive size of the language is small enough to fit in one brain without constantly thrashing out. I write Go in an editor (Emacs), not an IDE, and that works just fine. With Java there was a heavy productivity hit to opting out of something like Eclipse and auto-complete. I felt like the IDE was an earth mover for code.
If one is writing a new system (especially a backend) from scratch that doesn’t have to call existing C++ or Java code (or only calls them via RPC), then Go is a pretty compelling option right now. That is great after a decade of no other viable options.