RIP: Software design pioneer and Pascal creator Niklaus Wirth
Evangelist of lean software and devisor of 9 programming languages and an OS was 89
Obit Swiss computer scientist Professor Niklaus Wirth died on New Year's Day, roughly six weeks before what would have been his 90th birthday.
Wirth is justly celebrated as the creator of the Pascal programming language, but that was only one step in a series of important languages and research projects. Both asteroid 21655 and a law of computer design are named after him. He won computer-science boffinry's highest possible gong, the Turing Award, in 1984, and that page has some short English-language clips from a 2018 interview.
Niklaus Emil Wirth was born in Wintherthur in Switzerland, the day after St Valentine's Day 1934. In 1959 he got his bachelor's degree from ETH Zürich, to which he returned later in life and from which much of his important research emerged.
He changed countries several times in his life – his 1960 master's degree was from the Université Laval in Canada, and his 1963 doctorate from UC Berkeley* – the home of Berkeley Unix, or BSD as it's usually known. He stayed in California for the next four years as assistant professor of computer science at Stanford University. During this time, he worked on his first two programming languages: Euler in 1965, and PL/360, published in 1968.
Partly as a result of this work, he was invited into the Working Group planning the next iteration of the ALGOL programming language, to replace ALGOL 60. Along with British computer scientist Sir Tony Hoare, he presented a proposal called ALGOL-W. However, this was rejected in favour of a more complex proposal from Adriaan van Wijngaarden, which became ALGOL-68.
As described in C H Lindsey's History of ALGOL-68 [PDF], when the ALGOL-W proposal was rejected, Wirth resigned from the committee, contributing a strong "Closing Word" to the November 1968 Algol Bulletin 29, containing gems such as:
I pulled out my copy of the draft report on ALGOL-68 and showed it to her. She fainted.
Instead, Wirth took his proposal, changed it to be somewhat less compatible with ALGOL, and released it in 1970 under the name Pascal.
In this way, the story of Pascal's creation has two, different, parallel impacts. It was, of course, a big hit and is still used today. The flipside of this, though, is that the overcomplicated ALGOL-68 was a flop: as the ALGOL-60 Forever page puts it:
This language (Algol 68) was totally unsuccessful when compared with Wirth's line.
It's not much of an exaggeration to say that ALGOL-60 influenced every programming language invented afterwards, but its influence ended with the version released after Wirth's departure. His own languages were successful, in research and also commercially – Delphi is still on sale, and the Free Pascal project just released Version 3.0 of its cross-platform Lazarus IDE. However, the complexity of ALGOL-68 opened up the opportunities for newer, simpler languages such as C, Simula-67, and their offspring C++, and the legions of other languages and OSes implemented in them.
You can get a hint of the relationship between the leaders of the rival ALGOL proposals from the way that Van Wijngaarden introduced Wirth on stage at the International Federation for Information Processing congress in 1965. He made a joke which became famous:
Whereas Europeans generally pronounce his name the right way ('Nick-louse Veert'), Americans invariably mangle it into 'Nickel's Worth.' This is to say that Europeans call him by name, but Americans call him by value.
If Wirth had continued to work on ALGOL, its huge influence might well have continued. Similarly, if he had stuck with the well-known Pascal brand, his later projects might have replaced it, rather than it surviving alongside its intended replacements.
In 1976, Wirth named his next language Modula [PDF], but it was quickly replaced with Modula-2 in 1977. This added cooperating processes called coroutines to the language, using his former co-worker C A R Hoare's Communicating Sequential Processes model. (These days, these feature in Erlang, Go, and Clojure, and were lampooned by our own Verity Stob.) In the 1980s and 1990s, Modula-2 was an important language across the industry, as we discussed when GCC 13 gained support for it last year.
Wirth spent two one-year sabbaticals back in California at Xerox PARC, the first in 1976-1977 and the second in 1984-1985. Inspired by what he saw there, on his return to Zürich he created the much more ambitious Oberon System. Oberon is a programming language, and a tiled-window development environment, and a complete operating system implemented in itself. The introduction to the Oberon manual [PDF] contains what came to be known as Wirth's Law, although he modestly credited it to Martin Reiser:
With the Oberon System, we wish to refute Reiser's Law, which has been confirmed by virtually all recent releases of operating systems: "In spite of great leaps forward, hardware is becoming faster more slowly than software is becoming slower."
The project is described very readably in Oberon – the Overlooked Jewel [PDF], which is just 13 pages long. Oberon has inspired multiple successors, including Oberon-2, Oberon 07, and Component Pascal.
- A Deadlock Holiday
- GCC 13 to support Modula-2: Follow-up to Pascal lives on in FOSS form
- This'll make you feel old: Uni compsci favourite Pascal hits the big five-oh this year
- Computing needs a Grand Challenge
The Oberon System is a sort of existence proof of how software can be very capable while being almost unbelievably tiny: the
systools archives from the 2013 edition total some 4,623 lines of code, in 262kB of text. That's the entire core environment. But if that were not enough, Wirth explained the idea in a famous 1995 paper, "A Plea for Lean Software" (The original is a PDF, but I have put a text version here.)
From many accounts, he was approachable, friendly, and witty; we particularly liked this tribute from Googler Raph Levien. Wirth retired in April 1999, although in 2013, shortly before he turned 80, he reappeared to publish an updated version of Project Oberon.
In his work, the languages and tools he created, in his eloquent plea for smaller, more efficient software – even in the projects from which he quit – his influence on the computer industry has been almost beyond measure. The modern software industry has signally failed to learn from him. Although he has left us, his work still has much more to teach. ®
*A previous version of this story had that as "UCSD" Pascal, which a member of that project was kind enough to remind us was a derivative of the P2 compiler from ETH Zürich.