34 ms·
Project Oberon is awesome! I found the Project Oberon book in SFSU library and read it cover to cover. Such a tight, elegant system. Pretty much complete: Ob
by carapace 5y ago
Project Oberon is awesome!
I found the Project Oberon book in SFSU library and read it cover to cover. Such a tight, elegant system. Pretty much complete: Oberon OS includes compiler for Oberon language!
Language was self-hosted (compiler written in itself) and Prof. Wirth had a heuristic: no feature could be added to the lang/compiler if it made compiling the compiler slower.
There are several emulators, in C, JS, Java, and Python, and there's Verilog so you can burn to FPGA and make a real workstation. People have.
The system has two kinds of OOP. There is the C++/Java/Python/etc. kind where you basically add methods to a record type, and there is the old school Smalltalk message-passing kind, where elements of the OS communicate through an extendable message bus.
The GUI system, especially with the "Gadgets" subsystem, is mind-blowing. It would take too long to go over it at the moment, but there are features there that still haven't made it into mainstream GUI systems. If I get a minute later today I'll come back and add a note detailing some of the awesome if someone else hasn't already filled in the picture.
- kragen 5y agoI'm looking forward to reading your note; IIRC "Gadgets" postdates the book and so isn't documented in it.
- carapace 5y agoYes, Gadgets was written by a student later on. "The GADGETS user interface management system" https://www.research-collection.ethz.ch/handle/20.500.11850/68711 https://www.research-collection.ethz.ch/handle/20.500.11850/... I'm trying to find original sources, as my memory is a little foggy. There is some good information here: https://en.wikibooks.org/wiki/Oberon/ETH_Oberon/Tutorial https://en.wikibooks.org/wiki/Oberon/ETH_Oberon/Tutorial Basically it combined a nice Model-View-Controller widget collection with facilities like live introspection and editing of widgets, and embedding widgets in (multiple) documents (edit a spline widget in one view and it changes in all the views/docs in which it's embedded) It might sound a little plain vanilla now, but this was in 1990-1991.
- kragen 5y agoThank you!
- marktangotango 5y agoSome of the gui stuff actually made it into Plan 9, see the acme editor for more info. I love all of Wirths writing, he really does a lot to make complex topics approachable. Note there's a lot more to OOP than adding methods to records, on the surface yeah, but "primitive" sub-typing just scratches the surface. This isn't a criticism, just a note so anyone interested can learn more, Pierce's Types and Programming Languages is a good place to start.
- pjmlp 5y agoI have a old article with lots of screenshots, http://progtools.org/article.php?name=oberon§ion=compilers&type=tutorial http://progtools.org/article.php?name=oberon§ion=compile...
- 7thaccount 5y agoPretty amazing. I wish I could do my work on a truly lightweight system like this.
- ______-_-______ 5y agoLook at that install screen. Everything is listed in KB instead of GB. It's beautiful.
- chadcmulligan 5y ago> The GUI system, especially with the "Gadgets" subsystem, is mind-blowing. It would take too long to go over it at the moment, but there are features there that still haven't made it into mainstream GUI systems. Have you seen Delphi?
- carapace 5y agoYes. Oberon with Gadgets was like having the capabilities of Delphi live in the GUI. You could literally select widgets and open an inspector tool and edit them. It also had a facility similar to OLE ( https://en.wikipedia.org/wiki/Object_Linking_and_Embedding https://en.wikipedia.org/wiki/Object_Linking_and_Embedding ) implemented with message passing. When I said these features still haven't made it into mainstream GUI systems I didn't mean that they weren't represented at all. But Delphi is an app rather than a built-in part of the OS/GUI. OLE was in Windows, but it didn't really take off AFAIK. Smalltalk integrated GUIs (Pharo, Squeak, etc.) are very similar, albeit with a very different language and runtime architecture, but again, Smalltalk didn't break into widespread mainstream adoption.
- pjmlp 5y agoCOM is everywhere on Windows, OLE is just a specific set of COM interfaces. After the Windows team successfully sabotaged Longhorn efforts, they went on replicating the .NET designs for Longhorn in COM instead. So since Vista all major Windows APIs are COM, and WinRT is basically a marketing name for COM 2.0.
- zmix 5y ago> After the Windows team successfully sabotaged Longhorn efforts Why did they do that?
- pjmlp 5y agoPolitics, .NET has always been part of DevTools business unit, while C++ and Windows were under WinDev roof. Longhorn's goals was to rebuild Windows on top of .NET, naturally there were performance issues with the state of .NET 2.0 capabilities. However instead of working together , while improving the whole stack (languages and runtime) to make it possible, like Google teams have later done with Android and ChromeOS, they just deemed it impossible and started pushing for a reboot. When Sinfosky of the Office team took charge (another C++ holdout at MS), they picked up all the Longhorn's ideas redoing them in COM. It is no surprise how WinRT turned out to be COM 2.0 with him in charge of Windows 8. https://hackernoon.com/what-really-happened-with-vista-4ca7ffb5a1a https://hackernoon.com/what-really-happened-with-vista-4ca7f... "Turning to the past to power Windows’ future: An in-depth look at WinRT" https://arstechnica.com/features/2012/10/windows-8-and-winrt-everything-old-is-new-again/ https://arstechnica.com/features/2012/10/windows-8-and-winrt...