My new found infatuation with the Go Language survived a weekend of reading The Way of Go and even some time with Grails. The book itself is poorly edited, but the information is good. And in spite of my love of Grails, I kept finding myself coming back to Go to learn more.
A lot of what I’m liking about Go is similar to what I like about NodeJS: they both have a clean API, similar to what I call the “Java One” era, aka JDK 1.1.x. In those days, the API provided the basics, and you had to build the rest. Both Go and NodeJS provide a solid API without being overwhelming.
The most interesting part though is that Go builds native applications. You know, those things we used to build before VM-based languages started owning the world. Modern development has been completely dominated recently by languages running on virtual machines, including Java, C# and Ruby. About the only holdout has been Objective-C, but I don’t like the idea of being locked in to a single platform.
Go allows a developer to build a real live executable that doesn’t depend on several MB of infrastructure software being in place. Combine that with a rich, web-centric API, and I can see some interesting possibilities.
Finally, I’ve always had a closet weakness for the C language. It is a marvel of simplicity and efficiency, but can go from fine scalpel to chainsaw with one misplaced character. Go shakes the ugly out of C, turning it into a modern language while still holding true to its ideals.
I’ll keep tinkering with Go for now. Maybe I’ll get bored with it, but maybe not. I see a lot of promise in a fast, light, native-compiling language with a solid baseline API. I dare say Google might be laying down the future with Go.