Oberon System, an OS Written in Oberon
en.wikipedia.org
en.wikipedia.org
http://modula-2.info/m2r10/pmwiki.php/Project/FAQ
FAQ asks good questions and with rational answers. I'm still going to fight them on uppercase just for sake of adoption and saving pinky fingers. Otherwise, Modula-2 makes a nice C replacement and a start on safer C++ alternative that's easy to grok. The language was originally used in Wirth's and Jurg's first homebrew system, Lilith. I have a link to that and many other Wirth works here:
https://news.ycombinator.com/item?id=10479213
Anyway, Modula and Oberon have already been used to build a number of maintainable, safer OS's and system software. Oberon did it with a GC for most of it while Modula-2 just tried to be safer about memory management. Very easy to compile & optimize. Adding macros for low-overhead abstractions and a solid stdlib to that would give a differentiator in systems programming without learning curve of Rust or C++.
Go achieved some of this already in application language space. It was a modern attempt on the Oberon programming experience. So, some precedent for my Modula-2 ideas being able to take off. I'll be fine if Modula-2R10 or an Oberon variant ends up a niche language with supported, constantly-enhanced compiler & decent community. It would be another secret weapon for startups like LISP, Ocaml, Haskell, and so on were. This time for systems or embedded use.
http://www.astrobe.com/default.htm
https://www.cs.cmu.edu/~chuck/pubpg/luv95.pdf
http://www.algo-prog.info/ocapic/web/index.php?id=OCAPIC:OCA...
https://hackage.haskell.org/package/atom
Ooops, maybe again for embedded use. :)
[0] http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=ht...
It's great that you used it to (rescue?) a distributed OS project. Thanks for the paper, too, as some of us collect these for any wisdom that might be lost to time. I'll read it when I have more time.
https://news.ycombinator.com/item?id=10793137
Seems great from what people say. Better than Oberon with great tooling. The linked PDF will tell you more. I need to play with it sometime to see what it can do.
This new variant of Modula 2 has objects, in a limited way, and avoids some of the strangeness of Oberon. Is it available for small embedded machines in the Arduino and low-end ARM class? It would be a good choice for when you just need to run some sensors and actuators, and need reliability.
Go is for larger systems, in the large web server class. It does too much implicit allocation and garbage collection for small embedded work.
I knew you'd like it. It's why I tried to message you in another comment about it.
" Is it available for small embedded machines in the Arduino and low-end ARM class? It would be a good choice for when you just need to run some sensors and actuators, and need reliability."
Good point. I just found it thanks to another HN commenter. I don't know much about the state except to say they're jump starting it with another Modula-2-to-C compiler. I have the source for the original mtc compiler if anyone needs it. Meanwhile, the new one needs skilled contributors.
The language spec itself is in alpha and can use input on its features. They're adding stuff that might help. I'd say now is the time to suggest things that offer safety or maintenance benefits without bloating the language. Anyone you or anyone else can think of. I for one intend to go through Ada and Eiffel looking for every trick they use for safety for internal and integrations. Then, see what can be applied to Modula-2 without ridiculous effort. Design by contract (or a knockoff), existential types, and SCOOP concurrency come to mind immediately. Plus, maybe a formal semantics or a subset to aid static analysis tools or formal verification.
Macro's, too. I want safe (or safe-ish) macros. My old BASIC/LISP-based 4GL had macros for DSL's. They were awesome. So good for portability, security, performance hacks... many things with less overhead or confusion. Let's let people extend the language without punishing them by forcing knowledge of compiler writing.
Whats your thoughts on jumpstarting with a M2-to-C compiler, borrowing from Ada/Eiffel in simpler form, and adding macros?
"Go is for larger systems, in the large web server class. It does too much implicit allocation and garbage collection for small embedded work."
Oh I agree. I was just pointing out they created an Oberon-style language with industrial enhancements to solve problems of Java, etc. It worked with quite a bit of uptake. Like Oberon, the programs are pretty simple, safer, compile fast, and run fast. Old benefits carried over into that application of Wirth style. So, applying it to a system-level language will probably re-create the prior benefits in that area.
I was at that symposium :)
Regardless, I promote it for consistent, system design with safer language that's efficient, portable, compiles fast, and mostly GC'd. Good traits other systems should emulate even if not the extra-weird interface.
Note: One thing about the interface is how it was ahead of the curve on hyperlinks. You can click highlighted text to perform actions and move around in the system. Sound like something that became a ubiquitous interface? ;)
http://www.pas.rochester.edu/~skulski/Presentations/BB_Class...
I keep thinking I need to play with it as it looks to be a great tool. Like an engineer's version of Visual Basic 6 I started on. Super easy to use, fast, and code-generating for GUI's without huge issues of C development. The complexity chart was nice while showing good old ALGOL and Turbo Pascal 2.0 fit nicely in the middle. I think the Oberon's are too simple but Component Pascal seems better.
Add Design-by-Contract and some more safety features to give Eiffel + Ada some nice competition in robust, OOP space. :)
Also their designers were pushing for programming with components, instead of pure OOP. Basically a type safe way of doing COM.
The first edition of "Component Software: Beyond Object-Oriented Programming" used mostly Component Pascal examples.
http://www.amazon.com/Component-Software-Object-Oriented-Pro...
For others, read more about the interclick at http://www.ethoberon.ethz.ch/ethoberon/tutorial/Mouse.html
My hypothesis is that there is a smaller presence of hype-oriented people (usually the majority), to skew off the first-page. Oberon submissions are in a niche that would be quickly overwhelmed on a normal day.
Project Oberon 417 points Fenume 6 months ago 87 comments (http://www.projectoberon.com/)
OberonStation, an Oberon RISC workstation 130 points sinrostro 2 months ago 96 comments (http://oberonstation.x10.mx)
Oberon – The Overlooked Jewel (2000) [pdf] 78 points marsmxm 4 months ago 23 comments (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90....)
Oberon System, an OS Written in Oberon 46 points DiabloD3 3 hours ago 20 comments (https://en.wikipedia.org/wiki/Oberon_(operating_system))
Project Oberon Emulator in JavaScript and Java 38 points cylinder714 4 months ago 10 comments (http://schierlm.github.io/OberonEmulator/)
Oberon vs. C++ (1994) 26 points networked 9 months ago 18 comments (http://www.modulaware.com/mdlt49.htm)
Oberon operating systems 9 points networked 5 months ago 0 comments (http://www.progtools.org/article.php?name=oberon§ion=compile...)
php - 75508
javascript - 39526
python - 38836
ruby - 25275
java - 23527
cobol - 8383
node.js - 6677
c++ - 4858
lisp - 2983
haskell - 2917
scala - 2730
perl - 2479
swift - 2173
c# - 1954
erlang - 1882
modula-2 - 1648
rust - 1277
object-c - 1223
coffeescript - 1136
lua - 713
pascal - 687
f# - 606
ada - 428
typescript - 339
modula-3 - 322
oberon - 243
fortran - 182