“Another Go at Language Design”

Did you ever had a look at Go?

No, not the board game. The programming language.

I have subscribed to their Blog feed, which had a new entry linking to a pretty good presentation by Rob Pike (at Stanford’s Computer Systems Colloquium (EE380)) talking about what Go essentially is/does different. (sadly, asx file/wmv-stream)

Go is an object-oriented language, different however than those you know (Java, C++). Go does have objects, but no classes.

Even basic types can have methods.

You can work on a byte level with structs and point to its contents, however pointers are borders-checked and so on, making them save.

Garbage Collection is included.

Concurrency made easy, just use the command go to start a separate work-thread which may be put into a separate thread, but not necessarily.

Interfaces are just definitions of methods. You don’t implement them, you’re just using them implicitly. This allows post-extension, which he gives a good example for.

No Exceptions, Go has a different way which he did not talk about though.

Compiling is extremely fast.

Types are implicit, but conversions have to be explicit.

Data beginning with an uppercase letter are what you would call public in other OO languages, those beginning lowercase not.

A really interesting quote from the beginning of the presentation quoted from Norvig:

Patterns are a demonstration of weakness in a language.

And only later in the presentation when he was showing Gos concepts you definitely see there’s other ways, where you don’t need (all) patterns.