Google has a new language. The language is called Go, though issue 9 on the bug tracker is from the inventor of another language called Go and asks for a name change. Co-inventor Rob Pike says [PDF] that Google’s Go is a response to the problem of long build times and uncontrolled dependencies; fast compilation is an important feature. It is a garbage-collected language with C-like syntax – echoes of Java and C# there – and has strong support for concurrency and communication. Pike’s examples in the paper referenced above do show a simple and effective approach to communication, with communication channel objects, and to concurrency, with Goroutines.
Go runs only on Linux or Mac OS X. I installed it on Ubuntu and successfully compiled and ran a one-line application. I used the 32-bit version, though apparently the 64-bit implementation is the most advanced.
Pike claims that performance is “typically within 10%-20% of C”. No debugger yet, but in preparation. No generics yet, but planned long-term. Pointers, but no pointer arithmetic.
Go does not support type inheritance, but “Rather than requiring the programmer to declare ahead of time that two types are related, in Go a type automatically satisfies any interface that specifies a subset of its methods.”
Google has many projects, and while Go looks significant, it is dangerous to make assumptions about its future importance.
I don’t think Google is doing this just to prove that it can; I think it is trying to solve some problems and doing so in an interesting way.
Personally I wouldn’t want to use any language which named a part of the language “Goroutines”!
@David I know what you mean but it is quite descriptive!
Tim
Why oh why does every language nowadays insist on using curly braces as block delimiters, instead of begin/end? Why?
Yet another curly-brace language. After all, if a piece of code was difficult to write, it should be difficult to read.