Google's "Go" programming language is being prepped for a 1.0 debut in early 2012.
Big news for developers out there: Google has just announced the release of a new, open sourced programming language called Go.
The company says that Go is experimental, and that it combines the
performance and security benefits associated with using a compiled
language like C++ with the speed of a dynamic language like Python.
Go’s official mascot is Gordon the gopher, seen here.
The
language is similar to C/C++, but "modernized," said Google
spokespeople. The focus is on optimizing multi-core usage, garbage
collection, and compiling for several different operating systems and
processors. (Linux, Mac OS X, FreeBSD, Windows - Intel, AMD, and ARM
chips)
Garbage
collection was invented by the late John McCarthy. The concept is to
free up memory of objects/data that is no longer necessary for the
executed program to function.
The
experimental "Go runtime" will come along with the release. It gives
the user support for Google's App Engine API. In other words, backend
support and database index control. Google is claiming that support for
each version of Go will last for years, forcing developer anxiety a
little lower. Also, "Gofix" has also been announced to help migrate
programs between version.
Google
stated, "If Go 1 is to be long-lasting, it is important that we plan,
announce, implement, and test these changes as part of the preparation
of Go 1, rather than delay them until after it is released and thereby
introduce divergence that contradicts our goals... We are explicitly
resisting any efforts to design new language features 'by committee.' "
What we really need, a rushed programming language for the multitude we are required to learn.
The use of goroutines and channels is really the defining characteristic of the Go language. This feature stems from previous work by Go's creator, Rob Pike, on the Limbo programming language that was released in 1995. Goroutines are similar to tasks in Cilk or the Microsoft TPL except that tasks return a value whereas goroutines do not. Channels are a mechanism for synchronized communication using message passing.
Go may become an interesting language in the future but, for now, the only available implementations are nowhere near competitive and the language itself is missing many common features (non-null references, generics, exceptions and union types). Our impression is that Google are developing the Go programming language largely for itself, first as a language for high-performance web programming but also potentially as a language for Google's proprietary NaCl Chrome plugin that allows x86 code to be downloaded over the web and executed by a browser.
You can test Download here Click