Off-Topic Discussion > Programming

Go Go Go



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.

In web applications you could even replace Java and .NET with Go, those two still retain advantage in desktop deployments due to their mature GUIs. Heck, people have even gone from html/javascript/php to Go/html. See net/http and html/template.

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 Go
QML support
GTK bindings
Tk 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. :sigh:

It depends on what you are developing. I use Python for mathematical and machine learning work (along with C++ and Matlab). It isn't the fastest, but is basically the only option for certain types of work due to the unique libraries it has. I try to avoid dealing with too many different languages for what I do, and focus on a few that others use a lot and have good libraries.


[0] Message Index

Go to full version