Oberon et al., vs. Rust
14 points
1 day ago
| 4 comments
| HN
Greetings,

I recently came accross this thread from a few years ago: https://news.ycombinator.com/item?id=34501352

I am interested, in particular, by the comment by vidarh, that starts with:

"You've been given the answer already: Simplicity. You keep ignoring it."

I find myself highly interested in what this person would have to say about rust. Is it better than, for example, oberon, or it's descendents?

I have heard that Rust is a big language. By that definition, a simpler one must be better, right? And yet rust is a big thing, and .. oberon is ..dusty?

I will keep on searching, and maybe attempt to contact him/her/(other?) directly.

Rochus
20 hours ago
[-]
> about rust. Is it better than, for example, oberon, or it's descendents?

It's a completely different language with different focus and features. "better" depends on the requirements you want to solve with the language. Rust can do memory management at compile time whereas Oberon and its descendants (such as my Oberon+ version) use a garbage collector at runtime. Rust is much bigger and more complex than Oberon, but it also has features which make it more suitable for systems programming. Simpler is not automatically better. If a language is too "simple" (i.e. minimalist), the complexity often shifts from the language specification to the application code, requiring more boilerplate or "clever" tricks to solve complex problems.

And it was not only simplicity (as Vidar assumed), but Oberon indeed had a different approach to OO in that there were no bound procedures, but the idea was (as you can observe e.g. in the Oberon systems and in publication by Wirth an his PhD students) that "type extension" (i.e. inheritance) is used to create extensible message hierarchies, which then are polymorphically handled by procedures accepting a VAR parameter of the most general message type. In this handler, the messages are dispatched by the IS operator or the WITH or CASE statement. This has similar effects as e.g achievable by sum types, and interestingly is closer to e.g. Alan Kay's view of OO than the implementation found in Smalltalk-80 (notably, Wirth arrived at this message-centric model independently of Kay’s work in the Smalltalk lineage).

reply
mikethe
17 hours ago
[-]
OO is a big issue here. Or rather, in general. I have read "The Art of Unix Programming", where a very big fuss is made over object-orientation. It's like they want to take a really big gun that means big business, and shoot it. Ever since reading that, I yelp whenever I see it mentioned, and squint in suspicion at the offender. So when a titan like Wirth endorses it.. ..there is obviously something of great importance that needs to be clearly understood, and that is -not- obvious.

The same thing when I see mentions of C++. Except that I haven't yet found endorsements of it from anybody of Wirth's stature. Sites like suckless really do not help.

Related: https://plan9.io/wiki/plan9/lfaq/index.html#HARDWARE_AND_SOF...

" Is it object-oriented?

No, not in the conventional sense. It is written in a strict dialect of ISO/ANSI C. In a wider sense, its general design of making all its ``objects'' look like files to which one talks in a well-defined protocol shows a related approach. "

reply
Rochus
10 hours ago
[-]
Raymond argues in the referenced book that while OOP has value in specific domains, its benefits have been oversold and its typical usage often conflicts with the core Unix philosophy of simplicity and transparency. I think that's a valid position, and hyping and overselling is a continuous fad in the programming industry, which is famously susceptible to what Fred Brooks called the "Silver Bullet" syndrome: the desperate search for a single magical technology that will solve the inherent difficulties of software engineering. The "simplicity and transparency" Raymond champions are indeed virtues, but they are also slogans used to rally a specific community. Just as "Memory Safety" is the rallying cry for Rust today, "Small is Beautiful" was the rallying cry for Unix in the 1970s.

The industry seems to advance not by finding a static "truth," but by lurching between opposing philosophies, each powered by its own wave of activism. I recommend to ignore the "moral" arguments, but to focus on the engineering trade-offs. Most "revolutions" are just rediscoveries of old ideas. Functional Programming is largely Lisp (1958) re-branded. The "Anti-OO" movement is partly a return to procedural modularity (Pascal/C). Our job is not to be "pure"; your job is to build working, maintainable software using the best tools we can find for the specific problem at hand.

reply
mikethe
6 hours ago
[-]
"Should be cast in bronze" comes to mind.
reply
mikethe
15 hours ago
[-]
To clarify, you obviously understand OO better than most, certainly much much much better than I do. I happen to have Wirth's book on oberon here, have started reading it. So possibly, eventually, I will reach your level. :-)
reply
mikethe
17 hours ago
[-]
"Simpler is not automatically better. If a language is too "simple" (i.e. minimalist), the complexity often shifts from the language specification to the application code, requiring more boilerplate or "clever" tricks to solve complex problems."

..fascinating..

..it always comes down, again and again, to what is the problem you need to solve, and from there, what is the best solution. And at that point, once you have identified the problem.. in a way it's a toss-up whether you implement your own solution, or just happen to have heard of a solution to a similar or equivalent (or the same) problem, developed by somebody else. ..or how willing you are to dig in search of said hypothetical already-existing solution. And said hypotheticals must then themselves be evaluated, which also takes time.

reply
leecommamichael
20 hours ago
[-]
When I see these subjects, I can't help but talk about the Odin Programming Language. It's been such a joy working nearly exclusively in Odin this year. The creator of Odin might have something interesting to say on this topic. vidarh said "Wirth was perhaps too ascetic in his insistence on keeping the compilers minimal, but you can fine less extreme versions carried on in extensions done in the PhD dissertations of students in his group." I'm not versed in the extensions, but I wouldn't be surprised if Odin looked a lot like them. It's a very practical language, and feels like a proper 21st century C language with Wirth's design ethos.
reply
Rochus
20 hours ago
[-]
> feels like a proper 21st century C language with Wirth's design ethos.

While Odin is a modern and capable language, it belongs to the "C-alternative" school (alongside Zig) rather than the "Wirthian" school (Pascal, Modula-2, Oberon). Odin, by design, retains manual memory management and allows pointer arithmetic. Oberon has a GC and very restricted pointer use. Odin's "joy" and "practicality" come from adding many features that Wirth would have considered "unnecessary complexity".

reply
kazinator
20 hours ago
[-]
ISO Modula 2 has manual allocation and deallocation: NEW and DISPOSE.

The ISO module SYSTEM provides pointer arithmetic with "ADR" manipulation.

Argubly, though, ISO Modula 2 is not exactly a Wirthian language any more but "Standardian".

reply
leecommamichael
15 hours ago
[-]
I see what you're saying, and it's true that C's design guides Odin's in a large way. A more precise way to word things may have been "inspired by" rather than "with" Wirth's design ethos. In Odin's case, I do think there's quite a lot of design area reduced in not having a GC, which is no small amount of complexity to skip.
reply
01300415352
2 hours ago
[-]
880 1818-784518
reply
andsoitis
1 day ago
[-]
If you're curious about Wirth languages (Oberon is an example), then Ada is the one to explore.

Standardized. Very mature. Proven track record. https://en.wikipedia.org/wiki/Ada_(programming_language)

reply
Jtsummers
1 day ago
[-]
Ada is Wirthian, but not a Wirth language. It's worth making the distinction because while its syntax and many of its semantics can be seen as coming from Algol and Wirth's line of languages in particular, he did not design it himself.
reply
Rochus
18 hours ago
[-]
Ada is not even "Wirthian". There are similarities with Pascal syntax, but the philosophy is completely different (see my other comment).
reply
Rochus
20 hours ago
[-]
Ada is superficially related with Pascal syntax, but definitely not a Wirth language (whether directly nor in spirit).
reply
andsoitis
20 hours ago
[-]
You're right that Wirth neither designed Ada nor is Ada in the direct Wirth line (Algol -> Pascal -> Modula 2 -> Oberon), but I think of Ada is very much a parallel branch (Algol -> Ada) and Wirth-influenced, but I would defer to your expertise.

Maybe the biggest difference between Ada and true Wirth languages is that it is not deliberately minimal.

Would you say that Ada sits close to Modula 2 philosophically, but industrial-scale?

reply
Rochus
20 hours ago
[-]
Ada and Wirth’s languages (including Modula-2) represent fundamentally opposing schools of thought regarding language design, despite their shared ALGOL-60 heritage and partly related syntax.

Ada is in every aspect a much bigger and more powerful (e.g. concerning the ability of the compiler to assist you in writing safe low-level code) language than any of the Wirth languages. Wirth famously criticized Ada as being "uneconomical"; he believed that because Ada’s requirements were so "baroque" and contradictory, the resulting language was inevitably overloaded with features whose marginal benefits did not justify their complexity (https://archive.org/details/Computer_Language_Issue_09_1985-...). But when you e.g. study the Oberon system, you see that it depended on "tricks" (e.g. SYSTEM.PUT/GET, VAR ARRAY of SYSTEM.BYTE) which were not properly integrated in the language concepts and had to be used without any typechecking support by the compiler.

reply
zerr
11 hours ago
[-]
I wish it had a C-like symbolic syntax as opposed to the prose-like one. I believe it would have been adopted more widely.
reply
Rochus
10 hours ago
[-]
Ada follows another philosophy than C and many developers. The 1979 Ada Rationale explicitly states "Readability is more important than writability". Jean Ichbiah, the creator of Ada, explained in an interview that "even if it takes a little longer to write it, it is far more important that a program be readable than writable. For 20 years after the program is written, programmers will have to read it to maintain it." This contrasts with the "fire and forget" attitude of many developers, which often manifests as a "write-once" culture, where the primary goal is to get the logic into the machine as quickly as possible, with little regard for the human who must read it later.
reply
zerr
9 hours ago
[-]
The irony is that symbol-based concise code is much easier to read and comprehend compared to blobs of text. Even replacing Do/Begin/End-s with curly braces would help a lot.
reply
Rochus
8 hours ago
[-]
This is a common belief among experienced programmers, but it is largely contradicted by empirical science, especially when discussing novices or general maintainability. First, it is not only about syntax, but also about the possibility to explicate the actual intent of the code. Ada offers special syntax for almost every conceivable use case, allowing developers to clearly express their intentions in the code so that others can understand them. And there are also scientific studies which clearly show that explicit words significantly outperform symbol-heavy languages (e.g. https://www.vidarholen.net/~vidar/An_Empirical_Investigation..., https://www.diva-portal.org/smash/get/diva2:1668029/FULLTEXT..., https://www.ime.usp.br/~gerosa/papers/ICPC2018-Legibility.pd...).
reply
andsoitis
18 hours ago
[-]
I see. Thanks for your explanation.
reply
Rochus
8 hours ago
[-]
> Would you say that Ada sits close to Modula 2 philosophically

In the Rationale for the Design of the Ada Programming Language (published as SIGPLAN Notices, June 1979), the design team explicitly lists their influences. Mesa (a language developed at Xerox PARC, where Wirth made his sabbaticals) is cited as a source for the module/package concept. Modula (referring to Modula-1, 1977) is cited in the context of concurrency and low-level hardware access (e.g., handling interrupts, device drivers), and for the general concept of the module as a syntactic unit. From the timeline we can assume that Modula-2 had not arrived at the design team when they released their proposal to the DoD. Notably, Wirth had actually submitted his own proposal to the DoD (the "Yellow" language, via SRI in 1977), though he withdrew it early because he felt the requirements were too complex. Unfortunately, no public specification of the "Yellow" language exists, but it was very likely not Modula-2.

reply
mikethe
1 day ago
[-]
..thank you..

I am very curious at the moment about why my post shows up a lighter shade of gray than others. I have done some searching, and apparently this can have something to do with people down-voting something, maybe if it seems to contain disparaging comments. I described oberon as "dusty", could that be it? It wasn't meant to be disparaging. You see rust all over the place. If I hadn't been exploring the text editor vis referred to by suckless, I wouldn't have even known oberon existed.

I am -not- trying to criticize oberon. I am not trying to claim that rust is better. I am just looking for a comparison of the two, from the point of view of the particular poster I referenced. I would have responded to his comment directly if I could.

Thank you very much for your tip about ada. I'll check it out!

reply
andsoitis
1 day ago
[-]
If you DO want to try out Oberon, here are some starting points:

- https://github.com/rochus-keller/Oberon

- https://free.oberon.org/en/ (discussion: https://news.ycombinator.com/item?id=38240333)

reply
mikethe
1 day ago
[-]
Thanks!
reply
fuzzfactor
1 day ago
[-]
The submission text is always grey.

Your comments will not appear grey unless downvoted more so than upvoted, and that grey will be seen by others but not be seen by you while you are still logged in.

Your account name is new and so appears in green which some users will scrutinize until they are confident it is not a bad actor.

reply
mikethe
1 day ago
[-]
Super helpful! Thank you!
reply