[HN Gopher] Modula-2 and Oberon (2007) [pdf]
___________________________________________________________________
Modula-2 and Oberon (2007) [pdf]
Author : Jtsummers
Score : 31 points
Date : 2022-07-29 16:14 UTC (2 days ago)
(HTM) web link (citeseerx.ist.psu.edu)
(TXT) w3m dump (citeseerx.ist.psu.edu)
| dmitriid wrote:
| My unpopular opinion. Here's Wirth's words: "The programming
| language Oberon was the result of a concentrated effort to
| increase the power of Modula-2 and simultaneously to reduce its
| complexity."
|
| He kept on "reducing complexity" while re-building what is
| essentially the same, rather primitive, language. ANd he kept
| throwing the baby out with the bathwater.
|
| One of the Oberons had three different loop constructs, and only
| one of those could be terminated early. Because reasons. Then a
| newer Oberon reduced the number of loop constructs, but also
| removed the ability to terminate them early. Then a newer
| Oberon... _ad infinitum_.
|
| And you can see it in all the langage variants he built: he
| insisted that the core of the language be small at the expense of
| usefulness to the point of uselessness. And purely irrational
| academic fixation (such as function vs. procedure or the
| aforementioned loops).
|
| Was he instrumental in creating a good teaching language, and one
| of the first good high-level languages (Modula/Pascal)? Yes. Did
| he do anything noteworthy after that? I honestly doubt it as he
| was pursuing this idree fixe of a "small language where you can
| remove nothing more".
| hazelnut-tree wrote:
| Lot's of excellent critiques and comments in this thread.
|
| Wirth has spent most of his life in an academic environment
| which have shaped his opinions on teaching programming. He
| believes strongly that teaching programming is most effective
| when students can grasp the entirety of a small language.
|
| Below are a few quotes from Wirth taken from a 2018 interview.
| I find myself agreeing with his opinions:
|
| _On designing programming language_ :
|
| "...a language designer picks ideas from others, facilities,
| features, and has the task of putting them into a coherent
| whole, into a framework. And that is less easy than people
| might think, because you want to have as much power in the
| language as possible, yet a compact structure and compact
| syntax. And that you can get I think only through experience
| with language design."
|
| _On teaching a first programming language_
|
| "..as I did in the Pascal times, the foundations have been laid
| when a person learns his first programming language. That's the
| key. In order to do a good experience, you have to have a clean
| language with a good structure concentrating on the essential
| concepts and not being snowed in. That is my primary objection
| to the commercial languages - they're simply too huge, and
| they're so huge that nobody can understand them in their
| entirety. And it's not necessary that they're so huge."
|
| _On further development of Oberon_ :
|
| "The incentive came from colleagues mentioning that they had
| learned very, very much from my book called _Project Oberon_ ,
| which is one of the very few describe a full system and its
| development in detail. That's something in computer science
| that is wrong. People learn to write before they have learned
| reading."
| pjmlp wrote:
| For me the best Oberon is Active Oberon, although I am quite
| certain Wirth would see that differently.
| sedatk wrote:
| I'm also upset at Niklaus Wirth because how he sensationalized
| Dijkstra's article "A Case Against the Goto Statement" by
| taking the liberty to change its title to "Goto Statement
| Considered Harmful", causing a lifelong disproportionate stigma
| against goto and relevant programming constructs like
| switch/case, break, continue, etc. Dijkstra had never intended
| to take such a purist stance against Goto. I also mention this
| in my book Street Coder.
| throw-away_42 wrote:
| From the opening paragraph of Edsger W. Dijkstra's letter to
| the CACM editor:
|
| More recently I discovered why the use of the go to statement
| has such disastrous effects, and I became convinced that the
| go to statement should be abolished from all "higher level"
| programming languages (i.e. everything except, perhaps, plain
| machine code).
|
| "Harmful" seems to me a perfectly appropriate
| characterization of the words "disastrous" and "abolished".
| If anything, it tones them down.
| sedatk wrote:
| Similarly, "A case against" is way more toned down than
| "harmful." I agree that the opening statement is a strong
| stance and fits to the new title, but the article mostly
| focuses on proliferation of goto as a generic flow-control
| construct rather than exceptional such as using it as a
| "defer"-like construct in C where there's no alternative. I
| still think Wirth's edits hid the nuances in the article
| and helped fostering a strongly opionated dogma against
| goto by gifting a slogan to the masses.
| [deleted]
| Jtsummers wrote:
| Not Knuth. Dijkstra.
| sedatk wrote:
| You're right edited it now, thanks!
| Blammar wrote:
| ? That was Edsger Dijkstra's article, if I recall correctly.
|
| The standard joke is "Europeans refer to him by reference, as
| Nicklaus Wirth, and Americans - by value, as Nickel's Worth."
| sedatk wrote:
| Yes my bad. Edited, thanks!
| pdw wrote:
| It was Dijkstra's article, but he submitted it with the
| title "A case against the Go To statement". Wirth was the
| journal editor and he choose to rename it to "Go To
| statement considered harmful".
|
| Knuth ties into this because he published a response
| "Structured Programming with go to Statements", examining
| many situations where goto statements are hard to avoid in
| the standard structured programming paradigm.
| Jtsummers wrote:
| GGP had originally referred to the author of the article
| as Knuth, GP (and I) both replied correcting that. GGP
| comment has since been edited.
| sedatk wrote:
| Yes, I'd meant Dijkstra where I said Knuth despite that
| Knuth might still be relevant. I got this right in the
| book, no worries. :)
| Rochus wrote:
| Here is a modern version which supports all loops of Oberon and
| Oberon-2; it also has generic modules and a kind of exceptions,
| and it is still quite small and simple: https://oberon-
| lang.github.io/
| mamcx wrote:
| I think the main problem is that Nicolas was like a _practical
| PL researcher_ and don 't think he believe was the guy to build
| a _actual practical PL_.
|
| So, more like "take inspiration from me, and see how simplicity
| can be done".
| 082349872349872 wrote:
| More that he's a practical computer architect, producing h/w
| as well as s/w, and there's no sense complicating one very
| specific part of that --the PL toolchain-- if it doesn't help
| build the systems he wants to build.
| jll29 wrote:
| I wasn't convinced of Oberon; to me, MODULA-2 was great, and
| that's where things ought to have ended. And in terms of
| impact, his main accomplishment is clearly Pascal (and indeed,
| thanks for that!).
|
| However, I do believe his aspiration to make things simpler is
| genuine. Occasionally, he may have gone beyond the 'sweet
| spot', but as an academic, this way of tinkering and trying out
| different things is something that is second nature. I admire
| that he wrote a language, compiler, OS and - later - also
| designed the hardware of his own workstation. That's the kind
| of teacher you want: "look, how easy it all is!".
|
| His compiler book, which can be read in a day, remains a marvel
| of clarity and brevity.
| eterps wrote:
| > He kept on "reducing complexity" while re-building what is
| essentially the same, rather primitive, language. ANd he kept
| throwing the baby out with the bathwater.
|
| What is interesting about Oberon is that it is a complete (i.e.
| OS + compiler + HW) usable system that can be understood in its
| entirety by a single human being within one lifetime.
|
| As far as I know it's also the only system currently in
| existence that fullfills that promise.
|
| Just the language part of Oberon is not optimal for running on
| the regular personal computer systems we used or are currently
| using. But AFAIK that was never its purpose either.
| vitiral wrote:
| I'm attempting one at github.com/civboot/fngi. Let me just
| say... It ain't easy, and Oberon is a huge inspiration for
| what's possible.
| 082349872349872 wrote:
| Exactly. ... and not just within one lifetime -- within a few
| years!
| sedatk wrote:
| The web is getting hugged, I uploaded the PDF here:
| https://archive.org/details/Modula-2-and-Oberon
| Sin2x wrote:
| Golang is the modern Oberon.
| vitiral wrote:
| Golang is not an OS. Golang doesn't fit in 12kib of source
| code. I could go on.
| [deleted]
| lboasso wrote:
| If you want to try out only the Oberon language, you might be
| interested in oberonc [0] an oberon-07 self-hosting compiler for
| the JVM. There are other several Oberon implementations for
| different platforms listed here[1]
|
| [0] https://github.com/lboasso/oberonc
|
| [1] http://oberon07.com/compilers.xhtml
| [deleted]
___________________________________________________________________
(page generated 2022-07-31 23:01 UTC)