← History

Go 2009

Simplicity at scale — fast builds, easy concurrency, one static binary.

Paradigmsimperative, concurrent, structural typing, compiled, garbage-collected
Typingstatic, structural, strong, with local inference via `:=`
Extensions.go
Created byRobert Griesemer, Rob Pike, Ken Thompson

Go (often golang) is Google's pragmatic, statically-typed compiled language built for large-scale software and modern multicore hardware. It trades cleverness for clarity: a tiny spec, near-instant builds, garbage collection, and concurrency baked into the language via goroutines and channels. The output is a single self-contained binary — which is why it underpins so much cloud infrastructure (Docker, Kubernetes, Terraform).

What makes it distinctive

History

Go's design began on September 21, 2007, when Robert Griesemer, Rob Pike, and Ken Thompson started sketching goals on a whiteboard at Google. The motivation was concrete frustration: at Google's scale, C++ and Java builds had grown painfully slow, dependency management was a chore of header files and forward declarations, and the languages of the day forced you to choose at most two of efficient compilation, efficient execution, and ease of programming. Go set out to deliver all three — and to make concurrency a first-class concern now that multicore CPUs were universal.

The pedigree of the three designers is itself part of the story. Ken Thompson co-created Unix, B (the ancestor of C), and UTF-8; Rob Pike worked on Plan 9 and the concurrent languages Newsqueak, Alef, and Limbo; Robert Griesemer had worked on the Java HotSpot VM and Google's V8 JavaScript engine. Their combined instincts toward small, orthogonal systems are stamped all over the language.

Ken Thompson began work on an experimental compiler in early 2008 — its first incarnation emitted C — and by mid-2008 the design was nearly settled and Go became a full-time project. Ian Taylor independently started a GCC front end (gccgo) in May 2008, and Russ Cox joined in late 2008 to help carry the language from prototype to reality. On November 10, 2009, Google announced Go as an open-source project under a BSD-style license, initially for Linux and macOS.

Go's lineage is deliberately eclectic. Its expression and statement syntax comes from the C family; its declaration syntax, packages, and general structure echo Pascal, Modula, and Oberon; and — most distinctively — its concurrency model descends from Tony Hoare's Communicating Sequential Processes (CSP) by way of Rob Pike's earlier languages Newsqueak and Limbo. Goroutines and channels are the direct heirs of that tradition: "Do not communicate by sharing memory; instead, share memory by communicating."

The language hit a major milestone with Go 1.0 on March 28, 2012, which froze the language and standard library behind the Go 1 compatibility promise — a guarantee that code written for Go 1 would keep compiling for the lifetime of the Go 1.x series. That promise, more than any single feature, shaped Go's reputation for stability. Around the same time the toolchain matured: gofmt ended formatting debates by mandating a single canonical style, go build/go test/go vet unified the developer experience, and (from Go 1.5, 2015) the compiler and runtime became fully self-hosted in Go itself.

For a decade the answer to "where are the generics?" was famously "not yet." That changed with Go 1.18 (March 15, 2022), which added type parameters (generics) — the largest language change since 1.0 — alongside fuzzing and workspaces. The runtime also kept advancing: a low-latency concurrent garbage collector, goroutine preemption, and Go 1.21's profile-guided optimization. Since then Go has shipped on a steady six-month release cadence (e.g. 1.21 in Aug 2023, 1.22 in Feb 2024, 1.24 in Feb 2025), each release small, backward-compatible, and boring on purpose.

The friendly Go gopher mascot — drawn by Renée French, who also designed Plan 9's Glenda bunny — has become one of programming's most recognizable logos. Today Go is the lingua franca of cloud-native infrastructure, powering Docker, Kubernetes, Prometheus, Terraform, and countless backend services, with millions of programmers worldwide.

Resources

See it in Code Compare →