What does Google's Go programming language have in common with the cloud? It's the language of choice of cloud projects like Docker, Force.com, and Cloud Foundry's (Go)Router. Go is five years old, but you may not have heard much about it. That could soon change.
Although languages like Java continue to be the most popular way we build software these days, new models are emerging. They are constructed for modern computing architectures -- specifically, for the use of private, public, and hybrid cloud computing delivery models.
Go is one of the modern languages written expressly for the cloud. Its growing popularity is due to its ability to provide concurrent operations, as well as other features that exploit the provisioning models of clouds.
The people who designed Go were trying to improve C++. However, they found it too cumbersome to leverage concurrent operations (the ability to execute multiple processes at the same time) with the C++ control structure, so they gave up and moved on to build a new language with the cloud in mind.
I once wrote a book on C++, and I have to agree about its limitations when taking modern compute platforms, such as the cloud, into consideration. What's interesting about Go is that it's built for cloud computing, and I suspect we'll see more cloud-specific languages emerge addressing the same deficiency in older languages like C++ that Go does. Of course, some of these cloud languages may not be as open as Go, and thus they will lock applications on specific platforms or clouds.
You might question the need for cloud-specific programming languages and tools versus existing, more popular languages like Java. But the reality is that these langauges have limitations that will limit productivity on the cloud, so it makes sense to use an alternative.
I do believe there are too many programming languages, and having yet one more makes code more complex and less portable. On the other hand, as a developer, I understand that people who build software and systems are always looking for better tools. If the choice came down to Java or Go for my cloud project, which would I choose?
That's easy: If I could avoid limitations on a cloud project and all the numbers made sense, I'd choose Go.