|
Biography
A.P.Ershov, an outstanding Soviet programmer and
mathematician, was born on April 19, 1931, in Moscow. He died
on December 8, 1988, in Moscow after the fatal decease.
A.P.Ershov came from the intellectual family. His
father was a chemical engineer, his mother was a librarian.
The family was a typical representative of Russian
democratic intelligentsia: medical officer, professor-chemist,
academician specializing in the history of Byzantine Empire.
Revolutionary and Communist Party workers of the early days of
the Soviet power were among the members of the family.
Since 1943 the Ershovs lived in Siberia, in Kemerovo, where in
1949 A.P.Ershov finished the secondary school and in the same
year he joined the Physics and Engineering Faculty of Moscow
State University. But because of numerous absurd vetos, so
typical for the Stalin's ages, he was prohibited to study
physics. Fortunately, Ershov managed to enter the Mechanics and
Mathematics Faculty of the University. He began his studies at
the Department of Computational Mathematics headed by
academician S.L.Sobolev and then, under the strong influence
of A.A.Lyapunov, he took a great interest in programming.
In 1953, being a student, he went to work for the Institute of
Precise Mechanics and Computing Machinery (ITMiVT); one of the
first Soviet programming teams had been established in this
organization.
This way that, in fact, was not quite voluntary, led him to
programming. But the choice of a field of activity made by
A.P.Ershov seemed to be lucky both for himself and for
programming. In fact, Ershov had versatile gifts and,
without any doubts, he could reach great results in any other
area, in particular, in primarily chosen physics.
But such aspects of his talent as a power of uncommon apprehension,
an ability to find the real basis of intuitively forming
knowledge and to see perspective points of growth seemed to
be extremely appropriate in the emerging discipline of computer
science. Turning to another, more established scientific domain,
Ershov should probably have lesser possibilities for realizing his
intellectual potential, so, it was a happy choice for him.
On the other side, at the time a computer science, as no scientific
discipline whatever, required scientists with the character of
forerunner (like Ershov) to form the initial scientific amd
methodological basis. Ershov's activities that should be considered
below seemed to be completely in keeping with the needs of
computer science, so, it was Ershov's happy choice for
programming.
Ershov received his diploma in 1954; it was the first time in the
USSR when the graduates had the speciality "programming".
In 1954-1957 he was a post-graduate student with
professor A.A.Lyapunov as a supervisor. Ershov's Ph.D.thesis
devoted to the notion of operator algorithm was written as early
as 1958, but because of "guarded" looks of mathematicians towards
the new science he obtained his doctoral degree not till 1962 and
quantified in 1968 with the thesis on compiler construction techniques.
In 1970 A.P.Ershov became a corresponding member and in 1984
a full member of the Academy of Sciences of the USSR.
This quick promotion is related with the fact that in late
1950s Ershov became one of the leading Soviet programmers not
only due to his own brilliant researches, but as a leader of
productively working software teams. In 1957 the Computing
Center of the USSR Academy of Sciences was set up and Ershov
was appointed Head of the Department of Automatic Programming.
In connection with organization of the Siberian Branch of the USSR
Academy of Sciences and at the request of Academician
S.L.Sobolev, the first director of the Institute of
Mathematics of the Siberian Branch of the USSR Ac.Sci.,
A.P.Ershov became an organizer and, in fact, head of the
Programming Department of the Institute.
In 1960 he formally accepted the post of head of the
Department and left Moscow for Novosibirsk. Siberian Branch of
the USSR Ac.Sci. offered good opportunities for wide-scale
researches, which was very attractive to young and active
scientists, and in late 1950s and early 1960s Ershov was among
those who, together with academicians-founders, established
Institutes of new scientific center in Academgorodok near
Novosibirsk. Later on the Department headed by A.P.Ershov
became an essential part of the Computing Center of the
Siberian Branch of the USSR Academy of Sciences that was
organized by academician G.I.Marchuk in 1964. Due to Ershov's
efforts Akademgorodok became one of the leading centers in
computer science. He should be recognized as a founder of
later well-known Siberian School of System and Theoretical
Programming, whose activity was combined from the work of a
large number of Ershov's students and successors in different
Institutes of the Siberian Branch of the USSR Academy of
Sciences. He himself, formally being only Head of Department
of the Computing Center, was a leader and informal head of
large and actively working community of Novosibirsk
programmers.
A.P.Ershov greatly influenced on development of the theory and
practice of programming in all the country. This influence is
far from being restricted either by the fact that he was head
of one of the leading scientific schools, or by his own
scientific contribution considered below. In essence, since
late 1960s Ershov played key role in the programming community
in the USSR. He was one of the main organizers of two first
All-Union Conferences on Programming (in Kiev and
Novosibirsk), he initiated a great number of conferences,
symposiums and workshops on various problems of system and
theoretical programming, he served as a member of editorial
boards of all leading programming journals in the USSR and was
Editor-in-Chief of Mikroprotsessornye Sredstva i Sistemy since
foundation of this journal. Ershov chaired several All-Union
Commissions and Working Groups. In 1987 he was appointed Head
of Scientific Council on Cybernetics that coordinated
researches in computer science in the Soviet Union.
As a matter of fact, Ershov recognized the importance of
ogranizational activity in forming new research
directions and gave much attention to it both in the country
and abroad. Ershov actively participated in IFIP: he was a
member of IFIP Committees and Working Groups, vice-president
of IFIP-68 Programming Committee, invited lecturer at IFIP-71
Congress, organizer of several IFIP Working Conferences. In
1980 Ershov received the Silver Core Award for services
rendered to IFIP. He was one of the Editors of Acta
Informatica and Information Processing Letters and the member
of Editorial Board of Theoretical Computer Science and some other
journals.
Ershov established contacts with colleagues and friends abroad;
he lectured in Universities of Europe, USA and Japan.
Since 1965 Ershov was the member of ACM, in 1975 he was appointed
Distinguished Fellow of the British Computer Society.
In the late years he significantly contributed into international
activities on teaching programming.
A.P.Ershov was an undisputable authority and astonished expert in
a large amount of soviet software projects designed
and developed under his influence. Being a careful and kind
teacher, Ershov paid much attention to training of programmers.
Since 1958 he was a teacher, firstly, of Moscow State University
and then a professor of Novosibirsk State University, where he
taught cources on various fields of computer science.
Ershov's accomplishments in scientific and educational
activities were widely recognized in the country. He has been
honored with several Orders of the USSR. In 1983 for his
contributions to the theoretical study of mixed computation he
was awarded the Academician Krylov Prize, the main award
presented by the USSR Academy of Sciences for fundamental
studies in applied mathematics. Ershov was the first
programmer who received this very prestigious prize. In 1985
for the works on methodology of large software system
construction he was honored the Prize of the USSR Council of
Ministers. This nominated Prize is awarded for outstanding
applied researches.
The scientific biography of A.P.Ershov is strongly determined
by the fact that he is one of the leading world-known
scientists whose activity allowed such research directions as
theoretical and system programming to be established. He left
the legacy of more than 200 books, papers, reprints, to say
nothing of a large number of prefaces, editorial papers,
reviews and comments as well as newspaper publications,
verses (which were really perfect) and so on. The size of this
book does not permit a complete review of all Ershov's papers
to be done, so we shall limit ourselves to the consideration
of the main ideas and fundamental publications.
A.P.Ershov was one of the first Soviet programmers to make a
key contribution to the computer science in our country, that
is why the formation and evolution of his scientific interests
to a large extent correspond to the formation and evolution of
programming in our country and abroad.
As most of the programmers of the fifties, A.P.Ershov was
beginning with construction of numerical algorithms and
subroutines. In the first paper [1]* the method of matrix
inversion has been suggested which is referred to the class of
completion methods. Due to compactness and convenient
recurrent correlations, this method has become a basis for
constructing subroutines for a number of early Soviet
computers (thus, the program for the BESM computer has been
written by Ershov).
The middle fifties were a period of formation of theoretical
and system programming. System programming was originated from
research direction called at the time an automatic programming
and devoted to design of programming languages and their
compilers. The works of Rutishauser and Lyapunov essentially
stimulated these researshes. The first Soviet programming
languages were based on ideas of operator schemes suggested by
A.A.Lyapunov. These schemes defined a program structure in
terms of operators belonging to some fixed classes with
further representation of the operators. A.P.Ershov headed
the project aimed at designing one of the first Soviet
programming programmes for the BESM and Strela computers
(integrated design of programming language and system was then
referred to as a programming programme). The results of this
work had been summarized in [5] which was the first monograph
on automatic programming in the world and it was immediately
translated into English and published abroad and also presented in
the papers [2], [3], [9] appeared in 1956-1958. In these works
A.P.Ershov for the first time suggested a number of notions,
approaches, and techniques that formed a classical basis for
programming languages and systems. They include the notion of
a loop as a fundamental language construction, a triad
internal representation of expressions, the usage of hash
function for searching coincident fragments (names), an
algorithm of optimal register allocation, the initial ideas of
data flow analysis, etc.
Ershov's further works on programming languages and compiling
techniques laid the foundation for this research direction.
Such well-known optimizing programming systems as ALPHA, ALPHA
-6 and BETA were constructed on the base of his ideas, and in
many respects they defined modern methodology of optimizing
compilation.
The design of the ALPHA system was begun with constructing a
language, which was inherent in traditions of programming
programme construction. This language was alienated from the
initial version of Algol, the so called Algol-58. The team
headed by A.P.Ershov carried out a project simultaneously with
the international group working on Algol-60. In many aspects
the results of these two groups turned out to be similar, so,
when the description of Algol-60 has appeared, a new language
designed by Ershov's team was referred to as an extension of
Algol-60 [7], [14]. This language preliminary called "Input"
or "Siberian" language, has become finally known under the
name of the ALPHA language.
In the ALPHA language a notion of multidimensional values has
been introduced and operations over the values, including
construction operations, have been defined for the first time.
All these notions are now standard and widely used in such
conventional programming languages as PL/1, Algol 68 and Ada.
The concepts which are now natural to any language, namely, a
variety of loops and definition of initial values by
expressions, were originally proposed in ALPHA. Enumerations
and upper (temporary) superscripts were interesting features
of the language, but further they, in essence, remained
unrepeated. Metafacilities of the ALPHA language description
are out of the limits of context-free grammar.
The ALPHA system was the fisrt in the world optimizing
programming system for the languages more complex than
Fortran. The Algol-60 system simultaneously developed by
Hawkins and Huxtable* in the UK, with functional capabilities
similar to those of the ALPHA system, has been never
implemented. It is worth noting, because at that time the very
possibility of constructing compilers for the languages more
complex than Fortran was contested by many specialists. The
ALPHA system turned out to be a constructive proof of this
possibility, which essentially removed barriers on
the way of designing new languages with more rich semantics.
The draft proposals of the ALPHA system have been published in
[8]. The general description of the system may be found in [17],
[21] (the reprint edition of [17] appeared earlier, in 1964).
The ALPHA system design and development greatly contributed to
the methodology of optimizing compilation. A multipass
optimization-oriented compilation scheme was proposed and
implemented, at the first time optimizing transformations of
intermediate program representation were used in practical
program optimization, and intermediate program representations
oriented to optimization algorithms were defined and
constructed.
Memory economy techniques proposed by Ershov and implemented
in the ALPHA system have formed a theoretical and practical
basis for the forthcoming researches. In [17] A.P. Ershov
introduced a concept of information flow graph for defining
such program transformation as global memory economy (complete
model is presented in [19]), the problem of memory economy was
reduced to the well-known problem of graph vertex coloring in
the paper [12], and the outlines of the heuristic algorithm of
near optimal graph coloring were formulated in a joint (with
G.I.Kozhukhin) paper [10].
Basic principles of a complete theory of memory economy have
been formulated in [30]. These results greatly influenced not
only the implementation of memory economy techniques but other
researches too, in particular, they provide a good example for
practical construction of program optimization models.
The further Ershov's works on optimizing compilation have
resulted in development of the well-known ALPHA-6 system [35]
which is used till now. Repeating many features of the ALPHA
system, ALPHA-6 has a more compressed scheme of compilation
(10 passes instead of 24). The concept of internal language of
program representation as a basis for optimizing
transformation algorithms is more precisely defined in the
compilation scheme. ALPHA-6 optimizing compilation scheme
allows one-language compilers with advanced program
optimization, including a global one, to be constructed.
In 1968 A.P.Ershov proposed an idea of extensible
machine-oriented programming language adaptable to different
object codes. This language, SIGMA, [23] was designed by
A.P.Ershov in common with A.F.Rar and others and implemented
on several Soviet computers by G.G.Stepanov [78]. The SIGMA
language provided facilities for formal description of object
language and computer architecture and included
free-structured macros. A compact set of basic macros defined
lists and words (machine words) consisting of syllables, which
allowed efficient data structures to be constructed. The
extension mechanism was also implemented by means of the
macros. The practical usage revealed that the language was
easily adopted to computers with different architecture,
including very specific ones. The fruitfulness of the idea of
a language with a dense and extensible kernel is proved by the
present-day popularity of Forth.
In 1971 A.P.Ershov published the papers [27], [28] which
initiated the BETA project. In the framework of the long-term
BETA project (summing-up publication [79] appeared in 1982)
methodological and experimental researches on fundamental
principles of programming languages and compiler construction
have been carried out. The very attempt of joint implementation
of a variety of programming languages required the essense of the
fundamentals to be revealed.
In the 70s the BETA project had mainly research and experimental
character, and in the first part of the 80s a multi-language
compiling system BETA was implemented.
The 70s were a period when modern methodology of compiler
construction arase, when a new generation of high level
languages, from PL/1 to Pascal, appeared and was introduced into
programming practice. C, Ada and Modula-2 were proposed later,
but in many aspects, concerning both language features and
implementation facilities, they followed the line of the
above-mentioned languages.
The BETA project was in the main stream of general researches and
had essential influence on the progress in this area. At that
time the problem of designing a standard compilation scheme
relevant to a wide spectrum of programming languages was very
urgent, and just that scheme was suggested and implemented in the
BETA system [38]. It is worth noting that the compilation scheme
which was developed on the base of experience gained in 1970s
turned out to be practically useful in 1980s: in the BETA system
Simula-67 and Pascal as well as Ada and Modula-2 were implemented
according to the common compilation scheme.
In the framework of the BETA project a concept of metaprocessors
[39] to automatic production of corresponding fragments of the
compilation scheme, which forms a basis of modern compiler
construction systems, was suggested and worked upon. But in the
final version of the system the metaprocessors were reduced to
the common library of compiling procedures, which proved to be
practically advantageous and theoretically promising approach to
automatic compiler construction. In a joint, with
V.V.Grushetskij, paper [52] an idea of abstract syntax proposed
by J.McCarthy was essentially extended, which allowed this approach
to be widely used in design and automatic construction of various
language processors.
An internal language plays the central role in the general
conception of the compilation scheme in the BETA system [36, 50].
The study of the BETA internal language formed a marked part of
the world-wide researches that introduced a concept of internal
language and internal representation of the program as
fundamental notions in the methodology of constructing a wide
variety of programming language processors: compilers, analyzers,
program transformation systems, etc. In the BETA system the
internal language plays three roles: it constitutes a semantic
basis for input languages, it supports optimizing tranaformations
at the internal language level and it provides source
representation to generate the object code for different
computers. The functional overloading of the internal language
resulted in the difficulties of its design and implementation.
The original concept of the internal language as a minimal set of
orthogonal notions was interesting from theoretical and
methodological viewpoints, but in practice this approach turned
out to be improper. The final version of the internal language as
a union of abstractions of input language notions and
constructions including incompletely interpreted constructs
depended on a particular input language was designed according to
Ershov's ideas proposed in [26]. The analysis of a large number
of input languages, their generalization and abstraction were
essential procedures which significantly contributed to the
comprehension of intensional semantics of existing
programming languages.
Based on ideas and concepts suggested by A.P.Ershov, the BETA
internal language proved to be appropriate for practical
implementation of data flow analysis algorithms and optimizing
transformations [38], [79]. Machine-orientation of the language
provided practical efficiency of code generation from this
language to such considerably different computers as BESM-6 and
SM family.
Analyzing general notions of programming languages and realizing
some limitations of the concepts, A.P.Ershov came to fundamental
and promising idea of a programming lexicon as a common
environment to program design and validation [97]. The lexicon is
defined as "a phase-structured linguistic system comprising a
formal notation to represent all generally meaningful constructs
used both in problem formulation and program synthesis and
transformation."
According to Ershov, lexicon "expresses program properties and
assertions rather than the programs themselves." A programming
language codes the objects belonging to the subject domain of the
problem, whereas our knowledge about the objects remains outside
the program text. But the lexicon is a means to describe the
objects belonging to subject domains and it includes a notation
to construct knowledge bases for these domains. A program
expressed by means of the lexicon comprises, in a sense, the
description of its semantics as the set of non-trivial facts
about the function being computed unlike a "pure" program that
does not provide any information about its functional properties.
The lexicon, in contrast to a particular programming language,
is an open system. On the whole, the goal of translating each
text presented in the lexicon into a machine program is not
set, but, if necessary, any machine program may be expressed
in the lexicon. By analogy with a natural language, the
lexicon has a possibility to describe its one part in terms of
its other part.
It is not worth considering the lexicon as something given
once and forever. This is just carefully chosen and evolving
system of good designations. The more meaningful and
comprehensive notation the lexicon has, the more successful it
is. The successful application of the lexicon strictly depends
on meaningfulness and comprehension of its notation."
We suppose the programming lexicon to be one of the main ideas
proposed by A.P.Ershov and a potential source to provide
scientific and methodological basis for the future programming.
A.P.Ershov's works on automatic programming are conceptually
related to his researches on the theory of programming. The
paper [4] on operator algorithms, where he proposed a model of
program later known as a standard program schemata, was the
first one in this field. A concept of operator algorithm was
based on the concept of logical program schemata suggested by
A.A.Lyapunov and aimed at constructing an exact model to
describe properties of real-world programs.
In the following papers [6,11] A.P.Ershov has more exactly
defined the notion of operator algorithm and its relation to
actual programs described by the logical schematas, and
investigated the correlations between the operator algorithm
and such well-known concepts as partially recursive functions
and Markov normal algorithms. In these papers the problems of
defining optimizing transformations on a program model, and
constructing the model of the actual program were posed. The
modern theory of program schemata is to a large extent based
on early Ershov's works.
The first program model in the framework of modern theory of
program schemata, the so called Yanov schemes, was proposed by
Yu.I.Yanov in 1958*. In [20] A.P.Ershov reformulated Yanov's
results in the form that was currently used in the theory of
programming. Graph-theoretical representation earlier proposed
in Ershov's papers on operator algorithms allowed more strict
formalization to be introduced and axiomatic of Yanov schemes
to be refined. It is the axiomatic on which further researches
on Yanov schemes are based, in so far as this simplification
allows more profound properties of Yanov schemes
transformations to be investigated.
In the paper [21] A.P.Ershov introduced a concept of
information graph and a concept of schemes over distributed
memory (the former in the same form is used in the theory of
program schemata and in program optimization).
These notions turned out to be very important both for the
theory and such applications as memory economy and program
parallelization. The problems of mutual transformations of the
schemes over general and distributed memory were also
considered in [21]. The general theory of memory allocation
was brought to perfection in [30].
The monograph [51] seemed to be extremely interesting and
valuable from the methodological point of view. It summarized
the theoretical and applied results obtained by A.P.Ershov and
his disciples in the theory of Yanov schemes and memory
economization problem. The overall significance of the work is
hardly possible to overestimate: in this book a correlation
between the theory and practice of programming is established,
it is clearly shown how theoretical models arise in response
to practical needs and how, in turn, the study of these models
provides results necessary in practice. As a matter of fact,
there are very few such monographs in the world programming
literature, and Ershov's book, stimulating a cooperation
between theoreticians and practising programmers, is
especially useful for both. The character of A.P.Ershov as a
scientist in whose activity a theory, methodology and practice
of programming were always combined, is evidently revealed in
the book.
The joint paper [17] by A.P.Ershov and A.A.Lyapunov devoted to
the formalization of the concept of a program had a
significant influence on development of the theory of program
schemata. All the results obtained till that time were brought
together and compared. It is essential that the works on
parallel program schemata carried out in Novosibirsk under the
leadership of A.P.Ershov were also considered in the paper.
Theoretical results were considered with respect to such
practical applications as automation of programming and
program optimisation. The formulation of a number of new
problems related with a development of both the theory of
programming and the applications played an important role in
further researches.
In the beginning of the 70's Ershov's paper on the theory of
program schemata [29] was of no less importance. In comparison
with [17], this overview considered new papers and tried to
understand new problems arisen at the last time. Besides, it
is worth noting two aspects. The first aspect consists in
meaningful representation of requirements to the algebra of
programming as a universal notation allowing manipulation with
processes and algorithms. The second one shows the
interrelations between internal language and theoretical
models of programs. The paper [28] was the invited paper
presented to the IFIP Congress in Lyublyana and then it was
republished in the collection of the best papers of 1971.
All the papers of 1967-73 had essential stimulating influence
on the development of theoretical programming. The main
problems of the theory of program schemata have been outlined,
different trends and models have been compared, a common set
of notions and terms has been formulated, and various theories
and results of their applications have been collected
together; in other words, the foundation of the theory of
program schemata as an integral research direction in
theoretical computer science has been laid in these works.
While the theory of program schemata dealt with a program,
i.e. an object to be investigated and modelled, in further
researches on the theory of programming A.P.Ershov made the
next step, initiating an investigation of the process of work
on a program. A concept of mixed computation as a basic
principle of systems programming that defined, in either
aspect, an operation of processors to handle programs was
formulated in the paper [53] and then in [54], [56], [69], and
[70].
Mixed computation is a universal process defined over pairs
(program, data) and leading in general to obtaining a residual
program and partial result. Mathematical image of mixed
computation is a functional that given the values of some
arguments builds for a certain class of functions with several
arguments functions with lesser number of arguments. A process
of mixed computation may in turn be given in the form of a
program (partial evaluator). This fact allows a question
concerning self-applicability of mixed computation to be
raised and the partial evaluator itself to be likened to
Kleene's s-m-n function.
The notion of mixed computation (and partial evaluation) in
connection with program processors, whose data are programs
and their attributes, makes it possible to investigate and
uniformly define different kinds of program processing - from
compilation and interpretation to program analysis, program
transformation and generation of language processors
themselves. In the series of the works A.P.Ershov
methodologically studied this conceptual aspect of mixed
computation.
It was the definition of mixed computation principle as a
general basis for many different program processors that
distinguished Ershov's work from the previous works and
insights of Lombardi, Futamura, Turchin and others, and it was
the reason why Ershov's works became the basis for a new and
rapidly developing branch of programming connected with
theoretical investigation and practical applications of this
principle. From the methodological point of view mixed
computation by itself proved to be extremely helpful in
understanding and treating various notions and entities of
programming.
The notion of mixed computation introduced by Ershov as a
general model for different kinds of program processing
required both the properties of the model itself and its
interpretation in various application domains to be widely
investigated. Just this width is inherent in the papers [65],
[68], [90], [99], [102], [104] which are written by either
Ershov himself or together with his disciples - Itkin,
Ostrovsky, Sabelfeld, Bulyonkov.
The concept of correctness of mixed computation was also
introduced and there were defined the models of mixed
computation and of residual program generation whose
correctness could be proved. The main attention was focused on
transformational model, for which mixed computation was
defined by a set of basic transformations. The model of mixed
computation and its correctness were considered both for
imperative languages and recursive programs. A number of
important results were obtained in describing the mechanism of
computation and data suspension, in defining the mixed
computation process for different program representation
languages, in formulating the set of basic transformations, in
providing mixed computation safety (termination), etc.
In practical usage mixed computation should satisfy not only
the necessary requirements of correctness and safety, but also
those of flexibility and profundity. And here too Ershov and
his disciples succeeded well in their studies. Flexibility of
mixed computation can be noticeably increased if in the
process of obtaining the residual program partial evaluator
takes into account not only the property of data to have
specific values but more subtle properties determined by the
known relations between data (predicates over data). In this
case partial evaluator operates with some environment defined
over data. Profundity of mixed computation is determined by
the scheme of the latter. Along with the strict scheme of
mixed computation introduced at first, there was defined a
polyvariant scheme where mixed computation is propagated into
alternatives even if the choice between them cannot be
defined.
Together with B.Ostrovsky A.P.Ershov investigated the
apllication of mixed computation to such an important area as
compilation, namely, parser generation for a given definition
of a source language. The obtained results demonstrated
practical applicability of mixed computation principle (the
authors succeeded in constructing parsers nearly as efficient
as ad-hoc ones). These and subsequent investigations revealed
some facts and observations important to juxtaposition of
methods of compilation and showing methodological significance
of mixed computation principle.
Thus, in the field of mixed computation Ershov not only
postulated the basic concepts and models but also made a
decisive contribution to the theory and methodology of mixed
computation. He is by right reputed the founder and the leader
in the field actively developing now in numerous scientific
groups in many countries.
On the base of transformational model of mixed computation and
his works on the theory of compilation and program
optimization, A.P.Ershov introduces the concept of a
transformational machine in [74]. The transformational machine
is an abstract computer executing programs in some
"superlanguage", its commands being transformations of pairs
(program, data). These commands preserve some invariant which
guarantees correctness of transformations. The concept of
transformational machine seems to be very promising both as a
theoretical model for program processors definition and
validation and as a methodological basis for constructing
various program tools.
The concept of transformational machine is a substantial
contribution to the transformational approach to program
construction which was popularized by Ershov with great
enthusiasm, and whose different aspects he investigated in a
series of his works in the 80's. The transformational approach
is now developed by a number of research groups in the USSR
and abroad and it seems to be highly promising, since it
allows very secure and efficient programs to be obtained and
an extent of reusability of software to be raised. Ershov's
works on transformational approach [66], [74] give a natural
growing point for further investigation.
It should be noted that along with the works on languages and
methods of compilation, the works on mixed computation and
transformational approach were the source of the
above-mentioned Ershov's idea of the lexicon of programming.
The papers [73] and [76] devoted to the computability problems
seem to be the last Ershov's contribution into the theory of
programming. Ershov himself considered these works as an
attempt to bring together different approaches to
computability which were formed in mathematical logic and in
the theory of programming. Since the concept of computability
plays an important role in both fields of research and has a
large significance in the set of programming concepts, its
definition abstracted from inessential syntactical or model
notions and, at the same time, absorbing entities necessary
both for the theory and numerous applications is evidently one
of the main problems affecting further interdependency betweem
mathematics and computer science. A large number of
definitions of computability has been deeply analyzed and
compared, and the contributions to the general theory has been
estimated in the fundamental paper [76]. On the basis of this
analysis Ershov found an idea for the definition of
computability: to reduce the definition of a computable
function to the notion of determinant being invariant with
respect to different ways of computation specification. These
results will apperently have the same stimulating influence on
this research area as in the early 70's Ershov's works had in
the theory of program schemata.
Ershov's ability to estimate currrent state of both the
science and practice and to find real growing points and
research prospects that will define further evolution of
programming should be considered as great services to national
and international computer science. Thus, in the middle 60's
he pioneered in recognizing new possibilities of
human-computer interaction provided by time-sharing systems.
In 1966 Ershov initiated design and development of automated
inrormation stations (the AIST project). In the framework of
this project a wide variety of researches on computer system
architecture, software and simulation has been carried out and
the first Soviet time-sharing system AIST-0 has been
developed.
In the paper [19] given at AFIPS 1967 FJCC a plan of this
system was outlined, and at the 2nd All-Union Programming
Conference in 1970 a summary of the project was presented.
AIST-0 was implemented on home-made multiple computer system,
and, having essentially pioneer character, it greatly
contributed to the development of such research directions in
the USSR, as computer architecture and operating systems.
Unfortunately, an orientation to copying foreign computers
later on resulted in slowing-down of these researches.
Separate implementation of control and processing facilities
within the single processor, hierarchical structure of
software, isolation of the kernel of the operating system,
natural combination of different interaction and processing
modes provided high efficiency and flexibility of the AIST-0
system.
Summarizing the lessons of AIST and several similar projects
both in our country and abroad in the paper presented at the
IFIP 68 Congress [24], Ershov formulated several vital theses:
on specialization of processors in multiprocessor time-sharing
system, on general- and special-purpose time-sharing systems
and their applicability, on difference between time-sharing
system interaction requirements set by professional and
non-professional programmers and on the aspect of these
systems later known as "user-friendliness".
The experience gained when supervising such large projects as
ALPHA and AIST allowed A.P.Ershov to recognize clearly the
general problems of software development. In 1973 the paper
[26] that essentially influenced further evolution of this
research direction appeared in the Soviet journal Kibernetika.
The paper presented a deep and thorough analysis of the
external properties of the forth generation computers and the
variety of programming systems, namely, operating systems,
compilers and their input languages, special-purpose
information processing systems, including application
packages, whose classification, proposed in the paper,
remained valid till now. A number of specific information
processing systems was pointed out and their internal and
external properties were defined. A general model of operating
system, the so called basic operating system with layered
structure, was proposed.
The general character of the problems in programming language
implementation and construction of interactive language
processors and visualization systems was stressed in the paper, and
although this generality did not result, in contrast with the
author's supposition, in creating universal systems, it
stimulated works on searching for a general methodology of
constructing such the systems. Nevertheless, a one
universality-bounded multilanguage compiling system was
created on the base of this generality: it was the BETA system
described above.
The consideration of technological aspects of software
development was another essential feature of the paper.
A.P.Ershov was one of the first Soviet computer scientists who
gave rise to the problem of developing a discipline of
software engineering. It should be noted that in the end of
the sixties Ershov's attempts to draw an analogy between
software development and industrial production, to put a
discipline, an order and instrumentation into programming that
was considered by many old-days programmers as essentially
unregulated and creative process were met with active
resistance and even sharp protest. In heated discussions he
had to advocate assertions seemed to be trivial now.
As early as in the sixties Ershov persisted in the opinion
that, in spite of intellectual and creative character of
programming, this process required organization and
reglamentation, it needed a set or a system of agreements and
rules to be set up and, moreover, instrumental support to be
provided. Heading and actively participating in large
programming projects, Ershov, with his inquisitive mind, could
not help posing the question "How is it being done?" In the
papers on the ALPHA and AIST systems A.P.Ershov has already
proposed a number of organizational principles and agreements.
The paper [33] was the first Ershov's work completely devoted
to software engineering. This was the first Soviet paper on a
new research direction and the Russian translation of the
English term "software engineering" was also suggested by
Ershov himself.
The main part of the paper [33] was concentrated on the
technology of compilation proper. The general aspects of
compiler construction: a structure of compilers, supporting
facilities, a choice of implementation techniques,
organization of debugging and documentation - all these
questions were studied in the paper. Problems of automatic
compiler construction and computer-aided documemtation were
also discussed. The consideration of the problems of compiler
technology within the general framework of the technology of
large software system construction was an important feature of
the paper. Practically complete survey of the works on
software engineering and related problems together with their
deep analysis was suggested. All this made the paper
fundamental for the forthcoming Soviet researches in this
direction.
In a number of other papers A.P.Ershov investigated and
developed software engineering problems. He proposed a matrix-
like organization of a team of programmers [34] and new
specification of the stages of software development with
special attention on compiler construction and succeeded in
analyzing technological aspects of the ALPHA-6 project [38].
In the paper [61] written together with G.D.Chinin, the
structure of programmers'team involved in production compiler
construction was defined, the solution of the important
problem of continuity and reusability of software was
suggested, and the structure and informational support of the
design process were considered. Being oriented to the
technology of compilation, the paper provides also a number of
interesting ideas concerning industrial development of other
kinds of software.
From the methodological point of view, the report [86]
presented at the meeting of Presidium of the USSR Academy of
Sciences significantly contributed to the development of
sofware engineering and formation of its conceptual basis.
This report seemed to be not less important for the
programming community than to the members of Presidium whom it
was delivered to.
In computer science the attempts to turn a programming process
into a provable one with program correctness being guaranteed
or controlled at each step of program construction, have been
undertaken for a long time. Being rather successful, these
attempts could be invaluable in real-life programming
technologies that necessarily required a reliability (a high
level of correctness) of the program. Thus, for instance,
Dijkstra's approach based on an ideal tendency to construct a
program as an explicit inference from a mathematical statement
of a problem is widely known. In spite of the ideal character
and hard discipline being imposed on, this approach forms an
ideological basis for a number of modern technologies which,
in fact, is not always completely reached. But Ershov's
approach is strictly connected with practical experience
of programming and consists in extraction of the discipline from
the practice rather than in its dictation. This approach seems to
be more efficient as well as more broad.
A.P.Ershov defines and analyzes three styles of provable
programming: synthesizing, assembling and concretizing ones.
Synthesizing programming (including, in particular, the
approach based on Dijkstra's ideas) is related to automatic,
automatizable or manual manipulation with knowledge about a
problem, application domain and mathematical ways of provable
reasoning. In assembling programming a program is constructed
from already existing and validated fragments. Concretizing
programming is based on systematic construction of specialized
programs from universal "scaffold" (mixed computation is a
kind of such programming). Ershov, on the one hand, considers
special features of each style and marks the differences which
should be expressed in different supporting methods and tools
and, on the other hand, he stresses that in the process of
constructing real software these styles may and often must be
combined. This provides an advanced methodological basis for
future programming technologies.
The work on provable programming, having a large significance
for software engineering, at the same time is closely related
with such Ershov's works on general aspects of prpgramming as
the paper [26] already mentioned above. In the 70's-80's these
Ershov's papers clearly analyzed and estimated current
situation in our country and abroad, formulated the problems
and proposed possible ways of the solution. The names of the
papers - "Multi-access computing center" [45], "A programming
system for micro- and mini-computers" [59], "Some subjective
remarks on actual problems of programming" [64], "Integrated
software development: a formulation of the problem" [81],
"Personal computer - an ancestor of mammals in the dinosaur
world of multi-access computer center" [82], "An experiement
of integral approach to the urgent problems of software" [89]
- are very meaningful by themselves. Oriented to professional
programmers, but easily understood by non-professionals,
clearly written, well-structured and founded, these works
greatly influenced readers allowing the current situation to
be comprehended, reappraisal of values to be made and new
ideas and research directions to be formulated.
The experience gained in designing architecture and software
for large information processing systems was summarized in
[45]; the presentation was based on ideas of the ES computer
family prevailed at that time. In [59] a new phenomenon,
namely, emergence of mini- and micro-computers was considered
from the viewpoint of the prospective usage, the unlimited
capabilities of new computing means were forecasted and new
features specific for microcomputer software, i.e., integrated
approach to joint design of hardware and software,
specialization of software, orientation to non-professional
users were outlined. An extreme importance of portability and
compatibility of micro-computer software was also stressed and
possible solutions of the problems were proposed in the paper.
A.P.Ershov was especially right when in [64] he did not agree
with the thesis on the stabilization of the situation in
programming which had been suggested by somebody else, and
defined the points of active growth: new ideas in the
programming languages, crystallization and formulation of the
fundamental concepts of compilation, transition from data
bases to knowledge bases (the latters were called "complex
data bases" in the paper), design of supporting tools (later
on, in Ada terms, referred to as programming environments). It
should be noted that Ershov's prognosis proved to be
completely correct. In the same paper a state-of-the-art in
the theory of programming has been evaluated and the
correlation with a practice has been established, which is
essential to define future ways of theoretical computer
science development. The problems of teaching programming and
training of personnel were also discussed, but we shall turn
to these questions below.
The above-mentioned papers had significant influence on
evolution of programming, but now they have mainly historical
interest, whereas the papers [81], [82], [89], [91], [100]
remain actual. Rich contents and lapidary style of the papers
make it hardly possible to retell the main ideas and concepts:
it would certainly require much more time and space.
Integrating kernel of these works is the necessity to develop
an advanced infosphere of future informatizated society. A
structure and specification of hardware that should be
constructed in the USSR are estimated, main characteristics of
the software are defined, and a wide spectrum of scientific
problems crucial for design of the infosphere is outlined in
the papers. The special features of computing means -
microprocessors and personal computers (just personal
computers rather than multi-access computing centers) -
favoured the development of the infosphere are marked. The
asserted thesis: "Personal computer is not just a little large
computer, but a technical phenomenon requiring a free and
uninfluenced and, at the same time, a global approach to
development of methods and techniques to work with it" is
undoubtly of a great importance.
It should be noted that the progress of programming requires
not only new ideas, but also deep comprehension of both
accumulated knowledge and process of programming evolution as
well as division into periods firstly corresponding to
computer generation change. The paper [89] has touched upon
these questions, and in addition, the history of formation and
evolution of computer science in the USSR has been considered
in [44], [47], [48], [71], [75] (some papers have been written
together with M.R.Shura-Bura).
The formation of a new branch of science needs its position
among the other scientific disciplines to be defined. This is
especially true for programming that in relatively short time
became one of the most wide-spread intellectual professions.
A.P.Ershov has performed great services for the computer
science both in our country and in the world because in his
papers he has revealed and explained a number of essential
features inherent in programming as a science and human
activity. Ershov's thoughts on this theme can be found
eslewhere, but there exist several well-known papers, over and
over translated and published, which are completely devoted
to, so to say, "professionological" rather than to scientific
or technological aspects of programming: what is a programming
as a science and human activity, who is a programmer as a
specialist in a particular intellectual work. "Aestetics and
the human factors in programming" [31], "Programming, the
second literacy" [71], "Two faces of programming" [77] should
be referred to such papers also republished in this volume.
In the paper [31] dedicated to early departed talented
programmer G.I.Kozhukhin, a constructive analysis of
contradictions between the creative nature of programming
labour and its industrial organisation being inevitable in any
mass profession has been made. The main thesis of the paper is
as follows: "Programming embodies rich, deep and novel
aestetic principles on which the inner relationship of a
programmer to his profession is based, those principles which
give him both intellectual and vivid emotional satisfaction.
This aestetic has roots in the creative nature of programming,
in the difficulties which programming overcomes, and in the
social significance of programming." There are many profound
ideas and remarks commenting this thesis in the paper. The
author considers programmers to be an intellectual elite and,
at the same time, stresses the necessity to make the art of
programming a public property.
Further development of this idea is presented in [71]. The
title of this paper that has become a popular metaphor and
used everywhere, including the highest tribunes, without any
reference to the author, stresses the historical analogy
between the literacy which is a common property in the modern
society, and ability of programming (in a wide sense) which
any member of computerized society should possess of. Ershov
remarks that a programming is necessary for a contemporary man
not only because that in the nearest future computers will
spread in all directions of our life, but because everyday
planning and foreseeing are now necessary. He says: "The
second literacy is not only the ability to write computer
instructions, but also the way to bring up a man who is
resolute and prudent at the same time." In conclusion
A.P.Ershov considers programming to be an essential component
of modern learning and teaching.
In [77] A.P.Ershov proposed precise formulation of intuitive
supposition that programming should not be considered in a
uniform way. Two kinds of programming processes were
distinguished: a programming for himself and programming for a
customer, and in details described essential differences
between those two kinds, or faces of programming. He proposed
two terms: "a programmer-slave" and "a programmer-boss",
respectively, and outlined profound differences in the styles,
manners and criterions. Such constructive differentiation of
programming is extremely important when designing real-life
software technologies as well as when considering more general
problems being expressed in ethics and aesthetics of
programming. The pure scientific aspects of the paper were
devoted to the model of programming environment for the
programmer-boss on the base of the transformational machine.
These Ershov's papers, perfectly written and clearly
manifested his intellectual power, intrinsic convinction and
active attitude to life, were becoming outstanding events for
programmers community. It is worth noting the influence
exerted by these papers on ethics of programming, since the
ethical problems of this kind of human activity, in the light
of public and state significance of programming products now
and in the future, seem to be very important.
A.P.Ershov has touched upon the problems of teaching
programming in several above-mentioned papers, but at the
first time he proposed a comprehensive program of computer
education in the short paper [46] presented to International
Conference on Reliable Software in 1975. In this paper he
outlined a curriculum of high-school training of systems
programmers that included fundamental grounding, profound
study of professional disciplines and participation in
real-life programming projects. In above-cited paper [64] a
course in foundations of programming is considered as a heart
of systems programmer education. This course proposes a
successive presentation of conceptual, mathematical,
linguistic, technological and organizational foundations of
programming, which seems to be the best thought-out structure
of such the course. It should be noted that these ideas were
immediately related with the practical activities of
A.P.Ershov: he was a professor of Novosibirsk State
University, an organizer and first lecturer of the general
course of programming at the Faculty of Mathematics and
Mechanics of the university.
Later on A.P.Ershov turned his attenion to teaching
programming and, in more broad terms, informatics in secondary
schools. In the last ten years, having realized the principal
importance of computer education in our country and worldwide,
Ershov devoted much energy and that was called an ardour of a
heart to this problem. He was one of the founders of the so
called school informatics, an undisputed leader in Soviet
school informatics and one of the chief specialists in this
domain throughout the world.
In the paper [67] written together with G.A.Zvenigorodskij and
Yu.A.Pervin he established the ways of development of the
school informatics till the present time. Ershov was one of
the authors and editors of the first Soviet school course in
informatics aa well as teacher's guide [93], [96], [101], 103]. He
also participated in preparing a new school course in
informatics [107] appeared not long before his death.
Ershov developed the TV-course in programming for pupils, he
led the design and development of educational programming
systems as well as school-oriented software as a whole, acted
as an organizer and expert and so on. Here his active attitude
to life and high sense of civic responsibility were again
revealed. Overcoming obstacles and difficulties that often were
small-minded and exhausting, acting as a popularizer, educator
and organizer, playing unexpected but necessary parts, Ershov
devoted a lot of time and efforts to formation of school
informatics.
It should be noted that scientific solutions proposed in
Ershov's papers on school informatics [83], [95], [98], [106]
were rigorously substantiated and related with the deeply
comprehended essence of computer science. In [95], [98] Ershov
proposed the structure of the course in informatics on the
base of the following principles: separation and combination
of "theoretical" and "operational" skills; anthropocentric
approach (pupil's identification of himself with an executor
of algorithms); appeal to day-to-day experience, etc. He
stressed the importance of separate comprehension of the
notion of algorithm and existence of the notation system to
represent algorithms (algorithmic language) and proposed the
scheme of algorithmization and solution of problems that
seemed to be appropriate to initial training.
In the last paper [108] published in his lifetime Ershov
thoroughly analyzed the problems of computer-aided learning
and of teaching informatics in secondary schools and, that was
very important, he considered the problems of school
informatics in the wide context of computerization of the
society and related them with the general problems of
mathematical education. Shortly before his death Ershov
prepared a draft version of the concept of computerization of
education in the USSR that could be expected to become
available to a reader. In the last years of his life Ershov
devoted much efforts to publication of school encyclopeadia of
computer science.
Ershov's works on man-machine communication in natural
language are remarkable contributions into solution of the
problem. In [13] for the first time in the Soviet and, may be,
international literature Ershov made attempts to strictly
formulate a number of problems of natural language interface
with computer. His thoughts on this matter, together with
researches carried out by linguist I.A.Mel'chuk and systems
programmer A.S.Narin'yani, have led to the initiation of the
RITA project [42]. It has been never implemented in
full-scale, but a number of essential ideas of the RITA
project may be found in linguistic processors and AI systems
realized later: separation of intermediate level in semantic
representation, lingware and software correlations in
interactive systems, existence of components to interface with
other (classic) programming systems, plurality of the values
of interpretive functions (the latter was generalized by
A.S.Narin'yani in the notion of subdefinite sets) and so on.
Later on Ershov tried to give a more constructive character to
the problem of natural language communication by
differentiating a very important subset of a language of
"technical prose" from the natural language. In [63] he
generally defined the technical prose as a linguistic carrier
of human relations of production and noted that, in fact, it
should be separated in a special linguistic category. A number
of characteristics of the technical prose, namely, its
inherent formalization and clearness of communicative
functions, shows not only actual necessity but possibility to
learn a computer to completely (Ershov stresses this word)
comprehend and perceive the language of the technical prose.
Further he considered essential features of the global model
of complete language comprehension with respect to the
technical prose.
In these studies and thoughts Ershov has gone beyond the
limits of the proper computer science and formulated a
fundamental problem of constructing a machine fund of Russian
language. Noting its correlation with the solution of the
problem of man-machine communicaation in a natural language,
Ershov stressed very large scientific, cultural and applied
significance of the fund. In the papers [94] and [104] he
came back to the problem when it had been recognized and
comprehended by linguists, and refined its formulation. It is
interesting to note that Ershov's pioneering role in
the statement of the problem has been superficially stressed
by the fact that the citations from the paper [63] are used as
elements of the cover design of the collection of papers
[104] on the machine fund of Russian language printed in Nauka
Publishing House in 1986.
This is one of examples of the key role of Ershov's wokrs in
new areas of computer science and applications; some were
given above, and the list may be continued.
One of the first approaches to intellectual system construction
was proposed in the paper [15] written in joint with Academician
G.I.Marchuk and presented to IFIP Congress in 1965. The
joint (with V.P.Il'yin) paper [60] has essentially contributed
into formation of problems of applied packages of programs
in the USSR. Development of office automation as a new research
direction was greatly influenced by the papers [85] and [87].
But Ershov's creative legacy is not limited by the books,
reprints and papers in professional journals considered in the
present volume. His papers in popular magazines and newspapers
oriented to a wide audience as well as editor's prefaces to
numerous monographs and collections of papers on programming
were perfectly written, precisely formulated and excellently
styled; they contain a plenty of valuable ideas, assertions
and estimations almost equally interesting to professionals,
to casual computer users and to people being rather far from
computer science.
A.P.Ershov initiated and was at the head of a number of
another projects not considered above. The high level language
SETL programming system, the professional workstation MRAMOR
and school-oriented programming system SHKOL'NITCA should be
mentioned among them. Ershov did not take formal part in the
projects, and his name was absent in the publication titles,
but his ideas and discussions had stimulated influence on
these works.
Ershov did independent researches and received important
results in many different scientific areas. In principle, such
diversity is characteristic of many programmers of the fifties
and early sixties: it is possible to mention Soviet and
foreign programmers who have interesting results in three-four
different research areas. This is natural for the scientists
standing at the origins of a new science and, unfortunately,
impossible for those who enter the well-established science
with a wide spectrum of researches. But even among the first
programmers A.P.Ershov is exceptional in truly Lomonosov's
breadth of interests and results.
The goal of this paper is not only to provide a survey of
Ershov's works but to trace their evolution and to show the
interrelations between them. It has been done in the text, but
in order to pay a special attention to this aspect, a
dependency graph of Ershov's papers is given at Fig.1, where
arcs denote influence of the works (the papers devoted to
general problems of computer science have certainly arisen
under the influence of practically all the papers and, in
turn, have influenced all of them).
Academician A.P.Ershov, an outstanding computer scientist,
has greatly contributed to formation of informatics throughout the
world and in many respects defined the current state of the
art. He left the legacy that included approaches and methods
to form essential part of the theory, methodology and modern
practice of programming together with ideas and concepts to
provide a basis for future investigations. And just the
latter needs to be continued and evoled. They are: the
concept of mixed computation, the notion of abstract
computability, transformational approach, the formulation of
scientific grounds of provable programming and, at last, an
embedding idea of the lexicon of programming as a source of
researches on constructing a future image of programming.
Time and space limitations allowed only brief overview of
Ershov's ideas and results to be presented; the
works theirselves should be read and used.
I.V.Pottosin
Ershov's Institute of Informatics Systems
|