Google's Go; a new, open-source programming language

Google has unveiled an interesting programming language. Dubbed Go, it's aimed at making programmers' lives more fulfilling, especially for multi-core or perhaps even clustered computers. In IT Blogwatch, bloggers go wild.

By Richi Jennings. November 11, 2009.


Google's Go mascot
Your humble blogwatcher selected these bloggy morsels for your enjoyment. Not to mention epic kludges...

    Cade Metz getz going:

Google has open-sourced an experimental programming language that attempts to crossbreed a dynamic web-happy language like Python with a compiled language like C++. ... Dubbed Go ... Google says the language is type safe and memory safe, and it's specifically designed for building software that runs on multi-core machines. Systems and servers are written as lightweight processes called goroutines.


The project's developers include Unix founding father Ken Thompson; fellow Bell Labs Unix developer Rob Pike; and Robert Griesemer, known for his work on the Java HotSpot compiler. They call the language Go because, well, you know. "'Ogle' would be a good name for a Go debugger," the company says.

Jason Kincaid goes further:

Google ... says that Go is experimental, and that it combines the performance and security benefits associated with using a compiled language like C++ with the speed of a dynamic language like Python. Go’s official mascot is Gordon the gopher.


For more details check out

Google's Go team members go on and on:

Here at Google, we believe programming should be fast, productive, and most importantly, fun. That's why we're excited to open source an experimental new language called Go. ... Typical builds feel instantaneous; even large binaries compile in just a few seconds. And the compiled code runs close to the speed of C. Go lets you move fast.

  Go is a great language for systems programming with support for multi-processing, a fresh and lightweight take on object-oriented design, plus some cool features like true closures and reflection.

Go deep, Dj Walker-Morgan:

The language itself has pointers but no pointer arithmetic; instead it offers bounded slices for random access to memory. Go promotes the writing of systems as lightweight communicating processes called goroutines. The developers say that an application can be made up of thousands of goroutines, which are supported at the language level. Unicode support, garbage collection and run-time reflection are also included in the design of the Go language.


The language already has two compilers, gccgo which uses a GCC back end, and a suite of architecture specific compilers, 6g for 64 bit x86 code and 8g for 32-bit x-86 code (the naming style for the compilers is inherited from Plan 9 ). The GCC based compiler is slower than the architecture specific compilers but currently generates more efficient code.

But Ryan Paul wants to go home:

Creating a compiler is practically a rite of passage for computer science students, and half of the top vendors in the software industry eventually make their own programming language or extend an existing one to the point where it's marginally recognizable. ... Modern mainstream programming languages don't fall far from the C tree.


Are there any influential software vendors who have the vision and leverage to liberate [us] from the tiresome anachronisms of C? ... When I learned that Google was going to announce a new programming language, I was hopeful that the search giant would bring something truly novel to the table. They haven't, but the result isn't bad.

And John Ripley wishes it would go away:

I really don't understand the repeated banging-head-against-wall that language inventors are doing. There's a good reason why C++ is still in wide and very popular use: precisely because it does have explicit memory management and pointer arithmetic. C++ is a static, explicit language. Go is not. It will not replace C++, and no language will until that is understood.


Stop trying to replace C++ with a language that does not fulfill every aspect C++ covers. If you ARE a language inventor and reading my comment, answer this: can you write a cache/MMU interface or an interrupt handler in your language? If the answer is no, go back to the drawing board.

So what's your take?
Get involved: leave a comment.

And finally...

Richi Jennings, your humble blogwatcher
  Richi Jennings is an independent analyst/consultant, specializing in blogging, email, and security. A cross-functional IT geek since 1985, he is also an analyst at Ferris Research. You can follow him as @richi on Twitter, or richij on FriendFeed, pretend to be richij's friend on Facebook, or just use good old email:

Don't miss out on IT Blogwatch:

Copyright © 2009 IDG Communications, Inc.

Shop Tech Products at Amazon