Into the tar pit you Go
November 6, 2012  

Lambda the Ultimate provides this week’s example of tar-pit thinking in programming language research:

Not a lot here on Go at Google really. Mostly a general overview of the language, whose major selling point seems to be that it was designed by famous people and is in use at Google.

To expand on that we have this comment:

Most of those bullet points were already covered by languages like Turbo Pascal, Modula-2, Modula-3, Ada, Delphi, Oberon for around 20 years.

Go may not have many new features, but that’s hardly the measure of a programming language from either a practical or research perspective.

From my own experience I can say that a crucial design decision in Cyclone was to start with C syntax and semantics and try to make as few changes as possible to achieve safety. C programmers write very different programs than functional language programmers, and so by trying to get Cyclone to compile existing programs safely we found that we had to invent a different kind of type system. If we had started from a functional language and tried to make it into a “systems” language, we would have written our own example Cyclone programs, and our research would have gone in a completely different direction.

Likewise, Go may not have new features but it is designed and used by a community that knows quite a lot about systems programming—they certainly know more than the Lambda the Ultimate community. The features of Go may not be of interest to Lambda the Ultimate, but the programs should be of great interest.

What I find most interesting about Go are its concurrency features (“goroutines” and Hoare-style message passing). Go and Erlang are really the only current languages where these features are being used on a wide scale. These are great features, invented by someone else, but their worth can only be proven by their use. That’s what Go is contributing.