Google announced a new programming language called Go on November 10th. It’s from Robert Griesemer, Rob Pike, and Ken Thompson. That last name should tell you something — Ken Thompson co-designed Unix and invented the C programming language.
The pitch was simple: a compiled language that feels as quick to write as a scripting language, with built-in concurrency and garbage collection. It’s aimed at the kind of problems that C was always used for, but without the pain of manual memory management and with better support for multi-core processors.
The concurrency model is the interesting part. Instead of threads and locks, Go uses goroutines and channels. Goroutines are lightweight — you can spawn thousands of them without the overhead of OS threads. Channels let them communicate without shared state. It’s closer to the CSP model than anything I’ve seen in mainstream languages.
There are deliberate omissions too. No generics. No inheritance. No exceptions. The designers have said they want the language to stay small and readable. Whether that’s pragmatic or ideological remains to be seen.
Do we need another language? Probably not. But Go is coming from people who know what they’re doing, and the problems they’re trying to solve — fast compilation, simple concurrency, good performance — are real ones. I’ll keep an eye on it.