
Not one Pascal: what did the Nobel Prize winner Niklaus Wirth do for the modern world

Some believe that the modern world hardly knows Niklaus Wirth and does not even know about his enormous contribution to the world of computer science. Someone considers him "the father of Pascal." Wirth is remembered not only by teachers at universities when they teach Turbo Pascal students, but also by commercial developers writing in Delphi.
In fact, Niklaus Wirth is an engineer with a capital letter, his contribution to the development of programming languages is not limited to Pascal, but only begins with it. In addition, Wirth is a teacher, public figure and, one might say, a philosopher. Let's try to assess the real scale of his personality and his contribution to the IT industry.
Childhood, education, hobbies
Nicklaus Wirth was born on February 15, 1934 in the small town of Winterthur, on the outskirts of Zurich. His parents are Walter and Hedwig Wirth. Nicklaus's father was a school teacher. He lived near the school where his father taught. There was a good library in their house, where Wirth found many interesting books about railways, turbines and telegraphs.
Winterthur has a long history and is famous for its mechanical engineering: locomotives and diesel engines are produced there. From childhood, Wirth was fond of technology, especially aircraft modeling. To launch the rockets, it was necessary to obtain fuel, and therefore he took up chemistry. Young Wirth equipped a “secret” laboratory in the basement of the school. Nothing could stop him: once the model he made deviated from the given trajectory and fell under the feet of the school principal. However, Wirth still continued to stubbornly go to the intended goal.
The hobby turned out to be so serious that Wirth even built more than a dozen models according to his own drawings. Incidentally, he later engaged in real flights and carried this hobby through his whole life. Even at a very respectable age, the creator of the popular programming language did not deny himself the pleasure of flying a jet fighter.

When he was 18 years old, he and two other Zurich aircraft modellers wrote out the coveted radio equipment from England. This predetermined his future fate - in 1954 Wirth entered the Faculty of Electronics in Zurich ETH (Eidgenoessische Technische Hochschule - Swiss Federal Institute of Technology). After four years of training, Wirth received a bachelor's degree in electrical engineering. And then begins the glorious ten-year overseas scientific “tour” of the future “father of Pascal” and the “king of compilers” along the route Switzerland - Canada - USA - Switzerland.
Wirth continued his studies at the Laval University of Quebec (Canada), where in 1960 he received a master's degree. Then he was invited to the University of California at Berkeley (USA) - the future pearl of Silicon Valley. There, under the guidance of Professor Husky, in 1963, Niklaus Wirth defended a dissertation on the development of Algol using the means of Lisp (Euler).
Ticket to life
This work literally gave him a start in life: Wirth was noticed by the programming masters and invited to the IFIP Algol Standardization Committee.
Together with Charles Hoar, Wirth defended the line in the committee on the development of a moderately modified version of Algol, free from the flaws of the original language and supplemented with a minimum of really necessary funds. Wirth and Hoar presented the committee with the Algol-W language (W - from Wirth), which was just such a rework of Algol, but did not meet with support. Upon completion of the committee's work in 1968, Wirth was among those who criticized Algol-68, talking about its lack of reliability and extreme redundancy.
That school was not in vain: for a lifetime, Wirth remembered that it was necessary to prove his innocence by deed, especially when they did not want to hear you. In the development of languages, he forever abandoned the abstract-scientific approach in favor of mathematically engineering. According to him, it is better to first implement the language and only then you should write about it.
Great minded people
The romantic 1960s marked the beginning of a friendship between the three patriarchs of structural programming - the Dutchman Edsger Dijkstra, the Englishman Charles Anthony Hoar and the Swiss Niklaus Wirth.

From left to right: Nicklaus Wirth, Edsger Dijkstra, Charles Hoar
These "Nobel" laureates (the Turing Prize awarded by the ACM Association, awarded once in a lifetime and equated in the computer sciences with the Nobel) brought together not so much the abstraction of computer science as a clear professional position.
Pascal
The most famous achievement of Professor Wirth is Pascal (1970). Pascal played a huge role in the formation of the worldview of several generations of programmers. Its main advantage is simplicity and elegance: it is built on the clear principles of structural programming formulated by Edsger Dijkstroy, on a beautiful mathematical base, laid down by Anthony Hoar, and on the brilliant architectural embodiment of Algol-W ideas implemented by Nicklaus Wirth.
From a technological point of view, Pascal was interesting not only because its compiler, created in ETH, became one of the first implementations of high-level languages on its own, about two years ahead of the C compiler. In the course of work on it in 1973, an abstract Pascal machine (P-machine) was invented that executed a special P-code. To solve the problem of transferring the Pascal compiler to different platforms, Wirth decided to use the time-tested methods of interpretation.
The language of Pascal was perceived by many, primarily as a language for teaching computer science. But Wirth himself does not agree with such a deliberate narrowing of his potential (1984): “Pascal was developed as a language for learning. Although this statement is true, its use in training was not the only purpose. In fact, I do not believe in the success of the application during training of such tools and techniques that cannot be used to solve any practical problems. By today's standards, Pascal had obvious flaws in programming large systems, but 15 years ago it was a reasonable compromise between what was desired and what was effective. ”
"The fifth Element"
Between 1978 and 1980, at the Swiss Federal Institute of Technology, where Wirth returned in the late 60s, he developed one of the first computer stations with a 768 x 592 pixel graphic display and a mouse. For his computer, he chose a somewhat strange name - “Lilith”.
Lilith in the Jewish tradition is an evil demon in a female form. She takes possession of men against their will. By the way, according to one of the apocryphal legends, Lilith under the name Lilu (as in the movie "The Fifth Element") was Adam's wife until the creation of Eve. Perhaps Wirth had in mind that his computer would be extremely attractive to men and cause burning affection.
The Lilith computer had 64 KB of RAM and a processor with a frequency of 7 MHz. For 1980, it was not bad. All the software for this machine, including the original operating system, Wirth - with the support of colleagues - wrote in the language of "Modula-2", which he himself had developed shortly before.
Modula-2
At one time, Brian Kernighan, a well-known popularizer of the C language, co-author of the classic C manual (K&R), wrote a critical article entitled “Why Pascal is not my favorite programming language.” If you carefully read it, you can decide that Niklaus Wirth made the right conclusions from it and, in the language of Modula-2 (1980), under the influence of the article, eliminated many flaws of canonical Pascal.
However, one important circumstance should be kept in mind. Kernigan's work, which caused a stir, was written on April 2, 1981, i.e. two years after the Wirth group implemented in ETH the first Modula-2 compiler and a year after the release of the hardware implementation of Modula-2 - Lilith personal computer. In April 1993, at the ACM Conference on the History of Programming Languages, Wirth, in response to a question from one of his colleagues, gave the Modula-2 language a mark of "6 points" (the highest mark in Swiss schools).
The Modula-2 language was not only a compact and effective alternative to the Ada language, it was far ahead of those implementations of the ideas of modular programming that only after years and in a much less thought-out form were reflected in Turbo Pascal and Delphi. The famous OS / 400 operating system for IBM AS / 400 was implemented on Modula-2. Digital Systems Research Center (DEC Systems Research Center) took this language as the basis for the implementation of its internal projects, subsequently creating the Modula-3 language.
The computer industry lagged behind Wirth's work for at least 5–7 years. In the same 1979 (when the first Modula-2 compiler appeared on the PDP-11 computer in the RT-11 environment), the legendary Apple II computer, which was much inferior to Lilith, just acquired the Apple Pascal compiler, focused on Pascal's UCSD implementation. Before the first modest Turbo Pascal, Anders Heilsberg appeared, there were four whole years. As for the Lilith computer, it was the first computer in Europe that made full use of the capabilities of laser printing. Subsequently, Wirth sadly talked about the fact that with the Lilith project, the Swiss industry missed its unique chance.
"Wirth School"
Alexey Nedorya - candidate of physical and mathematical sciences (1994) considers himself a follower of Niklaus Wirth:
“Wirth School” gave us new horizons. Reading the preprints of Wirth, we opened the world and opened to the world. More importantly, we learned from Wirth about simplicity and the art of dealing with complexity. A simple example. The first compilers from the Modula-2 language were two-pass, the language required it. So our first cross-compiler, made by Dmitry Kuznetsov (Leo) on the Burroughs 6700 under the direction of I.V. Pottosin, was a two-pass. Then there was the story of Kronos. When the first Kronos started working with us, we urgently made a compiler with the truncated Modula-2 so that we could conduct development on the Kronos itself.

Alexey Nedorya, Niklaus Wirth and Vladimir Filippov (from left to right). Moscow, Polytechnic Museum, 2005
We called this language and the Module-0 compiler. The compiler was single-pass, for which I had to make a change to the language. And then it was time to do the full Modula-2 compiler, and we, in accordance with the description of the language, began to make it two-pass. But then the news came that Wirth corrected the language (added forward descriptions of the procedures), and now you can make a one-pass compiler.
As a result, we simplified our life and accelerated development. The main thing was that the programming language, which until then was a “sacred cow”, brought from somewhere above, became just a working tool that can be sharpened and corrected. We learned a lesson: allowing creativity and understanding the importance and usefulness of simplifications.
Ada
In the second half of the 1970s, Wirth participated in the competition of the US Department of Defense for the development of a new language for programming embedded systems, as a result of which the Ada language was created .
The Ministry has set the task to develop a unified programming language for control systems of automated complexes operating in real time. These were, first of all, on-board control systems for military facilities. The language is named after the mathematician Ada Lovelace .
The story with Algol-68 repeated - the project of the group in which Wirth and Hoar worked was not approved by the language committee. Charles Hoar and Nicklaus Wirth dropped out of the competition after the first stage. The competition was won by a project based on Pascal, but much more complex and voluminous.
Hoar expressed his regret that “rattles and trinkets prevailed over the fundamental requirements of reliability and safety” and cautioned against “an armada of missiles flying the wrong way due to an error not detected in time in the Ada compiler”.
Nicklaus Wirth spoke more restrainedly, but also negatively. He said: “Too many things fall out on the programmer. I don’t think that having studied a third of Ada, you can work normally. If you do not master all the details of the language, then in the future you can stumble on them, and this will lead to unpleasant consequences. "
Jean Ishbia, head of the Ada development team, expressing his “respect and admiration” for Wirth, did not agree with him, saying: “Wirth believes in simple solutions to complex problems. I do not believe in such miracles. Complex problems require complex solutions. ”
Oberon
In 1988, in collaboration with Jürg Gutknecht, Wirth developed the Oberon programming language. The aim of the development was to create a language for implementing system software for a new workstation being designed. The basis for Oberon was Modula-2, which was greatly simplified, but at the same time supplemented with new opportunities.

Jürg Gutknecht
Nicklaus Wirth and his colleagues developed the first version of the Oberon system, a machine, an Oberon language compiler, and the System Oberon operating system, which had a graphical user interface, extended concepts for using text in the interface and, on the whole, provided material evidence of the applicability of Wirth concepts.
As already writtenon "Habr", in Oberon the module is not only a means of structuring algorithms and data structures, but also a unit of compilation, loading and distribution. That is, the module is the smallest entity that the compiler can compile. Dependencies of one module on other modules are calculated automatically, but do not lead to the inclusion of code from one module to another. Only identifiers of imported entities and a hash code of dependency are included to control the version of the code.
A module is a loading unit, that is, except in special cases, the module code is a complete program in which there is an entry point and which can be executed for an unlimited time. That is, a complete program. Even the OS kernel is just the first module loaded into memory. The module also assumes that it will be distributed not only in the form of a source, but also in the form of a binary, as well as in the form of an interface part, and for its launch only a certain platform or several platforms will be required. In general, these concepts are included in the concept of modularity in Oberon and constitute a module-oriented programming.
In 1992, Wirth and Mössenböck released a message about a new programming language - Oberon-2, a minimally expanded version of Oberon. In the same year, a subsidiary of ETH was formed - Oberon microsystems, which took up the development of Oberon systems. Wirth became one of the members of her board of directors. In 1999, this company released the next version of Oberon - Component Pascal, more suited for component programming.
Oberon served as a direct ancestor for the parallel programming language (Active Oberon), various modifications of the Oberon language for other runtimes (Component Pascal, Zonnon), was implemented on several platforms (JVM, CLR, JS), served as a prototype of the Java language. The Oberon system itself served as the prototype for the Microsoft Singularity project.

One of Wirth’s students, Michael Franz, commented on the following: “Java portability is based on a virtual machine that can easily simulate a large number of architectures. The idea of a virtual machine was very popular more than twenty years ago, although later it was forgotten. Then it was about Pascal-P - the implementation of Pascal created in ETH, which played a decisive role in the spread of this language. Interestingly, the virtual machines for Pascal and Java are very similar in architecture. ”
On the threshold of the 2000s
“Now we will discuss the characteristics of the“ most modern, most object-oriented and very simple ”Java language,” wrote Sergei Sverdlov.
Java can not only be considered simple, but it is one of the most complex languages, more complex than C ++, and twice as complex as Oberon.
But maybe the comparison with the same Oberon is incorrect? After all, Java is probably still a richer language than this Oberon of yours? Nothing like this! In Java, there are only two essential things that Oberon does not have: built-in multithreading and exception handling. The feasibility of including parallel programming tools directly into the language is questioned by many experts. This could be addressed at the library level. In addition, the mechanism that is implemented in Java is not the most successful solution.

Comparing the scope of language syntax
The total number of tokens in the description of the language syntax can serve as a generalized characteristic of the size of this description.
But in small Oberon there are full records (objects), and normal multidimensional arrays, and not just pointers to them. In Oberon there are also familiar strings with zero at the end, which are simply arrays of characters, and not objects at all, which means that they do not require special tools for manipulation.
Contrary to the propaganda of Java, there is little that is really new. The same concept of a virtual machine is the first thing that comes to mind when thinking about multi-platform. About twenty-five years ago, this was a successful and fresh decision.
This opinion was expressed more than 15 years ago when such disputes were relevant. The question of how Java is now better or worse in this regard is left open.
Pedagogical and social activities
From 1963 to 1967, Wirth worked as an assistant professor at Stanford University and in 1967 returned with this title to the University of Zurich. And in 1968, he received the title of professor of computer science at ETH and began to build his “Swiss” Stanford in his homeland.
The twentieth anniversary from 1969 to 1989 was perhaps the most fruitful period in Wirth's life. He continued to build his school, devoting a lot of time to organizational activities.

Source: oberon2005.oberoncore.ru
From 1982 to 1984 (and then from 1988 to 1990) Wirth headed the Department of Computer Science at ETH, and since 1990 led the Institute of Computer Systems at ETH.
Professor Wirth retired on April 1, 1999, upon reaching the age of 65.

Source: oberon2005.oberoncore.ru
In 2001, Niklaus Wirth wrote a greeting to Russian students and teachers in connection with the introduction of Oberon courses at Moscow State University: “I sincerely hope that Oberon will help in training high-class programmers and scientists in Russia and that he will be appreciated in a country where they have always attached great importance to a thorough education. ”
Life credo
The life credo of Niklaus Wirth, writes Ruslan Bogatyrev, is best conveyed by the words of the great Blaise Pascal: “All our dignity lies in thought. Not space and not time, which we cannot fill, elevate us, but it is her, our thought. Let’s learn to think well. ”
PS And now readers are invited to evaluate the scale of the person according to the list of the main projects of Niklaus Wirth:

Source: oberon2005.oberoncore.ru