

Project Oberon, 2013 Edition - jcr
http://www.inf.ethz.ch/personal/wirth/ProjectOberon/index.html

======
username3720
The Oberon/Modula-2 family happens to be among my favorite languages. It's one
of the easier languages to implement and Amazon happens to have cheap Modula-2
compiler books. Wirth's own Compiler Construction book is free, though it's
the definition of terse. I rather liked Julian R. Ullmann's Compiling in
Modula-2 and John Elder's Compiler Construction.

There's still interesting work that is out there to rediscover involving the
family. Luca Cardelli wrote a rather good paper on typechecking in
Modula-2[1]. More recently there's projects like Modula-2 R10[2] in the works,
which could prove to be a rather fun language to work with.

I thought University of Cambridge's track for teaching Standard ML to C via
Modula-3[3] was a fantastic idea. (I also have a lot of love for SML.) By
learning types and modules via SML or Modula first, it will ease understanding
more advanced C concepts. C's weaker typing and implicit conversions make the
value of types less clear and easier to ignore. I feel that C's headers and
abstract data type construction are clunkier than they have to be and also
devalue the idea of modules.

I would love to see renewed interest in Modula-2 in particular. The death of
the commercial compiler industry has neglected it. It eschews garbage
collection and I think it resembles a fixed C. For roughly ten years General
Motors used it for embedded work.

Another excellent resource: [http://oberon07.com/](http://oberon07.com/)

[1]:
[http://lucacardelli.name/Papers/BasicTypechecking.pdf](http://lucacardelli.name/Papers/BasicTypechecking.pdf)
[2]:
[https://bitbucket.org/trijezdci/m2r10/src](https://bitbucket.org/trijezdci/m2r10/src)
[3]:
[http://www.cl.cam.ac.uk/~pr10/publications/plc93.pdf](http://www.cl.cam.ac.uk/~pr10/publications/plc93.pdf)

~~~
marktangotango
What are your thoughts on the link between go and oberon? Go is an aweful lot
like oberon, but with curly braces and a lot of syntactic sugar imo. I've
never read anything about pike citing oberon, but the influence on plan 9 is
clear, imo.

~~~
username3720
I think Lua is more related to the Oberon family than Go is. Lua's control
constructs are reminiscent of Modula-2. What Lua has done with tables and
modules is pretty elegant and I can see more of the highlights of the Oberon
family in Lua than I do Go.

The few Oberon-like aspects I see in Go beyond the obvious ':=' operator are
things like the 'range' keyword and methods. Both Oberon and Standard ML
encourage composition a bit differently when it comes to functions and
modules. You're lead to using more locally-defined functions in the context of
writing a function. Modules are more at the forefront, with less hesitancy to
define simple ones. Go I think more resembles an attempt to make a scripting
language out of Plan 9's C and threading with a few odd-and-ends. I do very
much like that it avoided objects.

However, I think even Modula-3 which appeared by the end of the late 80s
already had things that Go right now is lacking. That said, I've used Go for
some production projects. Some projects fit neatly into Go's standard library,
which is the star of the language along with its ideas on tooling. The
language itself I could take or leave.

~~~
pjmlp
> I think even Modula-3 which appeared by the end of the late 80s already had
> things that Go right now is lacking.

\- Type safe enumerations

\- Generics

\- Exceptions

\- Reference parameters

\- Range types

\- (real) Systems programming support

\- An OS implemented in it (Spin) with support for POSIX APIs

------
e12e
"Turning now to a practical aspect: The largest chapter of the 1992 edition of
this book dealt with the compiler translating Oberon programs into code for
the NS32032 processor. This processor is now neither available nor is its
architecture recommendable. Instead of writing a new compiler for some other
commercially available architecture, I decided to design my own in order to
extend the desire for simplicity and regularity to the hardware. The ultimate
benefit of this decision is not only that the software, but also the hardware
of the Oberon System is described completely and rigorously. The processor is
called RISC. The hardware modules are decribed exclusively in the language
Verilog. 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."

~~~
rev
[http://projectoberon.com/](http://projectoberon.com/) describes how to do it
(that was the reason for me to buy Spartan 3 board). And that's how the
finished project looks:
[http://www.schleibinger.com/bilder/oberon.jpg](http://www.schleibinger.com/bilder/oberon.jpg)
(thanks to Markus Greim for the photo).

------
pjmlp
I loved Oberon back in the day.

It showed me that a workstation OS done in a system programming language with
GC is possible and provides a usable experience.

Sadly, the industry decided to look elsewhere.

------
antigremlin
I wonder if anyone ever considered bootstrapping Project Oberon on a Raspberry
Pi module or some other open hardware system?..

~~~
pjmlp
Yes, the project seems stalled,

[http://www.ocp.inf.ethz.ch/forum/index.php/topic,726.0.html](http://www.ocp.inf.ethz.ch/forum/index.php/topic,726.0.html)

------
leandrod
Kind of ironical that the lousy layout & typography of the book gives away MS
Word usage (confirmed by PDF metadata), and that the Risc emulator available
at [http://ProjectOberon.com/](http://ProjectOberon.com/) is for MS Windows.
Self defeating?

~~~
FullyFunctional
1 second of Googling found me a cool Javascript emulator:
[http://schierlm.github.io/OberonEmulator/](http://schierlm.github.io/OberonEmulator/)

------
magoghm
I have the original edition of the book and I think it is one of the best
books about software that I've ever read.

