From Oberon to Go: A Short Family Tree

A compact overview of the Oberon family of languages and how their ideas lead to Go. The lineage runs from Pascal and Modula-2 through Oberon and its variants to Go, with shared emphasis on simplicity, strong typing, and clear semantics.

Oberon (1986) — Niklaus Wirth & Jurg Gutknecht

  • Evolved from Pascal and Modula-2; designed for simplicity and efficiency.
  • Strong typing, modular programming, integrated development environment.
  • Used in software and hardware (e.g. Ceres workstation); part of Project Oberon at ETH Zurich.

Oberon-2 (1991) — Hanspeter Mössenböck

  • Extension of Oberon with object-oriented features.
  • Type-bound procedures, read-only export of variables and methods.
  • Improved type safety and reusability.

Modula-3 (1988) — Luca Cardelli, James Donahue, Greg Nelson, Paul Rovner, Andrew Birrell

  • Evolution of Modula-2: simplicity, safety, systems programming.
  • Garbage collection, exception handling, strong type system with modules.
  • Concurrency and generic programming.

Active Oberon (1997) — Jurg Gutknecht

  • Extends Oberon with active objects and concurrency.
  • Combines object-oriented and system-programming features.
  • Runtime and language support for concurrent processes.

Zonnon (2005) — Jurg Gutknecht

  • Draws on Oberon, Active Oberon, and Modula-2.
  • Component-oriented programming, concurrency and parallelism.
  • Refined syntax and semantics.

Oberon-07 (2007) — Niklaus Wirth

  • Simplified, modernized Oberon.
  • Removed deprecated features; clearer syntax and safer semantics.
  • Streamlined compiler and language report.

Component Pascal (1997)

  • Clemens Szyperski: Component Pascal at Oberon Microsystems (1991–1997); component-based software; author of Component Software: Beyond Object-Oriented Programming.
  • K. John Gough: Co-developed Gardens Point Component Pascal for .NET.

Derived from Oberon-2 with stronger object-oriented and component-oriented features; designed for component-based software engineering and .NET integration (Gardens Point).

Go — Robert Griesemer, Rob Pike, Ken Thompson

  • Designed at Google (from 2007); open-sourced 2009, first stable release 2012.
  • Influenced by the simplicity and efficiency of Oberon and the Wirth tradition.
  • Targets multicore and networked systems: goroutines, channels, fast compilation.
  • Garbage-collected, statically typed, simple syntax.

How it connects

  • Simplicity and efficiency: Go inherits Oberon’s focus on clear, maintainable code.
  • Concurrency: Builds on ideas from Modula-3 and Active Oberon.
  • Type safety: Strong static typing throughout the family.
  • Components: Component Pascal’s component-oriented design is part of the same design culture.
  • Implementation and runtimes: Work on JIT and dynamic optimization (e.g. Michael Franz) influenced modern compilers and runtimes; Go prioritizes fast compilation and efficient execution in that spirit.
Slava Chernoy
Software Engineer