S. S. Lavrov, I.V. Romanovsky, and G. S. Tseytin
(St. Petersburg)
The history of programming in Leningrad-Petersburg is rich in
people, achievements, publications, and applications. The authors, being
themselves the participants of the events, are trying to present the general,
though quite incomplete, picture.
In this paper, the contribution of Leonid Kantorovich, Alexander
Baluev, Serguei Maslov, Olga Daugavet, Igor Klokachev, Boris Martynenko,
Andrei Terechov and many others is described.
I moved to Leningrad in autumn 1971 --- in the time of the
flowering of activity of the school I am going to speak of. I call it the
Leningrad school not because of a special respect to the former name of
the city, but simply to avoid an anachronism. Probably, it would
be possible to name it after its informal leader, Grighori Tseitin. Alexander
Baluev, the first director of this school and the mentor of many its members,
also was of great importance. Serguei Ermakov was the head of the Chair
of Computer Software organised a year before, while Igor Bratchikov was
one of its outstanding professors. I hope, that none of the
three persons named above will not be offended by stating that they did
not actively practice programming. The manager of the biggest computing
center of the University, Alexander Shauman, was another member of the
Chair; his speciality was computer structures. Iosif Romanovski,
the Head of the laboratory of Operation Research, had no formal connection
to programming activity (as well as G. Tseitin himself who headed the laboratory
of Mathematical Linguistics). Nevertheless he wrote interesting programms
and very popular so-called "program complexes'', and studied many unusual
and fresh ideas related to programming. Finally, I mention Boris
Novikov who took far from the last place among the active and creative
programmers related to the Department of Mathematics and Mechanics of LSU.
Gheorgui Samosyuk, the deputy dean of the Department of Mathematics
and Mechanics and the head of the Institute of Mathematics and Mechanics
of LSU, said that whatever G. Tseitin chose to do, programming or repairing
a primus heater, he succeeded better than others. That is hard to
deny.
G. Tseitin had come from a school of Leningrad logicians headed by
Andrei Markov and Nikolai Shanin. It is worth recalling extensive and very
serious studies on development of theorem-proving programms this group
was carrying out. Many remember the name of Serguei Maslov, the author
of a so-called "reversed method" of theorem-proving which is in no way
less efficient than the famous "method of resolution''. I think,
watching these works was rather useful for G. Tseitin (contrary to my expectations,
I could not find his name among their participants).
For the first time I have met G. Tseitin in person at a large ("second pan-USSR") Conference on Programming held in Akademgorodok near Novosibirskin in spring, 1970. However two years before I had happened to witness an epistolary discussion between the developers of Algol-68 and G. Tsetin who had been pointing at an obvious theoretical error in the description of the language, while the developers had been refusing to acknowledge it.
That project of Algol-68 had inspired G. Tseitin to create a translator for this language. It was just this very work which became the hearth that nested the flame of the Leningrad school of programming. The first stage of this work had been summed up in a book "Algol-68. Realisation methods" edited by G. Tseitin and published by LSU in 1976. Its Preface listed (almost all?) participants to the work. Among others I mention Serguei Baranov, Ilya Guindysh, Boris Martynenko, Peter Seke (Jr.), Andrei Terekhov, Nikolai Fominyh. All of them with the exception of B. Martynenko had been students and graduated (in the strict sense of the word) from G. Tseitin's school. As early as in the beginning of 70's, it was possible to foresee that Algol-68 would get a more modest role than its predecessor Algol-60 (however, the role of the latter had been more observed in Europe than in U.S.A., while in U.S.S.R., due to the efforts of A. Ershov, M. Shoura-Boura, E. Lyubimski and their collaborators, its role had been exceptional). Even if Algol-68 had not met any application in our country (which is not nearly so), the rise of G. Tseitin's school would have been a more than sufficient justification of its existence.
Among other advantages of the book which distinguish it from other
monographs related to the same subject, I have pointed in my review at
- strict adherence to the description of the language (with regard to the
Reviewed Issue of 1974) without any simplifications, - applicability of
the described program processing methods to a large class of programming
languages at different stages of translation, - an automatic construction
of an efficient analyser for the
class-independent part of the language,
- a technique for synthesising efficient programs based on
information exchange between language constructions for chosing a way
of allocation of auxiliary results of computations, and a special two-pass
scheme of synthesis automatically selecting a programming method with regard
to the succeeding text of a program.
By the way, A. Ershov has once noticed that the brothers Strugatski had turned a "two-pass" translator into "double-run" one. "That is what means - true experts and connoiseurs of the language!", he added.
These ideas and priciples had been caught up by G. Tseitin's disciples and had been steadily observed in developing of a subsequent family of compilers. The latter was quite numerous and, not confined itself to Algol-68 only, but included compilers for Ada and Pascal, and other languages, and designed for machines of various architectures.
Between the inveterate programmers of the Department of Mathematics and Mechanics ("hackers" in the best sense of the word) most popular was the machine Odra-1204 which functioned as "personal computer in collective use". They benefited from invaluable services of a program DICO written by G. Tseitin which was not only a DIalogue program COrrector, but rather a general purpose dispatcher controlling the machine itself and its magnetic drum file system. I had no chance to work so closely with other programs by G. Tseitin, but that very one had saved lots of my time and efforts.
Like many other, I had drawn a vast amount of inspiring ideas and topics from communications with G. Tseitin. Each his talk at the seminar of the chair had been not just interesting, it had been a fest of thought.
Now I would like to stop at some of "graduates" of G. Tseitin's school.
S. Baranov is a well-known author of works in theory, though he never leaved practical programming. He is now a Doctor of Scince, a Professor, the Deputy Director of St.Petersburg Institute of Informatics and of something else within Russian Academy of Sciences.
Participation in the above-mentioned activity has determined the
field of interests of B. Martynenko for many years. Quite recently
he has defended his doctor thesis following his monograph "Syntactically
Controlled Data Processing" which develops some 30-years old ideas now
implemented in a technological environment SYNTAX. His defence has
been opposed by
I. Pottosin, I. Romanovski, and me. We came to a common conclusion
that the monograph provides good material for young programmers and contains
many ideas which, though having historically deep origins, remain valuable
until the present time.
Speaking of training of young programmers, it is impossible to by-pass A. Terekhov, whose bright personality and pedagogical gift always attract young people, even before entering the University, while they are in the boarding school of LSU. It is his abilities of an organiser and a leader, which made the laboratory risen from G. Tseitin's school (for some time it had been headed by B. Martynenko) successful for many years after G. Tseitin had switched to other topics of interest. Members of this laboratory have developped a large number of outstanding computer applications. The laboratory has brought up a large number of mature scientists. Few years ago, A. Terekhov recieved his Doctor of Science degree, and at present he is the head of a Chair at the Department of Mthematics and Mechanics.
I know very little of the fortunes of I. Guindysh, P. Seke and N. Fominyh.
It would be naive and unfair to reduce the Leningrad school of programming to the activity of G.~Tseitin, his disciples and followers.
A seminar organised by Olga Daugavet and Igor Klokachev has enjoyed constant success and popularity among programmers. The seminar was attached to an academic scientific institution (I do not give neither its full name, nor its comic nickname). That institution conducted theoretic and applied research in mathematical economics, a framework computer science takes quite an important place in (otherwise, how the seminar would rise?).
The person of Enn Tyugu is well-known to Soviet and Western programmers. He is a gradute of Leningrad State Technical University and, though his scientific fame is guaranteed primarily by his own talent, LSTU can not be omitted from the list of places which payed much attention to programming as a discipline.
On the other hand, the credits of Leningrad Polytechnical Institute (the fact that it is called a "University'' now does not increase its fame or belittle its previous elevated name). Vsevolod Kotlyarov is best known to me and, needless to say, many other persons as a specialist actively and creatively working in computer science inside this insitute.
I feel a greate respect to the people who worked and study in Leningrad Institute of Precise Mechanics and Optics, though my personal contacts here were not so continuous and tight.
Institute of Phisiology of AS of USSR seems to be a rather unusual place for activity of a serious programmer. However, Alexander Kleshchev and Vladmir Temov who worked there and their IFN language and system, had risen over the horizon of computer science like a comet. Alas, the comet of A. Kleshchev proceeds to shine from the other end of Russia, whereas V. Temov's comet disappeared in the transatlantic horizon.
All the persons mentioned above were continuously and tightly
connected by scientific and personal ties to the Department of Programming,
organised and directed by Andrei Ershov, and subsequently with the Institute
of Informatics Systems of RAS named after him.
Personalia.
Of math-mech pioneers, I think S.Ya.Fitialov and V.N.Igolkin should be mentioned, apart from Bratchikov.
I.B.Gindysh worked for some time in "Tranzas-Marin" (under Monarch), now he is in the St.Petersburg branch of Motorola. As for the technology of syntax parsing, one should also mention A.P.Popov.(My own role in this was not that important, I proposed the first mathematical model, but later they went beyond the class of languages described by my model).
N.F.Fominykh, to my knowledge, is staying, like before, with Terekhov.
It would be nice (though possibly not in connection with math-mech) to say some words about the pioneering role of I.R.Gitman who never saw a formal recognition of his merits.
Back to the main topic. When I started to work in computer
programming (since about 1959, before that I only had some theoretical
familiarity with the subject), I found in the Computing Center an existing
culture of programming. Granted that in those times the skills of parsimonious
programming were more important, there existed an understanding (which
I assimilated) of the idea that subroutines reflect certain conceptual
operations, and also something like the idea of incapsulation: the principle
that access to certain data is a privilege of specific subroutines. So
we were close to OOP, if we are speaking about individual objects, and
not about classes, inheritance, etc. I have been unable to trace the origins
of this understanding.
I think the pioneering role of A.N.Baluyev should be emphasized. He then united all those who began at those times, and was the head of a seminar. He organized the development of a standard subroutine library for "Ural-1" (of which we didn't know then it was "-1"), and the work towards a compiler from the Fortran-like language they invented. To him we also owe the first injection of "practicality" which is not the last difference between our domain and mathematics (the next injection of the same I probably owe to you).
We also learned much from the developers of TA-2, to whose seminar I (and possibly other people) attended.
The important part of the processes that were going on is the gradual growth of awareness of a special character of programming, as a field of activity distinct from mathematics. One of the incentives was the need to define some criteria of acceptability of a work as a thesis for a degree. It was in the late fifties that the process of erosion of qualification criteria in favor of various opportunistic considerations began. Some theses in programming containing no mathematical results (while having a value on their own) prompted acceptance of other work that contained neither a mathematical result nor a contribution to programming. Of course, there were no formulations of what was valuable for programming, but the conscience of being different from mathematicians grew ever stronger. (Of course, much can also be said about those who stood in the way of identification of a new branch of research, and about their motivations as well.)
The difference of the new field from mathematics was aptly described about 1970 by La'szlo' Kalma'r, a logician (see Proceedings of the 4th international conference on logic, methodology and philosophy of science, Bucharest 1971). But when I showed his paper to Dijkstra (during one of those "concertos for Dijkstra and Choir [Hoare]", as A.A.Baehrs called them) Dijkstra left disparaging comments in the margins. (Now they say about Dijkstra that he doesn't accept WWW though his addresses are distributred via this medium). Once during a workshop in Novosibirsk in a discussion I stated my views about the differences, maintaining that some good achievements in programming are not good mathematical results, and A.A.Lyapunov didn't agree; he thought they are also good mathematical work, so he seemed to give the word "mathematics" a broader meaning. Later I didn't agree with what I thought was the main thrust of your talks before the mathematical society. I understood that you were claiming "we too are mathematicians" while my idea in this situation would be to say "we are not just mathematicians".
I personally was assuming leadership in consolidation of this new field somewhere in late sixties, and established a common seminar. But I didn't go beyond that (partially because S.V.Wallander pushed me away rather insolently). The first attempts to develop separate curricula in this field date back to the same period.
I cannot admit to being a leader (even in a very vague sense) of all the work in computer programming at math-mech in seventies. I had nothing to do with the work of a group headed by B.A.Katsev (of those, V.A.Kirillin has become a good professional, now at Motorola-St.P.). During the same years, V.O.Safonov's group separated from the rest (now this group shows a rare example of successfull cooperation with a major American company -- note that B.A.Babayan didn't succeed). One more person to mention is G.F.Deykalo who came to us as an accomplished professional, and correspondingly about the development of JEC, one of the few grassroot products that won a high popularity. With Deykalo I also associate the sense of practicality in programming projects.
My own position regarding the difference between computer science
and mathematics is the leading role of human factors.