Google’s Go language (“golang”) was first released in early form in 2009, and reached 1.0 in 2012. Go has matured quite quickly compared to many other new languages. We find several aspects of Go appealing:
- Go is a pragmatic language, with features chosen to ease and speed development of substantial projects.
- Go uniquely combines a rapid cycle “scripting” language feel with a robust static compilation process.
- Go’s compiler generates statically linked binaries; this is very “old-school” in 2015, but static compilation trades off disk space (which is cheap) for simplicity and reliability in production (which is valuable).
- It is suitable for both small and large teams, although our work so far as been small.
- Go has good support for concurrency, well-suited to software that scales up to run on many core machines.
- Go has proven relatively easy to learn, for developers coming from a wide variety of backgrounds.
- Go has a good standard library.
- Go can target multiple platforms, yet does not use a separately installed runtime.
Go Development at Oasis Digital
Oasis Digital has made use of Go for various small systems, including:
- Experimental programs
- Development by interns in our intern program
- Utility software, test-stub software
- Minor customer work
We recommend considering Go for certain types of projects:
- Small, standalone software for which static compilation will ease deployment and support.
- Data services behind front-end web systems, suitable for local or cloud deployment.
- Applications where the Go concurrency model (“CSP”) is especially appropriate.