Google’s new language: Go

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.

Technorati Tags: ,,,

5 thoughts on “Google’s new language: Go”

  1. Personally I wouldn’t want to use any language which named a part of the language “Goroutines”!

  2. Why oh why does every language nowadays insist on using curly braces as block delimiters, instead of begin/end? Why?

  3. He’s obviously never used Turbo Pascal/Delphi then? Fast build times? So what? The difference between a slow and fast build time isn’t going to be hours its going to be minutes anyway.

    I’m interested in how my apps perform when they are *running* not when I’m compiling. And dependancies? Well as soon as you hook up your app to a database, which of course in the real world your going to have to do, regardless of that DB you are going to have dependancies straight-away.

    Seems pretty pointless to me.

  4. Yet another curly-brace language. After all, if a piece of code was difficult to write, it should be difficult to read.

Comments are closed.