Next: , Up: Introduction to Go   [Index]


The Origins of Go

The figure below shows the most important influences of earlier programming languages on the design of Go.

/usr/local/dev/Programming/Languages/Golang/GoProgLang/resources/images/originsgo-25

C

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

Niklaus Wirth: Pascal, Modula-2, Oberon, Oberon-2, Project Oberson

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

Tony Hoare: 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.

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, Newsqueak

Rob Pike and others began to experiment with CSP implementations as actual languages.

Plan 9: 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 Others

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: Introduction to Go   [Index]