Jeff Duntemann's Contrapositive Diary Rotating Header Image

January 4th, 2024:

Niklaus Wirth 1934-2023

We lose our heroes one by one. By the time you’re in your 70s, like I am, you begin losing them a lot more frequently. We lost Don Lancaster back in July. Don’s books taught me how digital logic worked way back in the last half of the ‘70s. His writing was so good that I imitated it when I began to write computer articles and later books in the 1980s.

Niklaus Wirth died earlier today, in Switzerland, at 89. He was another hero, who taught me how to write computer programs that could be read. Pascal wasn’t the first programming language I ever learned; that honor (or perhaps dishonor) falls to APL and a little later, FORTH. I wrote a text formatter in mainframe APL in 1978. It was 600 lines of squiggly jibberish. By the time I got to the bottom, I had already forgotten how the top worked. FORTH, well, the less said, the better. I think of it as Yoda’s programming language. If you’ve ever messed with FORTH, you’ll know exactly what I mean.

My friend Mike Bentley introduced me to Pascal in 1980 or 1981. I bought a compiler for my CP/M machine soon after. Pascal/MT+ was awesome, so awesome I decided to write a book about it. I was about halfway through the book when Turbo Pascal popped up above the horizon. By the time I finished the book on Pascal/MT+, Turbo Pascal had taken over the Pascal universe, and I rewrote Pascal from Square One for Turbo Pascal. (The publisher retitled the book Complete Turbo Pascal for reasons I have never understood.)

I learned Pascal by cut’n’try. I learned how to write good Pascal by reading Wirth’s wonderful 1976 book Algorithms + Data Structures = Programs. My flameout with APL left me with the indelible conviction that software must be readable by the people who didn’t write it—and not after hundreds of hours of hair-tearing, either. I learned C, billed as a “high-level assembly language,” which is a contradiction in terms. My view: Go as high as you can go, or as low as you can go. To me, that meant Pascal (or BASIC, or COBOL) on the high end, and real assembly language on the low end. C source code is needlessly obscure, and by that I only mean it could be a lot more readable if its creators chose not to be proud of its obscurity. There’s actually a contest for writing the most unreadable C programs possible, which I think tells you a lot about C and its partisans. There was a time when C could do things that Pascal couldn’t. Those days are long, long past, and I will no longer argue the point here.

I learned Wirth’s Modula 2 programming language when products became available in the 1980s. I read up on Modula 3 (1988) and Oberon (1987) but never coded in them. As best I can tell, they expanded Pascal’s power without damaging its comprehensibility. Pascal itself has long been out of Wirth’s control, and today we have tremendously powerful implementations of Pascal like Delphi and Lazarus/FreePascal. But without Wirth, people like me would still be writing in BASIC or COBOL.

I write this eulogy without a heavy heart. Niklaus Wirth made it to 89, and reshaped much of the software development universe in the process. To me, that means he won—and won big.

Godspeed, sir. We will never forget you.