Next: , Up: Preface   [Index]


The Origins of Go

C-Like Language

Go is sometimes described as a “C-like language,” or as “C for the 21st century.”

From C, Go inherited its

Niklaus Wirth

But there are other ancestors in Go’s family tree. One major stream of influence comes from languages by Niklaus Wirth, beginning with

Communicating Sequential Processes (CSP)

Another lineage among Go’s ancestors, and one that makes Go distinctive among recent programming languages, is a sequence of little-known research languages developed at Bell Labs, all inspired by the concept of communicating sequential processes (CSP) from Tony Hoare’s seminal 1978 paper on the foundations of concurrency.

In CSP, a program is a parallel composition of processes that have no shared state; the processes communicate and synchro- nize using channels. But Hoare’s CSP was a formal language for describing the fundamental concepts of concurrency, not a programming language for writing executable programs.

Rob Pike Squeak

Rob Pike and others began to experiment with CSP implementations as actual languages. The first was called:

Plan 9 and Alef

The Plan 9 operating system carried these ideas forward in a language called Alef. Alef tried to make Newsqueak a viable system programming language, but its omission of garbage collection made concurrency too painful.

Miscellaneous Sources

Other constructions in Go show the influence of non-ancestral genes here and there;

Here too we find novel mutations.


Next: The Go Project, Up: Preface   [Index]