Languages Features Calendar CSV Lists Blog About Sponsor Add Language
GitHub icon



Oberon is a pl created in 1986 by Niklaus Wirth.

#128on PLDB 36Years Old 521Users
0Books 21Papers

Try now: Riju

Oberon is a general-purpose programming language created in 1986 by Niklaus Wirth and the latest member of the Wirthian family of ALGOL-like languages (Euler, Algol-W, Pascal, Modula, and Modula-2). Oberon was the result of a concentrated effort to increase the power of Modula-2, the direct successor of Pascal, and simultaneously to reduce its complexity. Its principal new feature is the concept of type extension of record types: It permits the construction of new data types on the basis of existing ones and to relate them, deviating from the dogma of strictly static data typing. Read more on Wikipedia...

Example from Riju:
MODULE Main; IMPORT Out; BEGIN Out.String("Hello, world!"); Out.Ln; END Main.
Example from hello-world:
MODULE HelloWorld; IMPORT Out; BEGIN Out.Open; Out.String('Hello World'); END HelloWorld.
Example from Wikipedia:
MODULE Rectangles; IMPORT Figures; TYPE Rectangle* = POINTER TO RectangleDesc; RectangleDesc* = RECORD (Figures.FigureDesc) x, y, w, h : INTEGER; END; PROCEDURE Draw* (r : Rectangle); BEGIN (* ... *) END Draw; (* Other procedures here *) PROCEDURE Handle* (f: Figure; VAR msg: Figures.Message); VAR r : Rectangle; BEGIN r := f(Rectangle); IF msg IS Figures.DrawMsg THEN Draw(r) ELSIF msg IS Figures.MarkMsg THEN Mark(r) ELSIF msg IS Figures.MoveMsg THEN Move(r, msg(Figures.MoveMsg).dx, msg(Figures.MoveMsg).dy) ELSE (* ignore *) END END Handle; PROCEDURE New* (VAR r : Rectangle); BEGIN NEW(r); Figures.Init(r, Handle); END New; END Rectangles.

Language features

Feature Supported Example Token
'Hello world'
Assignment :=
(* A comment
MultiLine Comments
(* A comment
(* *)
Print() Debugging Out.String
Semantic Indentation ϴ

Publications about Oberon from Semantic Scholar

title authors year citations influentialCitations
The programming language oberon N. Wirth 1988 242 19
From modula to oberon N. Wirth 1988 63 4
The Formal Specification of Oberon P. Kutter and A. Pierantonio 1997 29 0
The Oberon System family M. Brandis and R. Crelier and Michael Franz and J. Templ 1992 21 1
Do the Fish Really Need Remote Control? A Proposal for Self-Active Objects in Oberon J. Gutknecht 1997 14 1
From Modula to Oberon and the programming language Oberon N. Wirth 1987 14 1
Modula-2 and Oberon N. Wirth 2007 11 1
Dynamic semantics of the Oberon programming language P. Kutter 1996 10 1
An Object-Oriented Database Programming Environment for Oberon Jacques Supcik and M. Norrie 1997 9 0
Differences between Oberon and Oberon-2 H. Mössenböck and N. Wirth 1991 6 0
On the Essence of Oberon D. Naumann 1994 6 0
Programming without enumerations in Oberon Charles Lins 1990 5 1
A voyage to Oberon A. Radenski 1993 2 0
A first course in object-oriented programming using Oberon V. Mahnic and B. Vilfan 1996 2 0
From Modula to Oberon: The programming language Oberon N. Wirth 1989 2 0
Combined modelling and simulation of dynamic systems using Oberon M. Kottmann 1996 1 0
Building Your Own Tools: An Oberon Industrial Case-Study P. Reed 2000 1 0
Some Experience In Teaching An IntroductoryProgramming Course Using Oberon V. Mahnic 1997 1 0
Algebraic Semantics of the Oberon Target Machine A. Zamulin 1996 1 0
Control system design with Oberon Xiaobing Qiu and W. Schaufelberger 1994 1 0
Is Oberon as Simple as Possible? A Smaller Object-Oriented Language Based on the Concept of Module Type A. Radenski 1994 1 0
applescript.html · oberon.html · ml.html

View source

PLDB - Build the next great programming language · v2022 · Day 31 · Docs · Build · Acknowledgements · Traffic Today · Traffic Trends · Mirrors · GitHub ·