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