Google Go is being touted as 'expressive, concurrent, garbage-collected' and promises to produce fast code, fast. According to Google a typical build takes but a fraction of a second while the resulting programs run almost as quickly as comparable C or C++ code.
Go has, we are told, pointers but no pointer arithmetic (for random access Google says use slices which know their limits) and promotes writing systems and servers as sets of lightweight communicating processes which it has called goroutines. You can "run thousands of goroutines if you want and say goodbye to stack overflows" Google insists.
So why this and why now? Well, Google argues that while the computing landscape has changed significantly over the last decade there has not been a major systems language that has emerged alongside to exploit the increasing speed of computers, to address the dependency management that is such a big part of software development today, to counter the growing rebellion against 'cumbersome type systems' such as Java and C++, and to properly support fundamental concepts of garbage collection and parallel computation.
"We believe it's worth trying again with a new language, a concurrent, garbage-collected language with fast compilation" Google states.
It tells us that a large Go program will compile in just a few seconds on a single computer and that Go provides a software construction model that makes dependency analysis easy peasy while at the same time avoiding much of the overhead of C-style include files and libraries.
It reveals that the open source Go type system has no hierarchy and so there is no time wasted defining relationships between types. Unlike typical OO languages, Go makes its static types feel lightweight, apparently.
Of course, it remains to be seen just how this programming language experiment, for that is what it undoubtedly is, will work out. It's one of those things that has emerged from an internal project, initially conceived to make it easier to write Google server software. But Google admits it isn't actually ready for any kind of large-scale production use yet, although the server behind the golang.org site is a Go program I am told.
There's an in-depth tutorial here so take a look and let me know what you think. How far can Google Go, er, go?