“To hell with AI”. Niklaus Wirth’s answer to a journalist’s question about his views on AI reminds me of the famous words by Albert Einstein „Gott würfelt nicht“ – ”God does not play dice”, when expressing his skepticism about quantum theory. In both cases, the rejection of a fundamentally new direction of a discipline stands in contrast to these persons’ own outstanding and unparalleled achievements in this discipline.
Alongside with Edsger W. Dijkstra and C.A.R. Hoare, Niklaus Wirth was among the pioneers who decisively shaped the emerging discipline of Computer Science in the last century. All three were honored with the Turing Award, named after Alan Turing, one of the earliest pioneers of the discipline. The Turing Award is the highest scientific award in Computer Science / Informatics.
In contrast to the late Dijkstra and the theoretician Hoare, Niklaus Wirth’s research always emphasized the role of engineering. The proverbial “School of Wirth” was characterized by a minimalistic approach to theory and formalism where these had to prove themselves by their utility in constructive applications. He highly valued even very abstract principles, as long as they served for a constructive purpose. Examples are Wirth’s method of stepwise refinement or the predicate calculus for proving the correctness of programs or algorithms. Wirth’s sense for the essential was legendary, and, closely related to this, his passion for simplicity and freedom from frills.
In my long collaboration with Niklaus Wirth, I always admired the ultimate elegance and sometimes genius simplicity of the programs he wrote. Niklaus Wirth hated intransparency. Consequently, he did not like all those programming wizards and automatisms that contemporary software development environments come with, and qualified these occasionally with Dijkstra’s sarcastic quote „how to program if you can’t“.
When I entered the field in 1968 as a programmer at Swissair, I soon found myself in the system programming department for IBM’s System 360 mainframe computers. In the early 1970ies, I knew Niklaus Wirth’s name and had even met him in person in an awestruck attitude. I knew his seminal achievements with the programming language Pascal, which, by its elaborate type system, enabled the early detection of programming errors, when programmers confused apples and oranges. However, by that time, I saw no connection between his programming language and my meticulous working with bits and bytes at the level of machine languages. It was like two worlds in the same universe.
A good decade later, after finishing my PhD in Mathematics, I decided to dig deeper. By chance, I had come across an advertisement where Niklaus Wirth sought staff for a project he just had launched at ETH: the development of a new generation of personal computing workstations. I applied and Niklaus hired me.
Niklaus Wirth in 1984 when he won the Turing Award. On the left is the personal computing workstation Lilith developed by Niklaus Wirth.
Photos:
This photo: by courtesy of Niklaus Wirth / ETHZ
Other photos: provided by Juerg Gutknecht
My skepticism about high-level programming languages for system programming tasks was blown away soon. It gave way to the insight that abstractions such as those in the programming language Modula-2, the successor to Pascal, were excellently suited for system programming problems. The ultimate convincing argument was the actual, successful realization of Wirth’s radical vision: writing the entire system software for the new workstation, called Lilith, in Modula-2, including the user interface, the operating system and the Modula-2 compiler. This was made possible by an ingenious method already known from Pascal: compiling Modula-2 programs first into a machine-independent intermediate code and then efficiently interpreting this code on real machines.
The next and final step in my collaboration with Niklaus Wirth was breaking up the rigid type system of Modula-2 into a dynamic, open type hierarchy, which enabled continuous extensions of a system without sacrificing strong typing – and the early detection of programming faults that comes with strong typing. This evolution led to the programming language Oberon. It was a fruitful step toward object-oriented programming, which, in its entirety, was deemed “to pompous” by Wirth. Once again, the language Oberon served as a means to an end: the development of a new, compact personal workstation called Ceres, which was based on a new generation of hardware components.
Internationally, the programming languages Modula-2 and Oberon became popular due to their minimalistic structure and open-source availability. They guided several start-up enterprises to success. In particular, safety-critical projects could profit from the consequent strong type checking at compile time.
Niklaus Wirth’s virtues of simplicity, clarity, transparency, minimality, and resource efficiency are cross-cutting competencies that have literally set a precedent. They have shaped entire generations of students in Computing/Informatics and have produced professionals who today hold influential positions in Switzerland and abroad, especially in the iconic Silicon Valley. They carry on the spirit of Niklaus Wirth and further spread it.
However, the discipline of programming according to the principles of predicate logic has given way to a culture of software “engineering”. Thanks to “smart” frameworks and packages and all kinds of virtual assistants and AI bots, the competencies required for software development and thus the entry threshold into the field have become substantially lower. As a positive consequence, the doors are now wide open for an explosively growing population of software developers in an equally explosively growing world of application areas. However, as a negative consequence, high-quality programming according to Wirth’s standards had to be sacrificed to a large extent. Proof for this are, for example, ubiquitous, stupid error messages such as “An error has occurred. Please try again” as a sign of capitulation of the developers, infinitely circling activities when attempting to establish a connection, or even entire releases whose only innovation is the correction of previously made mistakes. Inevitably, this evokes certain nostalgic feelings of the good old Wirth days.
Speaking of nostalgic feelings: Apart from Niklaus’ scientific personality, I have particularly fond memories of his sociable side. Countless long evenings in the cozy atmosphere of his former country residence, together with his wife Diana. Inspiring discussions about God, the world, science, and programming, always with the result that we knew everything better.
Jürg Gutknecht is a professor emeritus at ETH Zurich. From 2014 to 2018 he was president of SI. In the 1980ies, he was among the closest collaborators of Niklaus Wirth, participating in the development of the software for the workstations Lilith and Ceres and the programming language Oberon.
Translation from German into English by Martin Glinz. He used DeepL for checking and polishing his translation.