Ray Valdes

A member of the Gartner Blog Network

Ray Valdes
Research VP
9 years at Gartner
30 years IT industry

Ray Valdes is research director in Gartner Research, where he is part of the Internet Platforms and Web Services team. Read Full Bio

Coverage Areas:

Geeks Agog Over Google Go?

by Ray Valdes  |  November 12, 2009  |  6 Comments

Yesterday, Google announced a new open-source programming language called Go, a systems implementation language that is a blend of Python and C++.

Thus far, the reaction from developers has been mixed. Most geeks are not so much agog, as perplexed: Why a new language? Why now?

For many, their initial reflex is to question or even scoff. This reaction comes primarily from those developers who have invested years in learning Java or C#, and more recently have strayed into Javascript, Ruby or Python. They look at the “Hello world” example in Go, read the summary description, and say “No thanks, I’ll stick with ___“.

However, there are a few, those with the strong strain of the curiosity gene, who’ve dived into the docs and downloaded the code, who hold a different view. They see the rationale behind Google’s move, but are mostly too busy to vent their views in the blogosphere.

They see a significant advance in language design, one that adroitly addresses a complex mix of requirements and tradeoffs, in order to reach the objective of a high-performance high-productivity development tool for concurrent systems programming. I have dipped into the system and do see the logic. At the same time, I think Go faces a huge adoption challenge. Any language, now matter how well-crafted, faces huge odds.

Before making pronouncements as to future outcomes, it needs to be made clear that this is an experimental language at its earliest stage of development. It is the result of a small project that began less than two years ago. Go does not represent a “long march” strategic initiative for Google (in the way that Google Wave does). Failure of this language won’t have much negative impact for Google.

Anyone introducing a new language must face a vast number of competitors for developer mindshare: niche languages that percolate under the surface of the mainstream, a mainstream that includes not just Java and C# but Perl, Python, PHP and Ruby. These are all well-established, visible alternatives, compared to what lies under the mainstream: languages like Squeak, Haskell, ML, Erlang, Lua, Alef, Limbo, Scratch, and, going further back, Dylan, Telescript, Liana, Oberon, Bliss,Modula, Kaleida, and many others. Some of these niche languages have a loyal following, but won’t become mainstream any more than Lisp, APL, or Smalltalk will grow beyond their present tiny communities.

So if it were anyone else, it would be easy to forecast the eventual outcome of Go as an interesting footnote in the history of programming.

However, there are two aspects that should give pause: the pedigree of the authors (Thompson, Pike and Griesemer), and the corporate entity behind them (Google). Thompson is one of original authors of Unix, and Pike is a long-time collaborator of his at Bell Labs, working on seminal (but niche) operating systems and languages like Plan 9 and Limbo. Griesemer was an author of the Java hotspot compiler and the superfast V8 Javascript compiler. Pike has been working on inventing languages for literally decades. The concurrent programming features in Go build on the foundational computer-science work of Tony Hoare and his CSP language from the 1970s.

Google is not the ivory tower of Bell Labs. Instead, Google is a vast, real-world, proving ground for the most intensive software development projects. Google has intensive needs at two ends of the spectrum:

  • the requirement for high agility and programmer productivity, of the kind that results from a modern dynamic language
  • the requirement for high-performance and scalability, including the ability to exploit multi-core architectures and concurrent processing

Historically, a common approach to software development at Google is to create a prototype in a high-productivity language like Python, one where a developer can iterate rapidly through the compile-run-debug cycle until the appropriate mix of functions and features is arrived at. Once the design is considered complete, the development team then undertakes the laborious step of re-casting their design in a high-performance, highly scalable system: in most cases C++ (in some cases, as in Google Wave, it is Java).

The grand experiment that Pike and colleagues have embarked upon is to see whether these two very divergent needs can be satisfied by a carefully designed and well crafted language.

The syntax has been designed for rapid compilation and linking. In a TechTalk at Google a couple of weeks ago, Pike demonstrated compiling and linking a math library of perhaps a couple of thousand lines of code in 200 milliseconds, and recompiling the entire Go system (about 120,000 lines of code) in about 8 seconds — all on a laptop with single-core. This is an order-of-magnitude faster than conventional systems.

The Go language is larger than C, but smaller than C++, and feels like a blend of Python, C, with echoes of Squeak, Alef and Limbo (earlier languages that Pike has been involved with).

This appears to be entirely a Google project. It is driven by the internal motors and motivation of Pike and colleagues, as well as by Google’s top-level requirement for agility-plus-performance. The BSD-style license is intended to foster diffusion of this infrastructure-level software, but I think Google cares more about exploiting this tool internally — as opposed to projecting it externally, as some kind of “lock-in” weapon in a protracted platform war.

If Google views this as something to market and project onto the outside world, I think they will struggle to get adoption — primarily because of the mountains of legacy code that are out there. Many Web developers embarking on a project hold their nose and program in PHP because of the large corpus of open-source components and solutions that are available in that language compared to others. Likewise those writing back-end systems in Java, C# or C++ think: Why reinvent the wheel when you can download it from SourceForge?

Even within Google’s own internal context, the Go language will have a challenge getting incorporated into the fabric of company software assets.

I think it will be 3 years before Go has a big impact within Google (assuming it does not wither on the vine). And there will likely be another 3 years after that, before any significant impact in the enterprise sector. Adoption will be driven from by third-parties building solutions, and by enterprises adopting Google App Engine (assuming GAE gets updated to support Go).

In the meantime, the Go source code makes for interesting reading on a cold winter night. It harkens back to the day when programmers read entire programs, similar to young writers learning their craft by reading long novels written by masters. The work of computer-science masters (Thompson, Kernighan, Ritchie, Dijstra, Knuth, Wirth, and so on) constitutes genuine literature, in contrast to more recent work which may be functional but is not so readable. I still have my printout of V7 of the Unix operating system, on the shelf next to A Portrait of the Artist As A Young Man. The design of Go is intended to encourage readability, unlike modern programs that result from developers using Intellisense and auto-completion to churn out endless streams of verbose text that may be syntactically correct but hard to savor.

What are your thoughts on language? In the dead of night, are all cats gray, and all languages nothing more than Turing-machine equivalents?

6 Comments »

Category: Uncategorized     Tags:

6 responses so far ↓

  • 1 Tweets that mention Geeks Agog Over Google Go? -- Topsy.com   November 12, 2009 at 1:03 am

    [...] This post was mentioned on Twitter by Posts Google, Ray Valdes. Ray Valdes said: My blog post on Google Go language http://bit.ly/go-language [...]

  • 2 Geeks Agog Over Google Go? | Neorack Tutorials   November 12, 2009 at 3:12 am

    [...] compiler. Pike has been working on inventing languages for literally decades Read more here: Geeks Agog Over Google Go? Share and [...]

  • 3 uberVU - social comments   November 12, 2009 at 4:31 am

    Social comments and analytics for this post…

    This post was mentioned on Twitter by rayval: My blog post on Google Go language http://bit.ly/go-language

  • 4 Karthik TD   November 13, 2009 at 2:55 am

    Ray,

    First, thanks for writing on this subject. This pretty much a 360 degree analysis on the new language. I have long dreamt on how the software development in 2035 would be – many a times my sense could the same answer again and again – ‘simple, so simple that I could even write my business rules and build an application’. And Google Go sounds more like a step towards that direction of simplifying the application development. And you are right, it is still at diapers. With mountains of code in traditional c, java, I think it would be hard to penetrate the old ‘lines of code’ market in a shoot. But there are fair chances of penetration for new simple technologist like me to build on my own application with a bit of a learning.

    I welcome Google Go – the way to go in software language platforms.

    Cheers
    Karthik

  • 5 Google Releases new Initiative called “Google Stop”   November 13, 2009 at 12:12 pm

    [...] the heels of its recent release of the new programming language “Google Go” (See Gartner Analyst Ray Valdes’ take), the Mountainview behemoth has trumped itself with today’s release of “Google [...]

  • 6 Frank Grossman   November 14, 2009 at 5:21 pm

    HI Ray,
    One thing that is missing in these new languages is a more holistic view. Why not from the start build a background interpreter that is designed to help my editor. Then I can program fast with unstructured data, but while I am in programming mode all sorts of extra structured checks are happening. Then allowing it to run fast at true execution time.
    It would also be nice to have a modern language that was designed to be tested while being written. Again fast programming with more stable runtimes.

    Frank

    PS – I still do read through programs :)