Thoughts about Google’s “Go” Programming Language

Date Arrow  November 12, 2009

Historically, we can distinguish really big software companies for providing, at least, four major kinds of products: an operating system (sometimes open sourced at a certain level), a web browser (with various degrees of standard compliance), a suite of office applications (slightly compatible with everyone else’s), and a programming language with curly brackets (generally incompatible with everything else). In that particular order, we have:

  • Microsoft: Windows, Internet Explorer, Microsoft Office, and C#.
  • Sun: Solaris, HotJava (sic), StarOffice, and Java.
  • Apple: Mac OS X, Safari, iWork, and Objective-C.
  • Google: Chrome OS, Chrome, Google Docs, and… Go.

Precisely, Go was the last piece that Google had to create in order to fit into the framework above. And it did, with a bright team including Ken Thompson (of Unix and C fame) and Rob Pike (of Plan 9 and UTF-8 fame). With names like that, and with Google’s own funding and infrastructure, it is normal that the media went into a hype frenzy yesterday.

bumper480x270

I think, however, that Google’s engineers got tired of what the current and upcoming versions of their “official” programming languages (Java 7, C++0x and Python 3.0) had to offer, and simply came up with a programming language that fits better their needs and expectations. As one of the slides of the TechTalk says, with current languages “You can be productive or safe, not both.”

Features like built-in support for concurrency or garbage collection hide the real true feature behind the language: faster build times with static typing support. This is important for Google from a software economy point of view: they want more productivity from their developers, or, in other words, more bang for their buck, all together with verifiable quality and speed of execution. Go seems to be designed to deliver in these areas. However, Rob Pike is careful to say that the language is experimental, so time will tell if their efforts were worth it.

In any case, it is worth noting that there was a previous programming language called Go! (whose author even wrote a book about it), and after an InformationWeek article revealed this, a petition has started in the Go bug tracking, asking Google to change the name of the language, all in the name of Google’s own “Don’t be evil” motto.

Similar Posts:

Tagged   Code · Open Source · Software

7 Comments

  • #1.   Manuel
    11.12.2009

    Thanks for this well written and informative post ! You’re getting better at this craft every day, it seems :-)

  • #2.   Adrian
    11.12.2009

    heh, I try :)

  • #3.   Ariel Rodriguez
    11.13.2009

    I said it before, and i say it now, garbage collection is a huge step backward, in any language, can’t handle memory allocation? Then you might not be called a programmer. Anyhow, the language itself is pretty neat. You have to love a modern language that borrows syntactic from Pascal (:=) :)
    Regarding the name, what can i say, go is the name of a japanese game very, very popular amongst computer scientist and mathematicians (i have to admit in shame i am a member of both classes), it seems weird that just two guys come along with go as a name for a pet project.
    Besides, you are a freaking genius. Best.

  • #4.   Adrian
    11.14.2009

    @Ariel
    I agree completely, but it’s the feature that “stands out” for the press. Most developers who started working since the late nineties have never managed memory manually. And they are sure and convinced that it’s hard to do and that hell will come upon them if they dare freeing the heap manually. Hence, any environment where you have to do it is dumb and retarded. All of which is a stupid idea, as many other conveyed by the press.
    IMHO I would have made the GC an option, like in the case of Objective-C (for Mac). But again, this is what there is. In any case, at the moment it’s just a matter of keeping an eye on all of this.

  • #5.   thomas kelly
    11.15.2009

    Yet here is the essential problem. Every couple of years someone creates a language that ‘solves’ problems where other languages fall short. Cobol and Fortran solved all the problems once, then pascal, then C solved all the problems, then C++, then perl, then java, then enterprise java, then double enterprise java with little whizbangs java, but that was not enough so we needed python, and ruby, and python became jython, ruby got some rails, etc, etc, etc. (notice I left the MS out, same thing, different universe. and why is linux so great when we had BSD forever before that? Dont forget the Korn shell, and the Bourne, and the C, and the Z…and isnt XML just SGML, and isnt EDI just XML with different spots? Dont forget the miracle of Text integration, wait, you mean the kind they had in the 60s right?)The truth of it is, a new language is not what we need. What we need is to understand that no one technology and specification solves all the problems. Will GO be great…sure, as long as they dont proclaim it the messiah language and implement everything in it. But then, of course that is the goal, its all about money. It stopped being about anything else a long time ago.

  • #6.   Adrian
    11.15.2009

    @thomas
    Thanks for your thoughtful comment. I also think there’s an economic background to Go the language, and it’s what I tried to put on the article. The thing is also to justify the salaries you pay to such luminaires in your company… which apparently creates ripples of value accross your stakeholders. I don’t know, again, the language seems OK, but the reasons behind are no different than those of C#, ObjC or Java, and that’s why I put it in the table. An idea of world domination through the “can-do-it-all” language, until the next one comes up. With curly brackets, of course.

  • #7.   Kim Bach
    11.29.2009

    Thanks for great writeup.

    As far as I can see, Go is a compiled language, I’m not so sure that is a step in the right direction, I struggle with compiled languages every single day (C#/.NET) and hate the complex deployment issues (compatibility).

    I agree that a language that borrows from Pascal (actually it’s Algol) is a step (back) in the right direction, always hated the syntax of C.

Commenting