Some believe that the modern world hardly knows Niklaus Wirth and does not even know about his huge contribution to the world of computer science. Someone considers him "Pascal's father." Wirth is remembered not only by teachers in universities, when they teach students Turbo Pascal, but also by commercial developers who write 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 him. In addition, Wirth is a teacher, social activist and, one might say, philosopher. Let's try to assess the real scale of his personality and contribution to the IT industry.
')
Childhood, education, hobbies
Niklaus 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. Niklaus' father was a schoolteacher. He lived not far from the school where his father taught. There was a good library in their house, where Wirth found many interesting books about railways, turbines, and telegraph.
Winterthur has a long history and is famous for its mechanical engineering: locomotives and diesel engines are produced there. Since childhood, Wirth was fond of technology, especially aeromodelling. To launch rockets, it was necessary to obtain fuel, and therefore he took up chemistry. Young Wirth has equipped a “secret” laboratory in the basement of the school. Nothing could stop him: once a model made by him deviated from a given trajectory and fell under the feet of the school principal. However, Wirth still continued to persevere toward his intended goal.
The hobby turned out to be so serious that Wirth even built more than a dozen models according to his own drawings. By the way, he later embarked on real flights and carried this hobby through his entire life. Even at a very respectable age, the creator of a popular programming language did not deny himself the pleasure of flying a jet fighter.
When he turned 18, he and two other Zurich model aircraft from England released the coveted radio equipment. This predetermined his fate - in 1954 Wirth entered the electronics department at the ZTH ETH (Eidgenoessische Technische Hochschule - Swiss Federal Institute of Technology). After four years of study, Wirth received a bachelor's degree in electrical engineering. And then begins the glorious ten-year overseas scientific “tour” of the future “Father Pascal” and “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 leadership of Professor Husky in 1963, Niklaus Wirth defended his thesis on the development of Algol by means of Lisp (Euler).
Start in life
This job literally gave him a start in life: Wirth was noticed by the programming masters and invited to the IFIP Committee on Standardization Algol.
Together with
Charles Hoar Wirth, he defended in the committee a line on the development of a moderately modified version of Algol, free from the shortcomings of the original language and supplemented by a minimum of really necessary funds. Wirth and Hoar presented to the committee the language Algol-W (W - from Wirth), which was just such a processing of Algol, but did not meet with support. At the end of the work of the committee 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 the rest of his life Wirth remembered that he needed to prove his case by doing, especially when they didn’t want to be heard. 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 should you write about it.
Great supporters
The romantic 1960s marked the beginning of a friendship between the three patriarchs of structured programming — the Dutchman Edsger Dijkstra, the Englishman Charles Anthony Hoare, and the Swiss Niklaus Wirth.
From left to right: Niklaus Wirth, Edsger Dijkstra, Charles Hoare
These “Nobel” laureates (the Turing Award, awarded by the ACM Association, is awarded once in a lifetime and is equated to Nobel in computer science) brought together not so much by 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 shaping the worldview of several generations of programmers. Its main advantage is simplicity and elegance: it is built on clear principles of structured programming, formulated by Edsger Dijkstra, on a beautiful mathematical basis laid down by Anthony Hoare, and on the brilliant architectural embodiment of Algol-W ideas implemented by Niklaus Wirth.
From a technological point of view, Pascal was interesting not only because his compiler, created at ETH, was one of the first high-level language implementations on himself, 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, executing a special P-code. To solve the problem of transferring the Pascal compiler to different platforms, Wirth decided to use time-tested methods of interpretation.
Pascal language was perceived by many, above all, 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 goal. In fact, I do not believe in the success of the use of such tools and techniques during training, which cannot be used in solving some practical problems. By today's standards, Pascal had obvious drawbacks in programming large systems, but 15 years ago it represented a reasonable compromise between what was desirable and what was effective. ”
"Fifth Element"
In the period from 1978 to 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 graphic display of 768 x 592 pixels 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 Lila (as in the film The Fifth Element) was the wife of Adam before the creation of Eve. Probably, Wirth meant that his computer would be extremely attractive for men and would cause a burning attachment.
Computer "Lilith" had 64 KB of RAM and a processor with a frequency of 7 MHz. For 1980 it was not bad. All 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 "Why Pascal is not my favorite programming language." If you read it carefully, you can decide that Niklaus Wirth made the right conclusions from her and in the language of Modula-2 (1980), under the influence of the article, eliminated many of the flaws of the canonical Pascal.
However, one important circumstance should be kept in mind. Kernigan’s noisy work was written on April 2, 1981, i.e. two years after the implementation of the Wirth group at ETH of the first Modula-2 compiler and one year after the release of the hardware implementation of Modula-2 - the 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, rated Modula-2 a score 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 the implementation of modular programming ideas that only years later and in a much less thoughtful form were reflected in Turbo Pascal and Delphi. The famous OS / 400 operating system for IBM AS / 400 was implemented on Modula-2. The Digital Systems Research Center of the Digital Corporation (DEC Systems Research Center) took this language as the basis for the implementation of its internal projects, later creating the Modula-3 language.
The computer industry lagged behind Wirth's work by at least 5–7 years. In the same year of 1979 (when the first Modula-2 compiler appeared on the PDP-11 computer in the RT-11 environment), the legendary Apple II computer, much inferior to Lilith, had just found the Apple Pascal compiler oriented to Pascal's UCSD implementation. Before the advent of the first modest Turbo Pascal, Anders Hejlsberg remained a full four years. As for the computer Lilith, he became the first computer in Europe, which fully used the possibilities of laser printing. Subsequently, Wirth sadly said that with the Lilith project, the Swiss industry had missed its unique chance.
"Wirth School"
Alexey Nedorya - Candidate of Physical and Mathematical Sciences (1994)
considers himself a follower of Niklaus Wirth:
"School Wirth" gave us new horizons. Reading the preprints of Wirth, we opened the world and opened up to the world. More importantly, we learned from Wirth the simplicity and art of dealing with complexity. A simple example. The first compilers from Modula-2 language were two-pass, the language required. Similarly, our first cross-compiler, made by Dmitry Kuznetsov (Leo) on Burroughs 6700 under the leadership of I.V. Pottosin, was a two-pass. Then there was the story of “Kronos”. When we got the first Kronos, we urgently made a compiler with a trimmed Modula-2, so that we could develop at Kronos itself.
Alexey Nedorya, Niklaus Virt and Vladimir Filippov (from left to right). Moscow, Polytechnic Museum, 2005
We called this language and the Modula-0 compiler. The compiler was one-pass, for which it was necessary to make a change in the language. And then it was time to make the complete modula-2 compiler, and in accordance with the language description, we began to make it a two-pass. But then the news came that Wirth corrected the language (he added forward-description of the procedures), and now one-pass compiler can be done.
As a result, we have simplified our life and accelerated development. The main thing was that the programming language, which until then had been a “sacred cow” brought from somewhere above, became just a working tool that can be sharpened and corrected. We got a lesson: the resolution of creativity and an understanding of the importance and usefulness of simplifications.
Ada
In the second half of the 1970s, Wirth participated in a contest by the US Department of Defense to develop a new language for programming embedded systems, which resulted in the creation of the
Ada language .
The Ministry has set the task to develop a single programming language for control systems of automated complexes operating in real time. First of all, onboard control systems of military objects were meant. The language is named after the mathematician
Ada Lovelace .
The story with Algol 68 is repeated - the project of the group in which Wirth and Hoar worked was not approved by the committee on language. Charles Hoare and Niklaus Wirth dropped out of the competition after the first stage. The competition won the project based on Pascal, but much more complex and voluminous.
Hoare expressed his regret that "rattles and trinkets prevailed over the fundamental requirements of reliability and safety" and warned against "an armada of rockets flying the wrong way because of an error not detected in time in the Ada compiler."
Niklaus Wirth spoke more restrained, but also negative. He said: “Too much of everything falls on the programmer. I do not think that, having studied a third of Ada, one 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, leader of the Ada development team, expressed 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. Difficult problems require complex solutions. ”
Oberon
In 1988, in collaboration with Jürg Gutknecht, Wirth developed the Oberon programming language. The purpose of the development was to create a language for the implementation of the system software of the designed new workstation. The basis for Oberon became Modula-2, which was significantly simplified, but at the same time supplemented with new features.
Jürg Gutknecht
Niklaus Wirth and colleagues developed the first version of the Oberon system, the machine, the Oberon language compiler, and the System Oberon operating system, which had a graphical user interface, extended concepts for using text in the interface, and in general was a tangible proof of the applicability of Wirth concepts.
As already
written on 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 minimum 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 dependency hashcode are included to control the version of the code.
A module is a unit of load, that is, except in special cases, the module code is a complete program that has an entry point and can run for an infinitely long time. That is, a full program. Even the OS kernel is just the first module loaded into memory. The same module assumes that it will be distributed not only in the form of a source code, but also in the form of a binary, as well as in the form of an interface part, and to launch it you will need only a specific platform or several platforms. In general, these concepts are included in the concept of modularity in Oberon and constitute a modular-oriented programming.
In 1992, Wirth and Mössenböck released a message about a new programming language, Oberon-2, the minimally extended version of Oberon. In the same year, a subsidiary of ETH was founded - Oberon microsystems, which was engaged in the development of Oberon systems. Wirth became one of the members of its board of directors. In 1999, this company released the next version of Oberon - Component Pascal, more adapted for component programming.
Oberon served as a direct ancestor for the parallel programming language (Active Oberon), various modifications of the Oberon language for other execution environments (Component Pascal, Zonnon), was implemented on several platforms (JVM, CLR, JS), served as a prototype for the Java language. The Oberon system itself served as a prototype for the Microsoft Singularity project.

As you
know , the emergence of a virtual (abstract) Java machine was presented by its developers from Sun Labs almost as a fundamental discovery in the practice of programming languages.
One of Wirth's students, Michael Franz, noted the following about this: “Java portability is based on having a virtual machine that makes it easy to imitate a large number of architectures. The idea of a virtual machine was very popular more than twenty years ago, although it was later forgotten. Then it was about Pascal-P, the Pascal implementation created at the ETH, which played a decisive role in the dissemination of this language. Interestingly, the virtual machines for Pascal and Java are very similar in architecture. "
On the threshold of the 2000s
“Now let's discuss the characteristics of the“ most modern, most object-oriented and very simple “Java language,”
wrote Sergey Sverdlov.
Not only can Java not 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, probably, Java is still richer language than this your Oberon? Nothing like this! In Java, there are only two significant things that are not in Oberon: built-in multithreading and exception handling. The expediency of incorporating parallel programming tools directly into the language is questioned by many experts. This could be decided at the library level. In addition, the mechanism that is implemented in Java is not the best solution.
Comparison of language syntax
The total number of tokens in the description of the syntax of a language can serve as a generalized characteristic of the size of this description.
But in the small Oberon there are full-fledged records (objects), and normal multi-dimensional arrays, and not just pointers to them. There are in Oberon and the usual string with a zero at the end, which are just arrays of characters, and not objects, and therefore do not require special tools for manipulation.
Contrary to Java propaganda, there is little that is truly new. The same concept of a virtual machine - the first thing that comes to mind when you think about multiplatform. Twenty-five years ago it was a good and fresh decision.
This opinion was expressed more than 15 years ago, when such disputes were relevant. The question of how much Java is now better or worse in this regard will be left open.
Pedagogical and social activities
From 1963 to 1967, Wirth worked as an associate professor (assistant professor) at Stanford University and in 1967 returned to this rank at the University of Zurich. And in 1968 he received the title of a professor of computer science at ETH and began to build his “Swiss” Stanford at home.
The twentieth anniversary from 1969 to 1989 was perhaps the most fruitful period in the life of Wirth. He continued to build his school, devoting a lot of time to organizational activity.
Source: oberon2005.oberoncore.ru
From 1982 to 1984 (and later from 1988 to 1990) Wirth headed the Faculty of Computer Science at ETH, and from 1990 he headed the Institute of Computer Systems at ETH.
Professor Wirth retired on April 1, 1999, at 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 the Oberon courses at Moscow State University: “I sincerely hope that Oberon will help in the training of highly skilled programmers and scientists in Russia and that it will be appreciated in a country where attached great importance to solid education. "
Life credo
The life credo of Niklaus Wirth,
writes Ruslan Bogatyrev, best convey the words of the great Blaise Pascal: “All our dignity lies in thought. Not space and not time, which we can not fill, elevate us, but it is our thought. We will learn to think well. ”
PS And now readers are invited to rate the scale of the individual according to the list of Nicklaus Wirth's main projects:
Source: oberon2005.oberoncore.ru