A magazine about programmers, code, and society. Written by humans since 2018.

Niklaus Wirth

It is challenging to summarize the influence of Niklaus Wirth in the daily lives of otherwise unsuspecting programmers worldwide. The more one digs into videos, papers, books, and obituaries, the more information surfaces and fights for a place in the spotlight. There are, however, at least two major guidelines that drove his passion for software. One was simplicity through clear understanding and lack of ambiguity; the other, closely related to the first, was teaching.

This month’s Vidéothèque video is an interview of Mr. Wirth published by the IEEE Computer Society. It is a short but nevertheless revealing video, where those two guiding lights appear clearly in each of the anecdotes.

Wirth’s aim for simplicity was not entirely different from, say, Yukihiro Matsumoto‘s wishes for Ruby. Quoting its creator, Ruby was built to (and I quote) “make programmers productive and happy”. The question is, what is happiness? For Mr. Wirth the answer was simple, and it consisted of clear understanding, learning, and progress.

In his conference paper “On the Design of Programming Languages” for the IFIP Congress of 1974, Mr. Wirth states this point with clarity:

The key, then, lies not so much in minimising the number of basic features of a language, but rather in keeping the included facilities simple to understand in all their consequences of usage and free from unexpected interactions when they are combined. (…) The language should not be burdened with syntactical rules, it must be supported by them. They must therefore be purposeful, and prohibit the constructions of ambiguities.

Looking even further back in time, as far as the year 1965, helps us find more references to this quest of simplicity:

The result of a systematic language design based on consistent rules is reliability on the part of the implemented translator as well as on the part of the user, who is discouraged from using “tricks” and is less subject to pitfalls and misunderstandings about the nature of complicated or ill-defined facilities.

Let us look at the list of programming languages created by Niklaus Wirth (and try not to gasp): Euler in 1965, PL360 in 1966, ALGOL W in 1966, Pascal in 1970, Modula in 1975, Modula-2 in 1978, Oberon in 1987, Oberon-2 in 1991, and Oberon-07 in 2007. For context, and to our amazement, the first and the last languages in the list span a period of 42 years.

Three major names stand out from the list above: Pascal, Modula, and Oberon. Notwithstanding the obvious similarities in syntax between the three (a fact somewhat acknoledged by Wirth in the video), they represented gradual steps in the same direction, towards the creation of simpler, smaller, faster software. The pinnacle of this work was Oberon, a project that yielded two major contributions simultaneously: a compact and fast operating system, and the programming languages enumerated in the previous paragraph.

In the 1990s, as soon as Internet connectivity became ubiquitous, I downloaded a copy of Oberon from the FTP server of the Swiss Federal Institute of Technology Zürich (ETHZ) and ran it on my personal computer. It was an unwieldy but fascinating system that booted in nanoseconds, required very little in terms of resources, and even provided a complete, albeit rudimentary, mouse-powered graphical user interface. I recently found a video featuring a review of Oberon that I can recommend everyone to watch.

The achievement of Oberon was most excellently described in his 1995 article “A Plea for Lean Software” published in IEEE Computer magazine:

The belief that complex systems require armies of designers and programmers is wrong. A system that is not understood in its entirety, or at least to a significant degree of detail by a single individual, should probably not be built.

Let us ponder on these words, as we face 2024 with a still unresolved debate about how to explain the internal mechanisms of Large Language Models, nowadays powering the new Generative AI systems that are making the headlines every day since November 2022.

Many of the creators of those LLMs and other modern systems have probably never read Niklaus Wirth’s 10-page paper published in the IEEE Annals of the History of Computing in July 2008. On that occasion, Niklaus Wirth asserted an everlasting principle, one that has guided this magazine since its inception:

It is unfortunate that people dealing with computers often have little interest in the history of their subject. As a result, many concepts and ideas are propagated and advertised as being new, which existed decades ago, perhaps under a different terminology.

As Liam Proven says in the closing words of his excellent obituary of Mr. Wirth,

The modern software industry has signally failed to learn from him. Although he has left us, his work still has much more to teach.

Watch this month’s Vidéothèque video of Niklaus Wirth, 1984 Turing Award winner, on the YouTube channel of the IEEE Computer Society. But do not stop there. There is, fortunately, lots of material by Mr. Wirth available online–and quite recent, and of excellent quality, too.

He stayed active long after retirement, publishing papers and working with his peers of the ETHZ. We can now peruse hours of material, and aim to become better software engineers during the process. Suffice to mention this long 2018 interview by the Association of Computing Machinery (of which there is a short excerpt specifically about Pascal); the recording of a 2014 symposium at the ETHZ; an interview also conducted in German (subtitles are available) in 2021 at ETHZ by Friedemann Mattern, available in three short fragments; and another 2021 interview by Michael Holzheu (also in German).

Cover snapshot chosen by the author from the video.

Continue reading Edward Nash Yourdon or go back to Issue 065: Pascal. Did you like this article? Consider subscribing to our newsletter or contributing to the sustainability of this magazine. Thanks!
Back to top