Project Oberon - The Design of an Operating System, a Compiler, and a Computer(inf.ethz.ch)
inf.ethz.ch
Project Oberon - The Design of an Operating System, a Compiler, and a Computer
http://www.inf.ethz.ch/personal/wirth/ProjectOberon/
6 comments
It's a small internet. I started the older version of this book yesterday after this [ https://www.youtube.com/watch?v=mFo6eyEsDoA ] talk on user interfaces referenced it.
So far it's a wonderful read, and a good example of thoughtful systems design... Incidentally, it's also shows one of the real benefits of Literate Programming, cause although the source itself doesn't really concern me, the text is gold.
So far it's a wonderful read, and a good example of thoughtful systems design... Incidentally, it's also shows one of the real benefits of Literate Programming, cause although the source itself doesn't really concern me, the text is gold.
Yes, I'm totally impressed by the conciseness of the book and the added code.
Also, a language.
Oberon-2 language has Pascal-like syntax, with Java-like features (classes, single inheritance, interfaces, garbage collector, sane module system instead of includes). Unlike Java, no VM is required, at least in the system that I used. Like Java and unlike C, it is impossible to write unsafe code accidentally - you have to go out of your way to access unallocated memory regions or break type safety.
Decent module system and straightforward grammar has also allowed writing simple and very fast compilers. It was fun to work with.
Oberon-2 language has Pascal-like syntax, with Java-like features (classes, single inheritance, interfaces, garbage collector, sane module system instead of includes). Unlike Java, no VM is required, at least in the system that I used. Like Java and unlike C, it is impossible to write unsafe code accidentally - you have to go out of your way to access unallocated memory regions or break type safety.
Decent module system and straightforward grammar has also allowed writing simple and very fast compilers. It was fun to work with.
Until a few years ago, Oberon-2 was the programming language of choice in the first year of CS at my university (except for a small course on C++). They use Python and more C++ now.
Modula-2 and Oberon-2 as first procedural and first OO language in my university as well (in Soviet Russia, no less :) )
I learned Modula-2 in my university (UMA, Spain) around 2000. they changed to C++ a year later. Even now days all the pseudocode used by many courses is strong inspired in Modula-2.
My Intro to Operating Systems class was in Modula-2 circa 1988. I really liked it. I was lucky enough to subsequently spend quality time with Modula-2 on the 8051 and Modula-3 on Ultrix (which was a really nice evolution of the language). Shame that line of innovation has withered.
We also programmed in Oberon at varsity. I think oberon with scheme and c would be a great set of 3 languages to teach from school level through till end of undergrad at varsity.
Java's VMs are just an implementation issue, there are plenty of native compilers to choose from.
Having said this, I really enjoyed it working with Oberon, it showed to me how one can implement a fully working desktop system in a GC enabled systems programming language.
I have used the original version, System 3 and Active Oberon aka AOS.
Sadly the industry is still stuck in C land for such tasks.
Having said this, I really enjoyed it working with Oberon, it showed to me how one can implement a fully working desktop system in a GC enabled systems programming language.
I have used the original version, System 3 and Active Oberon aka AOS.
Sadly the industry is still stuck in C land for such tasks.
BTW, as far as I understand Project Oberon uses Oberon language, not Oberon-2. Main thing - there is no inheritance and instance methods, they are achieved via aggregation and function tables.
Many parts with Oberon system would have been perfect for passing code around in the the Internet. The one pass compiler, for example, was lightening fast and compact.
I think Oberon system is worth of study.
I think Oberon system is worth of study.
Yes: Michael Franz, one of Wirth's PhD students, now a professor at UC Irvine, implemented such a system back in the 90's: http://www.jucs.org/jucs_4_5/open_standards_beyond_java/Fran...
Specially to learn that safe systems programming is possible, instead of spreading the school of C.
What makes the new version of this cool (for starters):
> The decision for a new processor was expedited by the possibility to implement it, that is, to make it concrete and available. This is due to the advent of programmable gate arrays (FPGA), allowing to turn a design into a real, functioning processor on a single chip. As a result, the described system can be realized using a low-cost development board. This board, Xilinx Spartan-3 by Digilent, features a 1-MByte static memory, which easily accommodates the entire Oberon System, incuding its compiler. It is shown, together with a display, a keyboard and a mouse in the photo below.
> The decision for a new processor was expedited by the possibility to implement it, that is, to make it concrete and available. This is due to the advent of programmable gate arrays (FPGA), allowing to turn a design into a real, functioning processor on a single chip. As a result, the described system can be realized using a low-cost development board. This board, Xilinx Spartan-3 by Digilent, features a 1-MByte static memory, which easily accommodates the entire Oberon System, incuding its compiler. It is shown, together with a display, a keyboard and a mouse in the photo below.
Wirth likes to design computer architectures to go with the languages he creates (he's got a EE undergrad). He did (at least) p-Machine & p-Code (Pascal virtual machine), Lilith (2901-based bit-slice graphical workstation implementing a Modula-2 virtual machine) and Ceres (a series of ns32000 based workstations running Oberon). He's been into FPGAs for a while. Smart guy.
Wow, such a small system, an ARM port would be nice.
The ARM family is the problem in that case. There's so much variation among the different versions that drivers are an issue. There is a version of the Oberon language, Astrobe, that runs on the a few of the smaller chips, created by CFB Software, but it's not a full operating system. http://www.astrobe.com/default.htm
I can't offer a URL but I thought Wirth ported Oberon to some sort of ARM processor (in the last ten years or so) to control an RC airplane or some such.
If anyone cares about Oberon on ARM, look here, the linked articles with "Helicopter" in the title tell the tale:
http://www.inf.ethz.ch/personal/wirth/Oberon/index.html
I suppose one could email Dr. Wirth asking for the source code but in reality, you'd be better off forking a newer version of Oberon. It should be as easy to port as a compiler can be.
http://www.inf.ethz.ch/personal/wirth/Oberon/index.html
I suppose one could email Dr. Wirth asking for the source code but in reality, you'd be better off forking a newer version of Oberon. It should be as easy to port as a compiler can be.
It would be nice to see Oberon ported to MIPS. maybe the PIC32 would be a good target.
Very nice indeed.