A programming language developed by
NiklausWirth and
JuergGutknecht at ETH Zürich starting 1985.
Features:
- ObjectOrientation to a small level: Basically all it supports are function pointers, structs and extension of structs. Sometimes it's not easy to do all the stuff with these functions only. Oberon2 has a higher level of support for ObjectOrientation.
- GarbageCollection: There is no way to delete a pointer directly.
- OberonOperatingSystem: It usually comes together with its own single user operating system but it's also available without it.
Heritage:
It is sort of like a refactoring of
ModulaThree.
Hmm, I would not say so, AFAIK
ModulaThree was designed in parallel to Oberon, and both are offshoots of
ModulaTwo. The genealogy of Oberon and its successors is nicely given in
http://www.oberon.ethz.ch/genealogy.html.
Apparently, it was a rewrite of Xerox's Cedar programming environment. Wirth and Gutknecht spent some time at XeroxParc and decided that the system was far too large. One of their targets was that Oberon should compile Oberon in less than a minute (on a 386 in those days).
Actually, the first Oberon machine was the Ceres-1, which was based on the National Semiconductor NS32032 (roughly equivalent to a 12MHz 286 in performance). If I remember correctly, the Ceres-1 I used during a three-week visit to ETH in early 1989 had 2Mb of memory, a 40Mb hard disk, 720k floppy, mouse, and a 1024x800 monochrome display. And yes, compilations were instantaneous. It was a beautiful system to work with. --
StefanVorkoetter
This will certainly work. On ETH, we used quite old Ceres-3, which included the
OberonOperatingSystem. I used it quite a lot in my studies, and while my programs were not huge, some of them had quite a few lines of code. However, I
never noticed compilation take
any time. It was always instant.
Code example:
We sum the contents in an array:
MODULE Example;
PROCEDURE ArraySum*(r: ARRAY OF INTEGER): INTEGER;
VAR
sum: INTEGER;
i: INTEGER;
BEGIN
sum := 0;
FOR i := 0 TO LEN(r) - 1 DO
sum := sum + r[i]
END;
RETURN sum
END ArraySum;
END Example.
The star in the procedure declaration is similar to the Java keyword public.
For more information see also:
http://www.oberon.ethz.ch/ or any of the "Oberon Trilogy" books which are all three out of print:
- Reiser & Wirth (1992) "Programming in Oberon - Steps beyond Pascal and Modula" ISBN 0-201-56543-9
- Reiser (1991) "The Oberon System: User Guide and Programmer's Manual" ISBN 0-201-54422-9
- Wirth & Gutknecht: "Project Oberon: The Design of an Operating System and Compiler" (1992) ISBN 0-201-54428-8
CategoryProgrammingLanguage