7 ms·
Rendering the project irrelevant at a stroke. A pity. Does the language do anything that Dart doesn't?
by MaxBarraclough 6y ago
Rendering the project irrelevant at a stroke. A pity.
Does the language do anything that Dart doesn't?
- protomyth 6y agoWell, they did write an OS in Oberon. Not sure how much of the language is included in the Script. 2007 probably needs to be added to the title. I get the feeling that progress is a bit slower than anticipated.
- dmitriid 6y agoIt doesn't do anything most modern languages do. Oberon is one of the confusing family of Oberons that come from a confusing family of Modulas that comes from Pascal. Most of them come from Niklaus Wirth or try to build on his ideas. The reason I say confusing is that, for example, there's no one Oberon. There's Oberon, Oberon 2, Active Oberon etc [1]. They differ in things like - they may or may not have things like for loops - they may or may not have various OOP features - they may or may not have pointers - they may or may not have three different types of looping constructs with different constraints (you can exit a do loop, but not a while loop etc.) and so on, depending on ... well depending on nothing but Wirth's ideas of what a programming language should be. There are at least two OSes built with Oberon: Oberon and Bluebottle. There are fans of this family of languages, and I've even participated in discussions (on a Russian programming forum) where people would defend to the death the choice of three different loop constructs with different semantics (you can break inside LOOP, but not inside FOR or WHILE etc.), or the difference between procedure and function etc. [1] https://en.wikipedia.org/wiki/Oberon_(programming_language) https://en.wikipedia.org/wiki/Oberon_(programming_language) [2] https://en.wikipedia.org/wiki/Oberon_(operating_system) https://en.wikipedia.org/wiki/Oberon_(operating_system) [3] https://en.wikipedia.org/wiki/Bluebottle_OS https://en.wikipedia.org/wiki/Bluebottle_OS
- MaxBarraclough 6y agoThanks for the well-informed response. Sounds rather shallow to me, really. I can see the point in building a kernel in the safe subset of Rust, to provide strong assurances about memory-management. I can see the point in building a kernel in SPARK to provide even stronger and more general assurances of correctness. I see the point in developing a kernel using a fully formal methodology, like Sel4. I can see the fun in hand-tuned kernels written in assembly, like KolibriOS. What's interesting about using a language with slightly different imperative building-blocks? Rust wouldn't be worth learning if it were merely C with different iterative statements. Or are there significant advantages to the various Oberons, that I'm unaware of?
- cmrdporcupine 6y agoIf I understand it correctly, the primary purpose of the whole Oberon ecosystem is as an educational tool. And in that, I can see value. Having a holistic consistent system in one language/paradigm that you can build or analyze from the ground up has definite pedagogical value.
- Rochus 6y agoRight.
- cedex12 6y agoI'm no expert but it seemed to me the whole Pascal, Modula, Oberon story is in big part about Wirth chasing/exploring some optimal/balanced¹ programming language. So, it makes a lot of sense to have many variants and an evolution retracing both his learnings and opinions (that can change with time, and do, hopefully) and exploring different variations on a common theme. And developping an OS in any of these languages is pretty much a real-life test of their adequacy (meaning they are not just some vacuous formal exercise). Iirc, Wirth achieved some relatively lean but powerful languages at some point. Also, I don't understand your opposition to writing a kernel in some form of Oberon, but accepting pretty much any other language/paradigm ? ¹ Not that there is only _one_ optimal language.
- MaxBarraclough 6y ago> I don't understand your opposition to writing a kernel in some form of Oberon, but accepting pretty much any other language/paradigm When people talk about developing a kernel in a language other than C, the question that springs to mind is So what does this choice of language bring to the table? Rust and especially SPARK bring significant assurances of correctness, as they both improve greatly on the unsafety (supposing that's a word) of the C language. The same is true of a middle-of-the-road language like Java, but Java isn't ideally suited to kernel development. (If OS researchers prove me wrong on this point, then that's great, of course.) Assembly isn't a very compelling choice of language in terms of safety/correctness assurances, but I can see the appeal for a hobbyist OS, or for a carefully tuned high-performance codebase. From what I know of Oberon, using it for kernel development isn't in itself very interesting. Does it offer the guaranteed absence of broad categories of runtime errors? I guess it's still probably a rather safer language than C, and I presume its performance is ok, but this isn't anything new. (Of course, I've only talked about language. There are plenty of other ways an OS can be interesting besides the language it's implemented in, but that's the topic at hand.)
- throwaway_pdp09 6y ago> It doesn't do anything most modern languages do It's a general purpose language you're comparing to other general purpose languages, so of course. The different versions of oberon, ok, but look at the different versions of C#, scala, SQL, C++ etc etc. > on nothing but Wirth's ideas of what a programming language should be Produce something as good as pascal and then I'll be impressed (I've tried and it isn't easy). Wirth is a deeply competent language designer, the diss is undeserved.
- dmitriid 6y ago> Wirth is a deeply competent language designer, the diss is undeserved. He is a competent language designer, but his ideas about what a language should be are strange at best, and this is reflected in the languages he designs. While Pascal was (and in many ways still is) a gem for its own time, all of the languages he produced since have been hardly more than a regurgitation of the same ideas, with a strange fixation on the "procedural programming purity at any and all costs" (hence the chase for a loop construct you can't exit, single-return procedures/functions etc.)
- throwaway_pdp09 6y agoUnlike you I actually know about this stuff (though it's much faded by now I admit). The looping issue is because modelling it - that is, giving it clear and simple formal semantics - was not trivial. The single-point of exit stuff is also there for the same reason. I'd agree that it's possibly not a good choice given the alternatives if you are doing non-verified code, but he had his reasons. If you ever wonder why modula-3's garbage collector only collected memory, you could not hook into it in the form of a destructor for management of resources other than memory, go and read up the complexities that being able to piggyback on a destructor brings. It gets bad. We could have some agreement but with "regurgitation", "strange fixation", "strange at best#" - this is the sound of you not understanding and not realising it, not wirth's deficiencies. If you think you can do better then go ahead. You'll learn a lot.
- MaxBarraclough 6y ago
- microtherion 6y agoFor whatever reason, Wirth did not seem to be a big believer in standardization efforts (maybe he got burned out by the ALGOL effort). So he always reserved the right to change his mind about his languages. If he could save a compiler pass, or make the compiler faster, by changing the language, he often would. And the people in Wirth's orbit (The OberonScript author did his PhD with Wirth) were naturally interested in programming languages, and the compilers were small and well designed, so they were easy to modify. Last of all, while Wirth is a very practical guy (having designed multiple workstations full-stack), but he never pursued commercial practicality or industrial applicability as an objective in itself. He'd rather pursue whatever his research agenda at the time was, and if industry found something useful to pick up, good for them.
- Rochus 6y ago> Does the language do anything that Dart doesn't? No. But Oberon demonstrates how one can implement real systems with a very little language; and with an extremely small footprint compared to Dart (you can fit a whole operating system into one or two megabytes). There are a lot of other differences; Oberon is a truly statically/strictly typed language wheras the type system in Dart is intentionally optional; you can write an Oberon parser in a couple of hours (in contrast to more complex and ambiguous languages like Dart or Go). Oberon was optimized for use as an educational language and was successfully used for this purpose e.g. at the ETH Zurich. Wirth wanted the minimum necessary for his language, without unnecessary luxury, which only increases the development and learning effort.
- MaxBarraclough 6y agoSounds rather like the application of the Forth philosophy to conventional imperative programming. (Curiously I was saying just the same thing yesterday about Tcl - https://news.ycombinator.com/item?id=24898886 https://news.ycombinator.com/item?id=24898886 )
- Rochus 6y agoSee https://people.inf.ethz.ch/wirth/Articles/Modula-Oberon-June.pdf https://people.inf.ethz.ch/wirth/Articles/Modula-Oberon-June... for the philosophy