What is Oberon?

Now, have you ever seen this? Probably not. And the picture is very bad. I had to downsize it to fit on the frame. So it doesn't look half as good as it does when running. But do yourself a favor and click on the picture to see the full snapshot (1024 x 768) of what the Oberon desktop looks like.


Now, wasn't that a beauty? And you get all of it for free! And for just about any platform there is an Oberon version. Windows, Mac, Linux, DOS, you name it and there is an Oberon desktop. Go check it out at the Oberon site and download the versions you require. The latest version of Native Oberon (the Alpha release) is stored on this site. In case the swiss loose it. Use the navigator, Luke!

The Oberon desktop.

The Oberon desktop is made up of two main parts:

  1. the left part is the user track in which your applications open, each in their own 'viewer'. What MS call a Window, Oberon calls a Viewer. Which is more logical anyway.
  2. the right part is the system track. In the current setup, it consists of the System.Log in which all system messages are printed. This viewer is auto scrolling and you can scroll back as far as needed.
    The second viewer is the System3.Tool and it is a huge interactive menu system. You can start just about any command with this Tool.
You can start any command from anywhere in the Oberon system. Suppose you want to run the command Partitions.Show and those letters happen to be in an E-mail from you to president Chirac of France, just point your mouse to the letters and middle click with your mouse. The command is executed.
If Mr Chirac didn't happen to mail you, you can also type the words you need in the System.Log or in the System3.Tool viewer.

Entering text.

If you want to enter some text in a viewer (perhaps to have it executed), just move the mouse cursor into the System.Log viewer and press the left key on the mouse. A pointy hat will be shown on screen and at that particular place, all tokens you choose will be inserted into the viewer.
On some Oberon systems, the arrow keys will move you through the text and on others you need the mouse to move the pointy hat.

Marking text.

Just put the pointy hat somewhere in a text area. Then press the right key on the mouse and drag the mouse over the text. An area will be painted in another colour than the rest of the text. You are now selecting text.
Read the Oberon tutorials to find out how to copy/paste/delete selected texts. The way Wirth and Gutknecht did this is novel and refreshing, to say the least. Only a true genius can think of something similar.

Some literature about Oberon.

There are books and articles about Oberon, but you have best chances on the web. Many of these files used to be (gzipped) postscript files. I downloaded them, unzipped thye lot and converted the PS files into PDF. Then I stored them in private webspace. This way the files are easier to access for the world and they are saved from reorganisations. The few books that are still available here and there are:

  1. 'Programming in Oberon, steps beyond Pascal and Modula' by Martin reiser and Niklaus Wirth. Check www.amazon.de for availabillity.
  2. 'Project Oberon: the design of an operating system' by Niklaus Wirth and Jurg Gutknecht is also a classic and it is still available from the ACM in New York for a reasonable price (at the current Euro exchange rate).
  3. Check out the Oberon website at http://www.oberon.ethz.ch and follow the related links.
Here is a collection of links to internet sites that have a lot of attention to Oberon related stuff. All links open in a new window. If you get a 404, just kill the window. I put labels in front of each link, but that's just for bookkeeping. All links share the same value to me.

Report URL
Compiler Construction http://www-old.oberon.ethz.ch/WirthPubl/CBEAll.pdf
Oberon sourcecode http://xbean.cs.ccu.edu.tw/~dan/Oberon/o2c-1.16/lib/
Programming in Oberon (2004)
A derivative of Programming in Modula-2
http://www-old.oberon.ethz.ch/WirthPubl/ProgInOberon.pdf
Publications of Professor Michael Franz http://www.ics.uci.edu/~franz/Site/publications.html
A Computer System for Model Helicopter Flight Control. Hardware Core http://www.oberon2005.ru/paper/eth284.pdf
http://www.inf.ethz.ch/personal/wirth/Articles/OberonARM/284.pdf
The Programming Language Oberon SA http://www.oberon2005.ru/paper/eth285.pdf
http://www.inf.ethz.ch/personal/wirth/Articles/OberonARM/285.pdf
The Oberon Compiler for the Strong-ARM Processor http://www.oberon2005.ru/paper/eth314.pdf
http://www.inf.ethz.ch/personal/wirth/Articles/OberonARM/Oberon.ARM.Compiler.pdf
Software for Model Helicopter Flight Control http://www.oberon2005.ru/paper/eth316.pdf
Algorithms and datastructures
Oberon version, 1985
http://members.home.nl/jmr272/Oberon/AD.pdf
Programming in Oberon
M. Reiser and N. Wirth
http://www-old.oberon.ethz.ch/WirthPubl/ProgInOberonWR.pdf
Mike Spivey's obc compiler http://spivey.oriel.ox.ac.uk/mike/obc/
Oberon systems http://www.oberon.ethz.ch/downloads/index
http://www-old.oberon.ethz.ch/download.html
An introduction to Oberon http://statlab.uni-heidelberg.de/projects/oberon/ItO/
Oberon, the overlooked jewel http://www.ics.uci.edu/~franz/Site/pubs-pdf/BC03.pdf
The Oberon system family
Brandis, Crelier, Franz and Templ
http://www.oberon2005.ru/paper/p_obesys.pdf
Oberon with Gadgets: A Simple Component Framework http://www.ics.uci.edu/~franz/Site/pubs-pdf/BC02.pdf
Code-Generation On-the-Fly: A Key to Portable Software http://www.ics.uci.edu/~franz/Site/pubs-pdf/DissETH10497.pdf
Differences between Oberon and Oberon-2
H. Mössenböck
http://members.home.nl/jmr272/Oberon/Oberon2.Differences.pdf
The programming language Oberon-2
H. Mössenböck
http://members.home.nl/jmr272/Oberon/Oberon2.Report.pdf
From Modula-2 to Oberon
Niklaus Wirth
http://members.home.nl/jmr272/Oberon/ModToOberon.pdf
The programming language Oberon
Niklaus Wirth
http://members.home.nl/jmr272/Oberon/OberonReport.pdf
Coco/R - A generator for fast compiler front-ends http://members.home.nl/jmr272/Oberon/Coco.Report.pdf
A portable Oberon compiler http://members.home.nl/jmr272/Oberon/OP2.Paper.pdf
Object Oberon: an object oriented extension of Oberon ftp://ftp.inf.ethz.ch/pub/publications/tech-reports/1xx/109.pdf
Oberon-2, a high performance alternative to C++ http://www.modulaware.com/mdltws.htm
An object oriented database programming environment for Oberon http://members.home.nl/jmr272/Oberon/JMLC97.js.pdf
Do the fish really need remote control? http://members.home.nl/jmr272/Oberon/aobjects.pdf
Combining Oberon with active objects http://members.home.nl/jmr272/Oberon/JMLC97.pdf
A run time debugger for Oberon: http://members.home.nl/jmr272/Oberon/Report5.pdf
Process visualization with Oberon system 3 and gadgets http://members.home.nl/jmr272/Oberon/TR-SE-94.15.pdf
The design of a distributed Oberon system http://www-vs.informatik.uni-ulm.de/Papers/DHS/JMLC7.html
A comparison of object-oriented programming in four modern languages http://members.home.nl/jmr272/Oberon/CU-CS-641-93.pdf
Emulating an operating system on top of another http://www.oberon2005.ru/paper/mf1993a.pdf
The programming language Oberon http://www.mathematik.uni-ulm.de/oberon/reports/report-1992.html
Report of Ulm's oberon compiler http://www.mathematik.uni-ulm.de/oberon/0.5/articles/oc.report.html

An article about why Oberon was made

The text that follows was found accidentally when looking for something else at Google. The original text could be viewed at http://www.scmags.net/opinions/mh/200101mh.shtml . but now it's gone. (Something similar can be found here: http://www.guardian.co.uk/technology/2005/may/15/comment.microsoft .) For reasons of safety, however, I put the full text online on this page as well. So if the original publisher decides to make some space, the text will remain in this section. Which is exactly what happened.
I do not agree with the full text, but that might be caused by my admiration for Professor Wirth. But I decided to publish the unchanged article here.

We should all, by now, be familiar with Moore's Law: the rule that dictates how much faster and cheaper microprocessors will be each year.
Less familiar, perhaps, is a corollary that is most frequently known as Wirth's Law (a reference to Pascal programming language inventor Niklaus Wirth) but should more accurately be called Reiser's Law, after one-time Wirth collaborator Martin Reiser, the man who coined it.
I first came across this in the introduction to Project Oberon, a stupefyingly dull (but extremely worthy) 1992 book by Wirth and Jürg Gutknecht that detailed the building of Oberon, a compact workstation operating environment combining a programming language and some operating system functions. Project Oberon was designed to exemplify Einstein's dictum that everything should be made "as simple as possible - but no simpler".

A driving force behind this project was Reiser's assertion that "software gets slower more quickly than hardware gets faster", a simple statement that feels more and more like true wisdom the longer you think about it (an alternative version that's both more pithy and less profound is the hoary old "Intel giveth and Microsoft taketh away").

A decade ago I also lived in the French Riviera, and my main PC had a 16 MHz 80386SX microprocessor - hardly leading edge at a time when the first i486 chips were appearing, but respectable enough - with a hefty RAM allocation of 5 MB and a 100 MB hard disk (a recent upgrade from a 40 MB item). I ran Microsoft Word for Windows, sent and received Emails, and communicated with other computer users across the nascent Internet. From time to time I listened to CDs playing on my single-speed CD-ROM drive, via a Creative Labs Sound Blaster Pro and the amazing new Windows 3.0 with Multimedia Extensions 1 OS.
Today, my main computer has a pair of 500 MHz processors (again, not too impressive in the post-gigahertz era), 256 MB and 18 GB of RAM and disk respectively, and a DVD drive. I mostly use it for running Microsoft Word 2000, sending and receiving Emails, and communicating with other computers across the Internet. Occasionally, I use the DVD drive for playing music through my Sound Blaster (a Live!, these days), although I very rarely use it for watching DVDs - they belong in the living room, not in the office.
And for all these tasks, my current PC is - in most practical terms - slower than my old 386 was. It takes longer to boot up, and programs take longer to load. Since the effective performance of a word processor is limited more by the abilities of the person wanting words to be processed, the fact that I don't type any quicker these days means that Word 2000 shows no real performance gain over its ancestor. Equally, the Internet work is not noticeably faster.
OK, that's not quite true - the fact that I now use ISDN rather than a 14.4 Kbps US Robotics HST modem means that plain text Emails can be sent in somewhat fewer seconds than they were back then. However, the more interactive elements of telecommunications are, if anything, slower.

In 1991 I used a bunch of "conferencing" systems - CIX in the UK, BIX and CompuServe in the US, CalvaCOM in France. Most of these allowed you to read and compose messages offline (using a "reader" such as CompuServe's wonderfully user-hostile CIM), which meant you could page through hundreds of messages in a few seconds - loading each message merely required my tiny PC to access its local hard disk. Now - generally speaking - I have to use Web-based discussion boards. And these are, frankly, awful at doing a job that was done superbly by the old conferencing systems because they impose such a delay between the reading of one message and the next.
Of course, I can do a lot more with my powerful new(ish) computer than I could with the old one. I can render print-quality A4-sized Photoshop images, edit digital audio and video, play MP3 audio files and (if I happened to like them) 3D games. Most importantly, I can browse the Web - the real Web, I mean, not the bits that do a bad imitation of an old-school BBS.
But even that is getting slower more quickly than its supporting technology is getting faster. When I first started surfing back in the days of NCSA Mosaic, my 28 Kbps modem was downloading pages that mostly contained a couple of kilobytes of text. A typical page that I grab with my 64 Kbps ISDN connection today can easily contain 20 times as much data in the form of text, images and client-side scripting code - although it won't necessarily contain more actual information than the older style of page.
Apart from gamers (who are probably better off with a PlayStation 2), professional designers (who have always had high-end hardware anyway) or a few academics performing complex calculus and the like, computer users generally perform much the same tasks they did a decade ago. Why, with much "faster" systems available, do they take no less - or, worse, more - time to perform? Project Oberon was a technical success but failed to generate much enthusiasm outside a narrow sector of the academic world. Maybe it's time, however, to revisit its underlying principles.

I believe that business could benefit from demanding equipment that delivered real performance benefits (rather than those that appear in benchmarks), forcing hardware and software manufacturers, finally, to deliver on the promises of measurable productivity gains they have been making since time immemorial. If they can't deliver, then we should insist on Moore's Law being applied in a different way - not making hardware faster for a given price, but cheaper at a given performance point.
Then we just have the Herculean task of getting the software houses to deliver applications that break Reiser's Law and follow Einstein's advice: programs that are as simple as possible (although not, obviously, any simpler).

I liked the sentence by Martin Reiser (who was more than a one time contributor to Professor Wirth) about the software:

software gets slower more quickly than hardware gets faster

It has been the reason why I have remained programming in assembler for such a long time (until the introduction of the Pentium processor).

More to come...

But don't count on it!

Page created December 2004,

Page equipped with GoogleBuster technology