-->

Google's Go programming language

By
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.

There are two different kinds of compiler available to Go programmers. The more common 8g and 6g compilers for the x86 and x86-64 architectures, respectively, are simple "splat" compilers that translate source directly into assembler. These compilers offer fast compilation but the generated code is not optimized and is generally quite slow, often several times slower than C. Moreover, in the absence of an accurate way to traverse the heap, these compilers use a GC that resorts to conservative collection (blindly traversing the entire heap looking for pointer-like ints) and the current allocator and collector implementations are extremely slow and never return memory to the OS. The gcc-go compiler is a Go front-end for the GCC compiler that offers optimization but currently has no garbage collection at all.
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  



More Posts

gElectron. Powered by Blogger.