Ready, set, go ... Google moved into yet another IT realm Tuesday with a computer programming language called Go. Google is betting Go will address key trends in the computing landscape.
"Go combines the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++," Google's Go team said in the company blog. "Typical builds feel instantaneous; even large binaries compile in just a few seconds. And the compiled code runs close to the speed of C. Go lets you move fast."
Google's Go Reasoning
Google cited five reasons why a new programming language is needed. First, computers are much faster than they have ever been, but software development has not kept pace. What's more, Google said, dependency management is a big part of today's software development, but the header files of languages in the C tradition are antithetical to clean dependency analysis -- and fast compilation.
As Google sees it, there is a growing rebellion against cumbersome languages like Java and C++, pushing developers toward dynamic languages such as Python and JavaScript. Google also noted some fundamental concepts such as garbage collection and parallel computation that are not well supported by popular languages, and the emergence of multi-core computers with the worry and confusion they've generated among software developers.
"Go is a great language for systems programming with support for multiprocessing, a fresh and lightweight take on object-oriented design, plus some cool features like true closures and reflection," the Go team said. "Want to write a server with thousands of communicating threads? Want to spend less time reading blogs while waiting for builds? Feel like whipping up a prototype of your latest idea? Go is the way to go!"
Will Developers Grab Go?
Google said it's possible to compile a large Go program in a few seconds on a single computer. Go provides a model for software construction that aims to make dependency analysis easy and avoids much of the overhead of C-style include files and libraries.
Since Go's type system has no hierarchy, software developers don't have to spend time defining the relationships between types. And although Go has static types, the language attempts to make types feel lighter than in typical object-oriented languages. Finally, Go is fully garbage-collected and provides fundamental support for concurrent execution and communication.
The question is: Will developers gravitate toward Go? As Current Analysis analyst Brad Shimmin sees it, there is always room for a programming language that better captures the needs of the development community and overcomes the burdens that previous languages imposed on developers so they can be more productive. Google, he said, is trying to do both with Go, and he expects developers to adopt it when needed.
"The roadblocks to adopting a new language today aren't like they were five or 10 years ago," Shimmin said. "The similarity that exists between different languages and the fact that most development environments now -- thanks to folks like the Eclipse foundation -- are much more extensible and you can plug in support for different languages very easily means that developers are able to be multilingual and move between languages to better match their requirements."
|