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.