The article mentioned Philippe Kahn (Borland co-founder) as the student of Wirth, never heard the fact before. The podcast [1] confirms this. Probably the Borland's decision to buy Compass Pascal might be influenced by his Kahn's early impressions.<p><i>[00:07:12] ... I remember you had a choice between two programming language and on one side they taught Fortran and Fortran is the language of science, or it was the language of scientists.<p>[00:07:40] And then there was this new class that was started by this Professor Niklaus Wirth about Pascal. And it was, I think the first or second year it was taught. There were a lot of people in the Fortran class and not that many people in the Pascal class. So I said, oh, I'll go to the Pascal class.<p>[00:07:59] And that's how I met Professor Wirth. And that was great. That was my favorite class from that moment because he's such a, such an enlightened person and a clear thinker that it was a great, great experience for me.</i><p>[1] <a href="https://ethz.ch/en/news-and-events/eth-news/news/2022/05/we-are-eth-podcast-philippe-kahn.html" rel="nofollow">https://ethz.ch/en/news-and-events/eth-news/news/2022/05/we-...</a>
> in the sense that the limitations and exclusions of the language design were precisely what made compact implementations possible and widely successful.<p>All of the Pascals that were widely successful extended the language in key ways. I was an initial fan of Pascal, until I discovered that a large amount of my time was spent trying to work around limitations of the language.<p>With C, those workarounds disappeared and I was far more productive.<p>(I know C compilers always have numerous extensions, most of them of dubious value, but still, plain C remains a far, far more useful language than the Pascal of "Pascal User Manual and Report". Which is why C buried Pascal.)
Recent and related:<p><i>Closing word at Zürich Colloquium (1968)</i> - <a href="https://news.ycombinator.com/item?id=38883652">https://news.ycombinator.com/item?id=38883652</a> - Jan 2024 (28 comments)<p><i>Niklaus Wirth, 1934-2024: Geek For Life</i> - <a href="https://news.ycombinator.com/item?id=38871086">https://news.ycombinator.com/item?id=38871086</a> - Jan 2024 (61 comments)<p><i>Niklaus Wirth has died</i> - <a href="https://news.ycombinator.com/item?id=38858012">https://news.ycombinator.com/item?id=38858012</a> - Jan 2024 (403 comments)
Nice tribute to Wirth. I just have some feedback :-)<p>> ...modular languages offer one implementation for each interface.<p>Unfortunately, this is totally incorrect. Modular languages absolutely allow any interface to have multiple implementations which can be chosen amongst. This corresponds to how a Java 'interface' can have multiple implementations. In fact programming to the interface and swapping the implementation is one of the main selling points of interfaces.<p>> Some of those constraints remained long after advances in hardware and software made the insistence on one-pass compilation seem obsolete.<p>With compile speeds nowadays we can only <i>wish</i> that this insistence was obsolete. It's needed now more than ever with the slow-as-molasses compilers (apart from a notable few) of today.
Perhaps part of the issue with the "evolution of the programming language field in recent years" is that 'simplicity' is a high cost optimization. Most every 'simple' system I've been a part of building started life as an oversized beast, laboriously wrestled into a more streamlined form.<p>Making complicated things is cheaper, easier, and lets you say 'yes' more often to smart, persuasive, people. Simple takes a lot of time, effort, and "getting to no" with people that have good reasons for the things they want to add.
Being simple...<p>And then there comes Rust in all its glory with "my string constant".to_string() awkwardness and Golang with datetime to string formmating using "2006-01-02 15:04:05.999999999 -0700 MST"...<p>Modern languages are full of idiosyncrasies that work like putting left hand in the right pocket, and from behind.
Huh, the article mentioned a fact that I could have never expected: Logitech was an indirect sire of Wirth, since people from ETH had wanted to commercialize Modula-2. [1] Their first product: a Modula-2 development system bundled with a 3-button mouse.<p>[1] <a href="https://web.archive.org/web/20210324044010/http://www.edm2.com/index.php/Logitech" rel="nofollow">https://web.archive.org/web/20210324044010/http://www.edm2.c...</a>
I never like this platonic view of there being one 'perfect language', maybe yet invented, that stood above all others.
Instead I am always more of a 'classist'(i didn't find any word for it). I believe there is one class of language, of which it's not hard to achieve, that for all intents and purposes are all equally good. A bit like the notion of 'turing completeness' except turing completeness is way too broad and measure another thing. But I'm betting that the 'best' language is already achieved, and there are quite a few of them. Which ones, that's up to debate.
> Like a Renaissance man, or one of those 18-th century "philosophers" who knew no discipline boundaries, Wirth straddled many subjects. It was in particular still possible (and perhaps necessary) in his generation to pay attention to both hardware and software. Wirth is most remembered for his software work but he was also a hardware builder<p>> One of his maxims was indeed that the field remains driven by hardware advances, which make software progress possible.<p>> One of his maxims for a successful career was that there are a few things that you don't want to do because they are boring or feel useless, but if you don't take care of them right away they will come back and take even more of your time, so you should devote 10% of that time to discharge them promptly.<p>> Wirth seems to have decided in reaction to the enormity of Algol 68 that simplicity and small size were the cardinal virtues of a language design, leading to Pascal
The litmus test for simplicity of a programming language design is its compilation speed, if the language compile fast it is simple but if the language compile slow it is overly complex. Modern programming languages like Go and D have fast compilation, but C++ and Rust compile much slower. Go is a direct descendent of Wirth's languages namely Modula and Oberon, while D is not albeit some of its feature like nested function is directly taken from Pascal [1]. Interestingly both were designed by authors with engineering background, and personally I think the simplicity is not a coincident since typical engineers loath to embrace any form of complexity.<p>[1]Nested function:<p><a href="https://en.wikipedia.org/wiki/Nested_function" rel="nofollow">https://en.wikipedia.org/wiki/Nested_function</a>
I'm shocked about passing of Niklaus Wirth, just found out now.
Been in "bunker mode" last few months due to porting C++ code to Modula-3 (M3) code.<p>I'm using the cm3 Modula-3 distribution at
<a href="https://github.com/modula3/cm3">https://github.com/modula3/cm3</a><p>I have been thinking alot about Pascal/Modula origins of M3 (Re: Wirth) as well as the DEC/Olivetti/CriticalMass/etc. people related to crafting M3,
due to
ELEGANCE and ADDICTIVENESS
of the Modula-3 programming language.<p>Been coding C++ for nearly three decades and it's obvious the designers of M3 as well as Wirth et al. were "prophetic", in that they had an idea of the {bloat, complexity} problems that will afflict an ever-growing C++ spec/standard; Scott Meyers C++ experiences concerning C++'s "issues" is notable.<p>A programming language does not have to be a "complexity beast" in order to be productive for encoding knowledge into code. Note, a large-scale codebase makes C++ "cracks" more obvious. M3 provides a good cognitive-load paradigm during design/implementation of the code; thanks to principles of, more notably, modula programming, revelations, opaque-types.<p>M3 gets to the point in a very elegant manner and made me realise early in the porting process that the "C++ experiment" has gone on for too long.
This is how good M3 is.<p>One book on M3, i.e. "Nelson's" book, is essentially the M3 spec; a spec from the late 1980's which feature-packed the language in a concise/logical manner.
No multi-decadal evolving specs/committees as in C++.
No compiler that does not support a language-feature.
As in Wirth's paradigm, M3 has a relatively lean/simple language-core that can be used to create useful libraries/programs.<p>Harbison's book can help flesh out some detail due to the former book sometimes being a bit less verbose; may be due to my applied-science background where I selected the "C", not "Pascal", route when starting computer programming decades ago.<p>The tutorial links, etc., at the github site are useful.<p>Anyway, once doing enough C++ (even at pre-C++-11 level), M3 will be an understandable surprise.<p>Yes, it is important for the core of a programming language to be SIMPLE as well as being PRACTICAL and COGNITIVE-LOAD-EFFICIENT.
My recent experiences lead me to believe that Modula-3 achieves this well.<p>Gees ... Wirth is gone.
Niklaus Wirth could afford to be simple, he lived in simpler times where demand was much lower than today, being chased by much less investment.<p>Change was measured in years, compute and storage options were limited. I wonder how many of his OSes / programming languages spanned multiple heterogeneous compute architectures.<p>Don't get me wrong, love the guy...but wonder what kind of impact he would have if in his prime today...