Oberon – The Overlooked Jewel [pdf] (ics.uci.edu)
This article presents selected facets of Project Oberon, the latter of [Pascal creator Niklaus] Wirth’s two large system-level design efforts. The leitmotiv of this project was a quote from Einstein, “make it as simple as possible, but not simpler”. And if any further evidence was still needed, Oberon provided the conclusive proof for Wirth’s mastery of The Art of Simplicity.
54 comments
[ 2.7 ms ] story [ 100 ms ] threadWhich is a shame, because the Imp of the Perverse programer in my dreams always wanted to do low level coding in some other language besides assembly, C or Forth...
(Note that both the Free Pascal project and its sister project, Lazarus, have horrid websites that are not reflective of the activity or quality of either product. In fact, the top post on the Lazarus website right now is about how they need to fix the website.)
Overall the current popularity of C (in systems software) gives an advantage to any language with similar syntax and semantics.
God I wish K&R layout would just up and die already, at least in terms of having function headers that span multiple screen widths. Personally, I like having "end" keywords, and a bit more freedom in the layout. (mostly, I like to be able to write one formal parameter per line in a function heading, and to use "Whitesmiths" layout vs K&R)
Go feels much more like Pascal semantically than it does like C. I wonder if there is any research to back up the decision to make Go look sorta, kinda, like C, or if it was all ego and/or inertia.
Seriously, I use Inferno every day, but my job is building software, so I mostly use it to write shell scripts and execute shell commands. It interfaces well with its host (I can thread calls to host commands in Inferno-sh pipelines), and runs over top of Windows, Linux, and MacOSX.
One advantage of using Limbo to play around with systems programming in Inferno is that since it's a VM, you can muck it up as much as you like without affecting your host. Also, with the clean, spare implementation, there's less cruft to learn to work with the OS (also the userland).
To start, there's a few blogs and Google code projects on programming in Inferno, as well as a book.
http://www.ueber.net/who/mjl/inferno/getting-started.html
http://doc.cat-v.org/inferno/books/inferno_programming_with_...
Limbo is also a good way to learn some of the ideas in Go, which also has modules, strong types, IPC over typed channels, automatic garbage collection, and simple abstract data types. (I'd love to see Inferno updated and re-implemented in Go.)
http://beeradvocate.com/beer/profile/287/1094
Note that I haven't tried this myself.
I haven't tried running the system in a few years, so your mileage may vary.
http://www.ethoberon.ethz.ch/oberon.net/
[edit] oops, that project has been dead for 10 years as well. Sorry about that
http://bluebottle.ethz.ch/download.html
(My Eyes! The goggles do nothing!)
You could probably boot the ISO image in a virtual machine (VMWare or such).
There's a version of Bluebottle that runs as an application on Windows. Here (A2.r4701.zip):
http://www.ocp.inf.ethz.ch/wiki/OCP/WinAos
A few things to note:
(1) unpack the zip file (2) Open a2\WinAos\Aos.EXE
Note that Aos.EXE will run full screen. There's no obvious way to minimize or hide it, but you can Ctrl-TAB back to another program.
The system log is displayed by default near the upper left corner of the screen. You'll want to close this as Oberon and Aos can not both be managing it at the same time.
(3) Close the System log by clicking the red button in the upper right corner of the System log window.
You'll see a palette of buttons in the lower left corner of the screen. We'll be using that to start Oberon.
There are two ways to start the hosted Oberon: full screen or within an Aos window. Since we're here for Oberon, we'll start it full screen.
(4) Click "Deveop" in the top row of buttons. (5) Click "Oberon FullScreen" which is revealed as the left-most bottom-most button.
To exit Oberon click "Quit" in Popups.Tool and choose "Shutdown".
To exit Aos click "System" and then "Shutdown" on the button palette in the bottom left of the screen.
Happy exploring!
http://www.excelsior-usa.com/xds.html
Stack based instruction set designed from scratch for programmers (and implementing high level languages). tagged architecture. Single cycle context switching. It was also a secure architecture directly on hardware, tasks couldn't even generate addresses to munge another tasks data if they wanted to.
Wish someone would bring that back.
https://en.wikipedia.org/wiki/Burroughs_large_systems
Turbo Pascal was about 90% of the speed of C with 30 to 50% of the bugs. And yes, I could use pointers and pointer arithmetic in TP if I wanted to bypass array bounds checking, but I had the choice when I needed to do so. Memory management is a lot easier with Pascal functions (and I assume Module/Oberon) than C as well, since the caller allocates the return value. Alternately, you can pass (always non null) values by reference instead of having to use (maybe null) pointers.
Why did Oberon become obsolete? I suspect we could learn a lot from an answer to this question.
Plus when my buddies and I were interested in it, there was no hardware in the States to run it on. It did get one of our number into the PC532 scene and I came up a semi-interesting idea to turn graphics chips into encryption engines based on the NS32GX32 instruction set.
These have a history of failing. Not because they are poor at some aspects of being an operating system. But because they force a programmer to give up all their tools. You can't typically use your favorite source control or text editor. (This is getting better as VM interoperability improves.)
So Oberon shares the same fate as other full-stack languages like Smalltalk and Forth. (I'm sure you can think of a few.) Awesome at what they do, but never gains traction.
However both of these are wildly popular. They slot into existing systems, making them easy to pick up and use.
I don't think there is a technical problem with images (which I think is what you're hoping to pounce on and debate ad nauseum), they just demand the rest of the ecosystem be built around them. This seems to be a trick you can get away with once per computing industry. Lots of people have come up with better image structures/concepts than hierarchical blobs of binary data, but they never seem to get significant traction because they are closed.
I'm just trying to untangle the different things you might be talking about - whether you're talking about development tools or run-time monitoring tools?
Oberon the system was an environment; Oberon the language was a language.
The problem is that the C environment is so dominant that we don't usually think of C in the same terms, or remember that systems languages like Oberon are intended to be used for writing OS-like and filesystem-like elements.
Come to think of it, even a "systems" language like Go is still used primarly for writing applications.
How useful is Oberon (the language) for working with filesystem-likes outside of Oberon (the system)?
And that niche is already occupied by the one true programming language.
> working with filesystem-likes
If you mean developing applications, there was „BlackBox Component Builder“
http://www.oberon.ch/blackbox.html
And all systems langauges will be used heavily for writing applications because there is typically a huge benefit of developing in the same language as the underlying OS.
2nd paragraph -- "In his modest Swiss Engineer’s manner, and quite untypical for a celebrated academic, Wirth consistently avoided exploiting the initially high-speeding Pascal bandwagon for the purpose of “marketing” his subsequent ideas. Indeed, he even refrained from giving his later programming-language creations names such as “Pascal-2”, “Pascal Plus”, or “Pascal-2000” but instead opted first for “Modula”, and then “Oberon”. Both of these languages would probably have been considerably more successful if the connection to the Pascal legacy had been made in their name, but this would have run counter to Wirth’s view that a marketer he is not."
Also see "Pascal and its Successors" http://www.swissdelphicenter.ch/en/niklauswirth.php
There were several novel research ideas tried for the Oberon system. I remember there was some paper called "Active Text" that allowed putting videos into code comments. (Probably that could have been done in Smalltalk, too.)
Finally, all of the books explaining details are heartily recommended. Wirth's compiler book (referred to at HN several times) is a classic easy-going introduction (the Oberon-0 grammar fits on only two pages IIRC! [1]), his algorithm book (also available for download, also referred to multiple times at HN) has some of the nicest descriptions that I did not find anywhere else (showing a divide-and-conquer approach to computing the median [near the Quicksort treatment]; plus polyphase sort, which might be useful again in data centers), and finally the Project Oberon book contains some unique treatment on system software that is not easily found anywhere else. For example, it contains the details on what's called PieceLinkText, which is the (at least AFAIK) best data structure to implement a text editor and it's operations. (Predating rope-strings by a fair amount of time, too.)
edit:
[1]: just checked my own copy; Oberon-0's grammar actually fits on one page, the full Oberon grammar fits on two pages!
[2]: URLs:
- Compiler book: http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf
- Algorithm book: http://www.inf.ethz.ch/personal/wirth/books/AlgorithmE1/AD20...
- Project Oberon: http://www.inf.ethz.ch/personal/wirth/books/ProjectOberon.pd...
I learned some interesting compiler techniques from reading that book.
Over time it was so disappointing, though, that the system never went anywhere. My biggest takeaway was to not be such a programming language purist. Now I'm a javascript fan. It's not pure or perfect, but it's simple and it nails the important things. Plus for the foreseeable future it's the most widely supported computer language in existence. Simplicity and pragmatism are really key.