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.
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."
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.
The standard joke is "Europeans refer to him by reference, as Nicklaus Wirth, and Americans - by value, as Nickel's Worth."
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.
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.
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.
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.
You are not expected to understand this.So, more like "take inspiration from me, and see how simplicity can be done".
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".