[HN Gopher] Project Oberon: Design of an operating system, a com...
       ___________________________________________________________________
        
       Project Oberon: Design of an operating system, a compiler, and a
       computer [pdf]
        
       Author : JoachimS
       Score  : 169 points
       Date   : 2024-01-04 16:59 UTC (6 hours ago)
        
 (HTM) web link (people.inf.ethz.ch)
 (TXT) w3m dump (people.inf.ethz.ch)
        
       | zengid wrote:
       | RIP Prof Wirth
       | 
       | Side note: can we get a better tag on this to show it's a PDF
       | file? I think the source is reputable but I always freak out when
       | a url goes to a pdf.
        
         | forgotpwd16 wrote:
         | Usually links leading to pdf are denoted with [pdf] at the end.
        
           | zengid wrote:
           | it wasn't formatted like this at the time
        
         | userbinator wrote:
         | The URL already ends in .pdf .
        
       | i_don_t_know wrote:
       | That's only the first half of the book. You can find all parts
       | and software at: https://people.inf.ethz.ch/wirth/ProjectOberon/
        
       | jll29 wrote:
       | p. 59-75 covers the fast implementation of piece lists (recently
       | covered on HN).
       | 
       | (Just saying because there were many threads on how to represent
       | text buffers for fast editing on HN:
       | 
       | https://news.ycombinator.com/item?id=15381886
       | https://news.ycombinator.com/item?id=11244103
       | https://news.ycombinator.com/item?id=14129543
       | https://news.ycombinator.com/item?id=15387672
       | https://news.ycombinator.com/item?id=14046446 )
        
       | zvmaz wrote:
       | > 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.
       | 
       | I wonder how it compares to Nand To Tetris. Other than that, it
       | seems really interesting. Has anyone read it?
        
         | 082349872349872 wrote:
         | It's much less pedagogical than Nand to Tetris; if you need the
         | background, read that first, then read this.
         | 
         | (he eventually ported the hardware description to his own HDL,
         | Lola)
        
         | i_don_t_know wrote:
         | Project Oberon describes the final system as it is. It's not a
         | tutorial that takes you step by step from the basics to a
         | complete system.
        
         | hnthrowaway0328 wrote:
         | Nand2Tetris is the perfect introduction project of this field
         | that spans Hardware, OS and compiler design. That said, I
         | completed the project and found it lacking depths and in-depth
         | investigation of all topics. But this is what makes it the
         | perfect introduction project.
         | 
         | The University of Tokyo has a similar project that I believe
         | can serve as a stepping stone. Check out the CPU experiment:
         | https://ytsmiling.tech/2017/04/02/cpuex.html
         | 
         | If you don't like it (probably due to lack of documentation),
         | at this stage you can also design your own projects. Basically
         | a CPU sub-project that uses Verilog or any HDL, which leads to
         | an OS and compiler project.
        
         | retrac wrote:
         | As another user said, it's not oriented towards a beginner. You
         | would want some, maybe most, of the background in NAND 2 Tetris
         | first. Chapter 16 about that mentioned processor for example,
         | and it just throws you in the deep end with the Verilog code.
         | Here's the CPU interface with the system bus, the registers,
         | and how the multiplier unit works.
         | 
         | The good part is the commentary about the design decisions and
         | trade-offs. That is invaluable, because it is the wisdom of
         | Niklaus Wirth, towards the end of his career, drawing on a
         | lifetime of experience. He was one of those rare polymaths,
         | with a broad and deep understanding, of both the circuitry, and
         | the more abstract parts of CS. He always generalized, tried to
         | understand the principle, and places things in their historical
         | context and explains how they developed. Because it's Wirth,
         | the history lesson is often based on personal experience. It
         | produces a good synthesis, in my opinion. For example:
         | 
         | > The second [interface] (MouseX) is included here for
         | historical reasons. It was used by the computer Lilith in 1979,
         | and used the same Mouse as its ancestor Alto (at PARC, 1975).
         | It is distinguished by a very simple hardware without its own
         | microprocessor, which is currently contained in most mice. This
         | goes at a cost of a 9-wire cable. But today, microprocessors
         | are cheaper than cables. We include this interface here,
         | because it allows for a simple explanation of the principle of
         | pointing devices.
        
       | pjmlp wrote:
       | After this follow up on the Oberon System 3, with its Gadgets
       | component model, and a mix of JIT/AOT compilers,
       | 
       | "The Oberon companion - a guide to using and programming Oberon
       | System 3"
       | 
       | https://www.semanticscholar.org/paper/The-Oberon-companion-a...
       | 
       | You can access the source code from Rochus fork,
       | 
       | https://github.com/rochus-keller/OberonSystem3
       | 
       | Or the Active Oberon evolution, although not directly done by
       | Niklaus Wirth,
       | 
       | https://gitlab.inf.ethz.ch/felixf/oberon
       | 
       | Screenshots and OS Manual,
       | 
       | https://gitlab.inf.ethz.ch/felixf/oberon/-/blob/main/ocp/Doc...
       | 
       | Or Component Pascal and Blackbox IDE, created by a startup out of
       | ETHZ
       | 
       | https://blackboxframework.org/index.php
        
         | Rochus wrote:
         | The Active Oberon evolution started with the Active Object
         | System (AOS) and the Bluebottle window manager; the source code
         | of the last "Current" release can be accessed e.g. here:
         | https://github.com/OberonSystem3/AOS_Bluebottle_Sources. If you
         | want to study the source code, you can use this tool:
         | https://github.com/Rochus-Keller/ActiveOberon.
        
       | guidoism wrote:
       | I re-typeset the text in TeX and have a nicer looking PDF for
       | those that care: https://github.com/guidoism/tex-oberon
        
         | zvmaz wrote:
         | I really liked reading the README. It shows that you are
         | passionate about Project Oberon and the book. This in turn
         | motivates me to read it. Thank you for your work.
        
         | sydbarrett74 wrote:
         | Thank you for your hard work and dedication in keeping this
         | alive.
        
         | loup-vaillant wrote:
         | Awesome! I'm guessing there's a not-too-hard way to change
         | change the paper format? I'm thinking of going to A5 so I can
         | bind myself a nice book.
        
       | ikhare wrote:
       | Back when I took compilers in college we wrote a compiler for
       | Oberon. I couldn't quite find my original class site, but this
       | one seems roughly right (from a few years before I took the
       | class): https://cseweb.ucsd.edu/~wgg/CSE131B/
       | 
       | It was a great teaching language.
        
       | I_am_tiberius wrote:
       | In an interview with Niklaus he was talking about a 500 page
       | document...
        
       | fmeyer wrote:
       | The idea of an education computer is bugging my mind in the last
       | 5 years.
       | 
       | If you consider modern hardware and OS is practically impossible
       | to have a simple enough machine that you could teach the young
       | generation. Fantasy consoles like pico-8 are good options for
       | programming, but not for understanding the hardware underneath.
       | That way you still have school who use old architectures for
       | teaching.
        
       ___________________________________________________________________
       (page generated 2024-01-04 23:00 UTC)