7 ms·
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 simul
by dmitriid 4y ago
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".
- sedatk 4y agoI'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.
- Jtsummers 4y agoNot Knuth. Dijkstra.
- sedatk 4y agoYou're right edited it now, thanks!
- Blammar 4y ago? 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 4y agoYes my bad. Edited, thanks!
- pdw 4y agoIt 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 4y agoGGP 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 4y agoYes, I'd meant Dijkstra where I said Knuth despite that Knuth might still be relevant. I got this right in the book, no worries. :)
- deleted 4y ago[deleted]
- throw-away_42 4y agoFrom 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 4y agoSimilarly, "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.
- jll29 4y agoI 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.
- Rochus 4y agoHere 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/ https://oberon-lang.github.io/
- pjmlp 4y agoFor me the best Oberon is Active Oberon, although I am quite certain Wirth would see that differently.
- eterps 4y ago> 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 4y agoI'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 4y agoExactly. ... and not just within one lifetime — within a few years!
- Rochus 4y ago> What is interesting about Oberon is that it is a complete (i.e. OS + compiler + HW) ... the only system currently in existence that fullfills that promise. Well, Unix including the C programming language were essentially implemented by two guys (Thompson und Ritchie); at least in the beginning Unix was small enough to "be understood in its entirety by a single human being within one lifetime". The same applies to Linux (implemented by only one guy in the beginning). Also the Oberon System (written by Wirth and Gutknecht) became bigger and more complex during the years it was used at ETH; barely anyone has full detail knowledge of e.g. the whole Oberon System V4. We can assume that if the Oberon System had been more successful, it would have shared the fate of original Unix and Linux, and became too big to be understood in its entierty by a single person.
- cxr 4y agoYou are not expected to understand this.
- mamcx 4y agoI 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 4y agoMore 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.
- hazelnut-tree 4y agoLot'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 a 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."
- le-mark 4y ago> Yes. Did he do anything noteworthy after that? I honestly doubt it Worth’s contributions may not seem significant to some, today, because he did make this contributions; championing simplicity and portability. In a lot of ways we stand on his shoulders. Anyone who feels shorted or that they don’t get their nickels worth should also read about the Oberon System which was a complete computer with peripherals and a ui.