The Go Programming Language

Python may have a special place in my heart as my first programming language that I actually ever accomplished anything with, but I find many uses for languages besides Python. Go (a.k.a. Golang, www.golang.org) is one of these.

Go is a language originally developed at Google by Bell Labs alumni. It was developed as a "systems level" language, providing the capabilities of C but in a modern, safe system that would also be very consistent and strict, making software written by large teams more maintainable. Go is unique in the primitives that it provides for concurrency and message passing, making it an ideal choice for high performance network-connected applications.

Go is statically typed and compiled to statically linked native binaries. It is fast and memory efficient. A highlight of using Go is the built in go keyword, which runs a function in a new lightweight thread called a "goroutine". Goroutines then communicate and synchronized with the built in "channel" type. This allows idiomatic use of concurrent design and speedy parallel execution of Go software.

Go is a very simple language. It is fun to use, being surprisingly easy Get Things Done with even though when compiled it is operating at the same level as C.

I have found use for Go when writing code that must be faster than typical Python programs, when I value the simple deployment story of a single statically-linked binary instead of requiring a large runtime, or when I prefer the statically typed environment of Go over the dynamic typing in Python. Sometimes it just makes sense to have types. Go is a valuable tool in my box.