I guess I shouldn't be surprised that Google has invented a new programming language. Isn't every other vendor doing it? But although Google Go sounds interesting, I question who's really going to use it and why.
When I first learned programming in the 1980s, the de facto language for new students was Basic. A version of Basic was available for every make of computer, and many shipped with it built into ROM. Each version differed slightly from the others, but they were similar enough that it was easy to jump from one platform to another.
Later I graduated to "grown up" languages, including Pascal and C. These were compiled rather than interpreted, and they offered such advanced features as structured programming and direct access to hardware. Still, they were practically universal: You could find either one for almost any platform you chose.
Today things are different. In the modern, post-C world, the language programmers choose depends heavily on which IT ecosystem their programs are designed to support.
Want to write software for Mac OS X? Better learn Objective-C. Windows developers will get the most mileage out of Visual Basic or C#. And in enterprise datacenters, where IBM and Oracle middleware rules the roost, Java is the way to go -- just be sure you know whose app server you're running.
Sure, there are plenty of other options, and there's no shortage of also-ran programming languages. But over the years, a few major platform vendors have come to dominate mainstream application development, dividing the field into separate camps. Do we really need Google adding its own voice to this Babel?
Nowhere to Go but Google
In designing Go, Google started with a C-like syntax, then added and removed features as it saw fit. In other words, Google had the same idea as the designers of C#, Java, and Objective C -- to say nothing of C++, Perl, Ruby, and all the other modern, C-like languages.
Google says Go doesn't differ from these other languages just for the heck of it. The stated goals of Go are to compile quickly, run quickly, and bridge the gap between the ease of dynamic languages and the power of static ones, all while offering support for advanced features such as multiprocessing.
Go's creators are hardly programming newbies, either. Ken Thompson is one of the original Unix hackers and laid the groundwork for the language that would become C. His longtime collaborator Rob Pike invented the Limbo language and worked on the Unix and Plan 9 operating systems. And Robert Griesemer helped to develop the Java HotSpot virtual machine at Sun.
But it's not as if Go is the first language to be designed by veteran coders. For example, C# offers significant advantages over C, too, and it was largely the brainchild of Anders Hejlsberg, the original author of Borland's wildly successful Turbo Pascal compiler.
By offering not just a new framework, library, or runtime, but an entirely new language, Google seems to be saying there was no way whatsoever to achieve its goals with any existing C-like syntax -- be it C++, C#, Java, Objective-C, or anything else.
If Google says so, it must be true. Meanwhile, there are countless dedicated programmers working to see what can be done with all of those languages and many others. I guess they're just not doing it at Google.
Where should developers' loyalty lie?
Don't get me wrong. There's nothing wrong with variety, and we certainly haven't reached the pinnacle of what programming languages can do. What's troubling to me, however, is how more and more languages seem wedded to a particular vendor's point of view or business model.
As C++ creator Bjarne Stroustrup told C++ Report in a 2000 interview, "It was very important to the success of C and C++ that AT&T didn't try to monopolize these languages ... There was no systematic marketing of C or C++ before they became established languages and multiple vendors started competing. This noncommercial spread of C and C++ appealed strongly to many programmers."
Google has done the right thing by releasing Go under a BSD-style open source license. But there are plenty of open source projects that remain fundamentally tied to a specific company -- MySQL is just one example. If Go is going to change the programming landscape in any important way, it has to become more than just "the Google language."
I fear the day a computer science education includes courses in coding philosophy: one for Apple, one for Microsoft, one for Oracle, and one for Google. "Pick your poison and go get a job."
Developers should be loyal to good code first and foremost, not to the companies that provide their tools. Living up to that standard was easy in the days of Basic, Pascal, and C. But when the choices are C#, Objective C, Java, and Go -- all of them similar, but all of them fundamentally incompatible -- I wonder if it's even possible.