Recently I came across the site of Donald Daniel, an engineer who published an Oberon programming tutorial which contains some interesting sources in the process. Donald and I share an appreciation for Oberon and other Pascal derivatives. But we have different opinions when it comes to whitespace. So I reformatted five of Donalds sources. You be the judge. See the section called 'ReFormat'
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:
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.
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
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 the 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. Please also visit the "Project Oberon 2014" section for more documents. The few books that are still available here and there are:
|Project Oberon||ProjectOberon.pdf (private webspace)|
|Oberon with the Objective Oberon to C translator oo2c||Programming a computer by Donald Daniel|
|Compiler Construction (Oberon-0 edition)||CBEAll.pdf (private webspace)|
|Solutions for the problems presented in 'Programming in Oberon' by Martin Reiser||ProgrammingInOberon.tar.gz (private webspace)|
|Programming in Oberon (2004)
A derivative of Programming in Modula-2
|ProgInOberon.pdf (private webspace)|
|Publications of Professor Michael Franz (gone)||https://www.ics.uci.edu/~franz/Site/publications.html|
|The Programming Language Oberon SA||285.pdf (private webspace)|
|The Oberon Compiler for the Strong-ARM Processor||Oberon.ARM.Compiler.pdf (private webspace)|
|StrongARM compiler for Model Helicopter||eth314.pdf|
|Software for Model Helicopter Flight Control||eth316.pdf 284.pdf|
|Algorithms and datastructures
Oberon version, 1985
|AD.pdf (private webspace)|
|Programming in Oberon
M. Reiser and N. Wirth
|ProgInOberonWR.pdf (private webspace)|
|Mike Spivey's obc compiler||https://spivey.oriel.ox.ac.uk/mike/obc/|
|An introduction to Oberon||https://statlab.uni-heidelberg.de/projects/oberon/ItO/|
|Oberon, the overlooked jewel (gone)||https://www.ics.uci.edu/~franz/Site/pubs-pdf/BC03.pdf|
|The Oberon system family
Brandis, Crelier, Franz and Templ
|Code-Generation On-the-Fly: A Key to Portable Software (gone)||https://www.ics.uci.edu/~franz/Site/pubs-pdf/DissETH10497.pdf|
|Differences between Oberon and Oberon-2
|Oberon2.Differences.pdf (private webspace)|
|The programming language Oberon-2
|Oberon2.Report.pdf (private webspace)|
|From Modula-2 to Oberon
|ModToOberon.pdf (private webspace)|
|The programming language Oberon
|OberonReport.pdf (private webspace)|
|Coco/R - A generator for fast compiler front-ends||Coco.Report.pdf (private webspace)|
|A portable Oberon compiler||OP2.Paper.pdf (private webspace)|
|Object Oberon: an object oriented extension of Oberon||
Or, in private space 109.pdf
|Oberon-2, a high performance alternative to C++||
Modulator1.pdf (Bckup of webpage, just to be sure)
|An object oriented database programming environment for Oberon||JMLC97.js.pdf (private webspace)|
|Do the fish really need remote control?||aobjects.pdf (private webspace)|
|Combining Oberon with active objects||JMLC97.pdf (private webspace)|
|A run time debugger for Oberon:||Report5.pdf (private webspace)|
|Process visualization with Oberon system 3 and gadgets||TR-SE-94.15.pdf (private webspace)|
|The design of a distributed Oberon system (gone)||https://www-vs.informatik.uni-ulm.de/Papers/DHS/JMLC7.html|
|A comparison of object-oriented programming in four modern languages||CU-CS-641-93.pdf (private webspace)|
|Emulating an operating system on top of another||mf1993a.pdf|
|The programming language Oberon||
Report1992.pdf (Backup of webpage, just to be sure)
|Report of Ulm's oberon compiler||
RepUOC.pdf (backup of webpage, just to be sure)
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
but now it's gone. (Something similar can be found here:
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:
More to come...
But don't count on it!
Page created December 2004,