I first encountered Professor Wirth remotely in my first college programming course, 203 Intro to Programming. We used Pascal as our programming language. I had been programming for 6 years by then, completely by the seat of my pants, in BASIC, FORTRAN, & 6800 assembly language.
Pascal came as a shock. There were lots of things I couldn’t do in Pascal. There was a way to express a program & you’d better get used to it. So I did.
We soon got our first Unix machine, a VAX 780. I moved on to C, then LISP & Prolog, but I always remembered the utter simplicity of Pascal.
I wasn’t aware of my second encounter with Professor Wirth. 1997-1999 our family lived in Zumikon, a village outside Zürich. On the ridge above the village was a remote control airplane landing strip. We would drive by & see the guys flying planes & helicopters.
My third encounter with Professor Wirth was the one that would change my life. Toward the end of our stay in Switzerland I was invited to speak at a conference in Nice. Professor Wirth was speaking also. Somehow I found out that we shared flights so I did something I ordinarily would never do, I approached the ticket counter & said, “My colleague Professor Wirth & I are flying together. Would it be possible for us to sit together?” “Certainly, sir.”
Then the flight was delayed 4 hours. I sat down, cracked my laptop, & started programming.
Four hours later we boarded the plane. I sat down in the middle seat next to this wizened guy with disturbingly bright eyes. He looked non-plussed as I explained what I’d pulled to get there. We soon got to talking programming, though, & conversation flowed. Turns out that when he found out about the delay, he went home & programmed. Soon we were just a couple of geeks, sitting there talking geeking.
He was one of those guys flying remote control helicopters. Except that he programmed the helicopter & the controller himself, in Oberon. That’s what he’d been doing at home—working on the flight control software.
Extreme Programming was just starting to crackle & pop, so I’m sure I was a bit over-enthusiastic. After I had given an impassioned explanation of incremental design & refactoring, he paused, looked at me with those eyes, and, “I suppose that’s all very well if you don’t know how to design software.” Mic. Drop.
The other moment I remember was that as were approaching Nice he said, “Do you speak any French? Speak French to them. They love that.”
Lessons
Four lessons I learned from Professor Wirth:
First principles. He was working from a clear set of principles in all his language & programming environment work. He knew what he preferred but he wasn’t satisfied until he knew why.
Focus. If he knew you weren’t wasting his time he was generous. If not…
Personal computing. The computer was a device to expand the human mind. His take on this (check out Oberon & descendants) was different than Forth or Smalltalk, but all shared the vision of human as crafter & computer as tool (a perspective we would do well to come back to).
Geek for life. Professor Wirth was 70 when he was writing embedded software & he was thinking about it so intensely that he fit it even into the cracks of his life. I still have a ways to go to 70 (well, not that far), but I intend to keep geeking.
“Algorithms + Data Structures = Programs” was. classic for me. Discovered it in my first year of university back in 1984, and he influence my thinking more than I realised at the time.
Regarding your explanation of incremental design & refactoring I would love to know whether you had a rational discussion about it. I can relate to both points of view. IMHO it is not so much a preference or choice but rather (partly) due to differences in ability. If one cannot do it in one go, then etcetera. Did Wirth show no commiseration for lesser (design) gods? ;-)