Everyone likes Python due to its high productivity. The productivity comes at a cost of poor performance however. Ruby is in the same boat, sharing almost everything that's good and bad in Python. And here's Go, a statically typed and compiled language that's almost
as productive as Python. The language itself is simple and easy to learn.
But all of the above with the exception of .NET share one common disadvantage; application distribution. Typically clients require runtime dependencies to run Python/Ruby/Java applications. There are ways to create self-contained executables that require no dependencies, but typically such executables are prohibitively large. Only .NET gets away with this because .NET is distributed through Windows Update, but it's still not a guarantee client will have, say version 4.5.2 of .NET that can run your application. To a degree this will also become .NET's problem now that Microsoft is open-sourcing large parts of the framework, which will be picked up by Mono and thus becoming more widely used runtime dependency.
Not a problem in Go. Go has good support for cross-compilation for all supported platforms, a single executable that requires no client-side dependencies. That alone blew me away. I don't have to expect client to have a runtime to run the application, the language is easy and fast to work with. Compilation times are lightning fast, application performance is really good and resource (cpu, mem) usage low, especially compared to Python or Ruby. And Go addresses one of the long-standing problems that has plagued Python, concurrency.
Go is still young and all the languages mentioned above benefit from optimization and ecosystem gained from maturity. While keeping that in mind, Go is only going to become better.
If you develop web applications, I strongly encourage you to take a look at Go. Many developers (particularly Python and Ruby) have already jumped ship and its easy to see why.Go Docs
, including tutorials and guides.
3rd party resources sorted by skill level: An introduction to programming in Go
, Go by Example
, Learn Go in Y Minutes
, Building Web Apps with Go
For those who would like to try Go in desktop application development:ui: platform-native GUI library for GoQML supportGTK bindingsTk bindings
Last but not least, there is a cross-platform IDE just for Go; LiteIDE
It saddens me that I have such trouble to come up with hobby projects to improve my coding skills, since what I do at work is rather limited.