[HN Gopher] Project Oberon Emulator in JavaScript and Java
       ___________________________________________________________________
        
       Project Oberon Emulator in JavaScript and Java
        
       Author : pjmlp
       Score  : 135 points
       Date   : 2021-07-07 12:37 UTC (10 hours ago)
        
 (HTM) web link (schierlm.github.io)
 (TXT) w3m dump (schierlm.github.io)
        
       | eatonphil wrote:
       | It's always hard to find implementations of Oberon, so thanks for
       | sharing!
       | 
       | If you (not pjmlp) are into compilers or Oberon I highly
       | recommend Wirth's book, Compiler Construction, that walks through
       | its implementation and his way of thinking about languages and
       | implementations.
       | 
       | Edit: am I getting the language mixed up with the operating
       | system he also designed?
        
         | pjmlp wrote:
         | Nope, just like the Xerox PARC environments, for Niklaus Wirth
         | the programming language and OS overlap, hence why it is kind
         | of tricky to disassociate them.
         | 
         | By the way, Cedar was the inspiration for Oberon.
         | 
         | "Eric Bier Demonstrates Cedar"
         | 
         | https://www.youtube.com/watch?v=z_dt7NG38V4
        
           | jhbadger wrote:
           | Although it is certainly possible to separate the two. For
           | example, the Oxford Oberon Compiler for UNIX and Windows,
           | which is just a compiler for the Oberon language (basically
           | an object-oriented Pascal) rather than the OS/environment
           | 
           | http://spivey.oriel.ox.ac.uk/corner/Oxford_Oberon-2_compiler
        
             | pjmlp wrote:
             | Sure, that is why "Oakwood Guidelines for Oberon-2 Compiler
             | Developers" eventually came to be,
             | 
             | http://www.edm2.com/index.php/The_Oakwood_Guidelines_for_Ob
             | e...
             | 
             | My remark was more about how Niklaus Wirth saw the system
             | he designed and his goals behind it.
        
         | jhbadger wrote:
         | Yes, but it is confusing because the system language of Oberon
         | the OS is Oberon the language.
        
         | Torwald wrote:
         | > It's always hard to find implementations of Oberon, so thanks
         | for sharing!
         | 
         | You could make the wish to run an Oberon the perfect excuse to
         | go into retro-computing:
         | 
         | https://archive.org/details/amiga-oberon/mode/2up
        
         | _ph_ wrote:
         | Wirth is the one full stack developer in existence :)
         | 
         | He created Oberon the language to implement Oberon the
         | operation system and eventually designed a simple CPU to run
         | the full stack.
        
           | pjmlp wrote:
           | Twice.
        
           | musicale wrote:
           | Well there is nand2tetris.org and probably others.
           | 
           | Wirth and his systems are a treasure of the CS universe.
           | 
           | I also rather like Wirth's Lola hardware language and RISC
           | CPU. Great stuff.
        
       | lproven wrote:
       | Previous submission/discussion:
       | https://news.ycombinator.com/item?id=10060557
        
       | FpUser wrote:
       | Comparatively to a modern Delphi/FreePascal it is just very
       | limited. This might be what someone is looking for in that Pascal
       | land but is not my cup of tea.
       | 
       | Talking about language obviously. Not the whole computer system
        
         | pjmlp wrote:
         | By learning what was possible with GC enabled systems
         | programming languages in 1990's hardware is how we can move
         | beyond the unsafe layers of our current IT stacks.
        
           | FpUser wrote:
           | GC is very old concept. Nobody was ever prevented from using
           | languages with GC. But as a whole we do not have to move. And
           | frankly the dangers are overblown. My latest C++ product is
           | of decent size and does not use a single explicit allocation.
           | It is there though should I need it.
        
             | pwdisswordfish8 wrote:
             | How does that deal with stack-allocated data that gets
             | twiddled by some other code expecting that it will be able
             | to do so, where that expectation outlives the actual
             | stackframe itself?
        
           | gavinray wrote:
           | People on C++ chat balked when I brought up the idea that
           | garbage collectors were not inherently evil things, and that
           | some languages with a (for a few of these, optional) GC --
           | like D, Nim, and (written a particular way) even C#, could be
           | used for systems programming or OS'es.
        
             | pjmlp wrote:
             | Asian Bing used to be powered by Midori for a while.
             | 
             | Search Joe Duffy's keynote at one of Rustconf, towards the
             | end he mentions that even proven wrong with Midori running
             | in front of them, the Windows team was telling him it
             | wasn't possible.
             | 
             | By the way, F-Secure ships security keys with firmware
             | written in bare metal Go.
        
             | Rochus wrote:
             | These are two different questions: should C++ have a GC,
             | and is a GC language suitable for systems programming.
             | 
             | There is actually already a GC which works well with C++
             | and is also used by some of the mentioned languages:
             | https://www.hboehm.info/gc/. Personally I think the C++
             | specification is already far too big and complex (so why
             | adding even more stuff). A lot of GC languages were more or
             | less successfully used to develop operating systems (even
             | Lisp, Smalltalk and Java). From my point of view Oberon is
             | not particularly suited for this purpose, but obviously it
             | was used to implement the Oberon system (using some dark
             | corners of the SYSTEM module and undocumented language
             | features).
        
       | vidarh wrote:
       | To get somewhere with these, try pressing alt/meta while pointing
       | at a command, or right click on the first letter of a filename,
       | and press alt on a command. E.g. right click on "Draw.Tool" and
       | press alt on "System.Open" to start Draw.Tool.
        
       | willvarfar wrote:
       | I remember installing Oberon in about '97 in a quest to explore
       | something esoteric and as different from Windows as I could get.
       | Actually tried to use it and work through the tutorials and write
       | "gadgets". Coming from a turbo pascal and then Delphi background,
       | oberon was lovely!
       | 
       | But even then it was a what-could-have-been. Now, twenty five
       | years after that, it still has the mystique of a somehow more
       | powerful feeling system. I stare at it and feel it is somehow
       | more powerful than the mundane electron apps today, even though I
       | know what simple principles and how little code underlies it, and
       | how comparatively complicated and byzantine those dumb modern
       | electron apps are.
        
         | fao_ wrote:
         | Honestly, simplicity is the way of the future -- eventually we
         | will not be able to deal with the huge stack of abstractions,
         | and it will either topple like the apocryphal tower of bable,
         | or we will invent a """god""" (strong AI) to deal with it for
         | us.
        
       | butterisgood wrote:
       | Also see https://en.wikibooks.org/wiki/Oberon/A2 for a more
       | modern system you can run as a guest, use to build standalone
       | applications for your host, or run natively as an OS.
       | 
       | It's fun to explore and play around with, has a Zooming UI with a
       | virtually infinite (I think) desktop.
       | 
       | It's not a "pure" Oberon system as it has some extensions, but
       | they provide async/await (and seemingly a long time before that
       | caught on as a generally good idea! It's the basis of "active
       | objects")
       | 
       | The language report was updated 2 years ago (http://cas.inf.ethz.
       | ch/projects/a2/repository/raw/trunk/Lang...), and the repository
       | is fairly active given the relative obscurity of the system.
        
         | pjmlp wrote:
         | That is my favourite language version, although the original
         | was fun to use, I never liked Wirth's quest for language
         | minimalism.
        
       | [deleted]
        
       | lboasso wrote:
       | If you want to try out only the Oberon language, there are
       | several Oberon implementations for different platforms, including
       | embedded systems, native windows executables, and the Java
       | virtual machine: http://oberon07.com/compilers.xhtml
        
       ___________________________________________________________________
       (page generated 2021-07-07 23:01 UTC)