Go From Scratch/The Origin of Go


By the turn of the millennium, all the prominent "standard" programming languages were in place, most of them for a while. New programming languages were largely variations on existing ones, gearing towards specialization in some way. This was not itself new - even the mighty C was based on a language called B. But some strain had built up for a while - the old standbys had shortcomings that had been improved upon, but some of these improved versions were confusing, unwieldy, or slow to compile. Some were even designed for purposes unrelated to problem-solving, like creating a proprietary version of an otherwise open-copyright language.

The extent to which any programming language is built from the ground up is debatable, but Google sought to create a "new major systems language." Go was designed with Google's internal needs in mind - primarily rapid building and deployment, as well as ease of use by teams not otherwise coordinating.

Robert Griesemer had previously worked on Sawzall, a programming language for managing Google's networked file system, as well as interpreters or virtual machines for APL, Java and Smalltalk.

Robert Pike co-created the UTF-8 standard, was involved with the creation of the Sawzall and Limbo languages, and developed extensively for Unix.

Ken Thompson co-created Unix. His contributions to computing are legion.

In 2007, this team sketched out the initial goals of Go. Over 2008, they and others pieced together prototype libraries and compilers, until finally, on November 10, 2009, Go went public. After a few years of refinement, on March 28, 2012, version 1.0 was declared. Out of beta, ready for standardized support.

There's documentation and a community in place (see Existing Resources), but as of the initial writing of this, there wasn't yet a little intro book. And so, here we are.