Main Page | See live article | Alphabetical index

Oberon programming language

Oberon is a programming language created in the early '90s by Professor Niklaus Wirth (the father of Pascal and the Modula and Modula-2 programming languages) and his associates at ETHZ in Switzerland. The name is from the moon of Uranus, Oberon. It is also, somewhat confusingly, the name of the Oberon operating system, written in Oberon, for the Ceres workstation (built around the National Semiconductor 32032 CPU) and for the Cameleon workstation. Oberon, the language, has now been ported to many other operating systems, and is even available in a Java based version (ie, Oberon source code compiles to Java source or, alternatively, directly to Java bytecode). The operating system Oberon is also available for several other hardware platforms than the original workstation.

The language continued the Wirth tradition of simplification without loss of 'power'. Oberon may be thought of as a Modula-2 with full object oriented class/object capabilities, though not exactly in C++ or Smalltalk style. On the other hand Oberon strips many "classic" features that can be implemented using objects, include enumerations, records, and many other features found both Pascal and Modula-2.

It is very much Modula-2 like in its syntax, but offers several interesting features. Perhaps the foremost is 'type extension' by which most of the reuseability of classes is made available. Furthermore, 'binding to a type' is included, which ties what would in Smalltalk be called 'methods' to a type (ie, class), with the result being most of what is called object orientation in other language designs. As with Java, garbage collection is an inherent part of the language. It also offers an interesting feature which is only recently becoming available in more prominent development systems: exportability of procedures. Imagine that for some program you create a PNG viewer procedure and that you export it: any program on the system will be able to view PNG files merely by calling the viewer! That's true reusability.

The elegance and simplicity also, probably not coincidentally, lead to considerable space and coding efficiency. The full language can be specified in something like a page of EBNF, the Oberon report is, at 16 pages, about 1/3 the size of the Modula-2 report, and one of the early full compilers was about 4000 lines long. The entire operating system, compiler, Web browser, TCP/TP networking, a GUI, and assorted utilities will fit on one 3.5" floppy disk.

It is true that something like this degree of code reuse is now possible on other systems (see for example the use made by Galeon of the Mozilla engine). The advantages being promoted by Microsoft as part of its .NET project and achieved by several years of Java development are similar, but the mechanisms in Oberon are not only more 'elegant' but far more efficient and simpler than for either Java or .NET, and than those used in other systems today. Because of the clever and elegant nature of the Oberon design, the compiler tracks many more bug possibilities, and so Oberon programs are also less likely to be buggy. The code will be both smaller than that in other languages (mistakes will be less easily lost in a forest of detail) and less opaque (fewer language 'features' mean less chance of confusing them), as well as less subject to loopholes such as data typing problems (eg, buffer overflows, variant records / unions / other baroque data type mismatches), memory 'leaks' from memory improperly managed by the programmer, and pointer misuse or confusion. Program maintenance will be reduced, programmer productivity will be enhanced, and so on. All of which was a part of the design intent for Oberon.

No cost implementations of Oberon (the language) and Oberon (the operating system) can be found on the Internet (several are from ETHZ itself). A few changes were made to the first released specification ('WITH' was put back in, for instance); the result was Oberon 2, currently the most common implementation. There is also a .NET version in development for those interested in Microsoft's vision. There is a release called Native Oberon. As it includes an operating system, it can directly boot on PC class hardware.

Development has continued on languges in this family. A further extension of Oberon 2 produced Component Pascal, currently supported by a commercial company spun off from ETHZ. In addition, the Lagoona and Obliq languages carry the Oberon spirit into specialized areas. ETHZ has released Active Oberon which supports active objects, and Bluebottle and operating system and environment (JDK, HTTP, FTP, etc) for the language. As with many prior designs from ETHZ, versions are available for download on the Internet. As this is written, both single and dual Intel IA32 CPUs and the StrongARM family are supported.

External links: