PP-1(ID:2804/pip002)

Russian automatic programming system 


Actually two Cyrillic letter PIs

Russian automatic programming system, short for Programmirunischye Programmy = Programming Program. First (experimental) version developed by Lubmiskii and Kamynin for the STRELA computer in 1954


Related languages
PP-1 => PP-2   Evolution of
PP-1 => PP-BESM   Enhancement of
PP-1 => PP-S   Evolution of

References:
  • Ershov, Andrei - online archive of various documents by Ershov to do with ÏÏ from 1953 to 1956 view details External link: Online copy at the Ershov archive
  • Ershov, A. P., "The work of the Computing Centre of the Academy of Sciences of the USSR in the field of automatic programming pp257-278 view details Extract: PP and PP-2
    The First Programming Programs
    The first project of the programming program (PP-2), which fully automatizes the transition from the logical scheme to the object program, was described by E. Z. Ljubimsky and S. S. Kamynin In Prof. Ljapunov's seminar in October 1954 (ref. 3).
    Source information for this PP consists of the logical scheme of the program and the table of the storage allocation. The logical scheme may include arithmetical and logical operators, re-addressing and restoring operators and so-called non-standard operators, which represent some parts of the object program written in computer instructions with symbolic addresses.
    In February 1955 a group of the Mathematical Institute staff-workers constructed a working PP for the STRELA computer on the basis of this project. This PP was described in a series of articles (ref. 4).
    In December 1954 a project for another PP was carried out. Some versions of the PP were developed on the basis of this project; the final one was constructed In March 1956. This PP is described in my book (ref. 5).
    I want to point out the main differences between the PP for BESM and the PP-2 for STRELA.
    (a) In the PP for BESM the hierarchy of arithmetical operations when programming arithmetical formulae is taken into consideration.
    (b) In PP for BESM the logical operators used are of a different type from those In the PP-2.
    (c) There are no re-addressing or restoring operators in the source information for the PP for BESM, but some special notations are provided for specifying cyclic repetition of some groups of operators.
    (d) In the PP for BESM the storage is allocated automatically.
    The first public communications about the first programming programs were made by the authors in their reports on the All-Union Conference "The course of development of Soviet mathematical computing machinery" held in Moscow on the 12-17th of March, 1956.
    Extract: PP-1
    . Preliminary Researches
    THE real beginning of automatic programming development in the Computing Centre (as In the rest of the Soviet Union) was in the year 1954. In that year the first ?preliminary works appeared which contained the main ideas and their realization which I shall discuss first.
    The main necessity, which arose In programming from the very beginning was the separation of the programming process into two main stages. In the first stage the programmer wrote a detailed computing plan for solving the problem. In the second stage the direct programming (coding in your terminology) was carried out. in which the detailed computing plan was rewritten in the computer's language.
    Thus, in the course of programming, the necessity of constructing an intermediate language arose. This language 1s the language, by means of which the results of the first stage of programming (the detailed computing plan of problem solving) are written down.
    In the beginning, in: the Soviet Union as In other countries such an intermediate language was the flow-charts language, which was used by John von Neumann and Goldstine.
    But in the years 1952-53 Prof. A. A. Ljapunov developed a new programming method, which was first described in his lectures at the Moscow University (ref. I). This method which had a great influence on the development of programming in the USSR, 1s now well known and called the operator programming method.
    The main conception of the operator method is the consideration of the program as a complex operator which acts on the initial data and consists of elementary operators of various types. The main types of elementary operators, acting on the initial data, are mathematical operators which fulfil the direct transformation of the data, and LogzcaL operators which determine the next direction of computation.
    The conception of the dependence of the operator on some integer parameter (for instance the dependence of the address of the indexed number on the values of these indexes) was also very important.
    Besides this, control operators were considered. These operators do not act on the initial data but deal with the program itself. I shall mention first the re-addressing operators which change the addresses which depend on parameters when the values of the parameters change.
    The restoration operator restores the operator which depends on the parameter to its initial value according to the initial value of the parameter.
    The record of the detailed computing plan written as the sequence of operators of various types is called the operator scheme of the program (or the logical scheme of the program).
    This conception was first briefly described by Kitov (ref. 21, p. 193.
    Ljapunov's operator method was very important for the development of automatic programming for four main reasons:
    1. The components of the program (elementary operators) were formally classified for the first time according to their function, independent of the type of problem programmed. This made it easier to formalize a language of logical schemes as a universal language for writing problems.
    2. The language of logical schemes of programs was easy to algebraize. This was very important for the direct input of the logical scheme of the program into the computer.
    3. The logical scheme of a program as an intermediate result of the programmer's work, successfully divides up the programming process. The intellectual work of the programmer is in composing the logical scheme while the most laborious arid mechanical work is in the transition from the logical scheme to the object program. Thus the stage of the programming process, which is easiest to automatize, was separated.
    4.  The partition of the whole problem into a sequence of separate operators permits the programmer to divide his programming process in the same way. This also makes the coding easier.
    Also in 1953, Prof. Ljapunov proposed that some parts of the second stage of programming could be automatized.
    The first work in the field of automatic programming in the Soviet Union was carried out in the Mathematical Institute of the AS of the USSR and in the Computing Centre of the AS of the USSR, which at that time was a division of the Institute of Exact Mechanics and Computing Technique of the AS of the USSR.
    In summer 1954 in the Computing Center V. M. Kurochkin composed a program for the BESM computer, which made Symbolic programming possible. L. N. Korolev composed the first version of the program for BESM, which carried out the programming of arithmetical formulae.
    G. S. Sagrinovskaja from the Mathematical Institute described a project which achieved the programming of re-addressing operators. In the summer of 1954 E. Z. Ljubimsky and S. S. Kamynin constructed the programming program (PP-1) for the STRELA computer, which performed the programming of readdressing, restoring and logical operators.
    All these works were only experimental but it was a necessary stage on the way to the design of big programming programs. Extract: The Problems Of The Source Information
    The Problems Of The Source Information
    This name covers all the problems whose solution simplifies the construction of the source information and approximates its form to the mathematical form of the problem, using all the richness of modern mathematica1 symbolism.
    The natural first step in this direction is the expanslnn of the symbolism which is admissible in the source informatlon, by adding some wldespread mathematical terminology. The latter may include some sorts of mathematical operators, such as summation, multlplicatlon, differential operators, and so
    on, or some functionals, such as min f(x), max f(x), integral a-b of f(x)dx and so on, and
    some widespread special functions. Lastly, we can include in the source information not only real scalar numbers but more complicated things such as complex numbers, vectors or matrices and so on.
    The method of subschemes (already used in some programming programs) may be used for decoding new symbols which appear in the source information. The essence of this method is as follows.
    A special block is added to the PP which may "understand" new symbols in the source information. For every symbol of this sort, which denotes some mathematical algorithm D, This block constructs a subscheme which represents the record of the algorithm. This record is the algorithm D in terms of standard operators (arithmetical, logical and so on). The subscheme constructed is substituted for the symbol, denoting the algorithm D which appears in the source information. After this the transformed scheme of the progrm, in which all the special symbols have been replaced is transformed by PP in the usual way.
    Briefly this is the unification of the PP programming method with the method of compiling programs. Though the possibility of such a unification was discussed long ago, little has been done in this direction.

          in Proceedings of the Symposium on the Mechanisation of Thought Processes. Teddington, Middlesex, England: The National Physical Laboratory, November 1958 view details
  • Ershov, AP and Pokrovskij, S.B. "Evolution of programming languages", Proc. 2nd All-Union Conf. on Operation Research, Petrozavodsk, 39-54 (Russian) view details
          in Proceedings of the Symposium on the Mechanisation of Thought Processes. Teddington, Middlesex, England: The National Physical Laboratory, November 1958 view details
  • Ershov, AP and Shura-Bura, M.R."The early development of programming in the USSR" Pt.1 & 2, Computing Center, Siberian Div. of the USSR Acad. of Sci., Novosibirsk (Russian) view details
          in Proceedings of the Symposium on the Mechanisation of Thought Processes. Teddington, Middlesex, England: The National Physical Laboratory, November 1958 view details
  • Knuth, Donald Ervin, and Luis Trabb Pardo "The early development of programming languages" pp419-96 view details
          in Belzer, J. ; A. G. Holzman, A. Kent, (eds) Encyclopedia of Computer Science and Technology, Marcel Dekker, Inc., New York. 1979 view details
  • Ershov and Shura-Bura "The Early Development of Programming in the USSR" view details Extract: PP-1
    The problem of automation of programming was first described by Lyaprocedures that implement program scheme operators by producing machine instructions from some formal specification of the functioning of the operators [statements].
    The idea of a.n integrated program tha.t fully implements all statements constituting a program scheme was expressed by S. S. Kamynin and E. Z. Lubimsky in the summer of 1954 when they began work on a design for such a program in the Programming Department at OPM MIAN. During the following months they experimented on the STRELA computer with compilation algorithms containing arithmetic, logical, and readdressing statements. The resulting prototype compiler was called a "programming program" (PP-1)
          in Metropolis, N. et al., (eds.),A History of Computing in the Twentieth Century (Proceedings of the International Conference on the History of Computing, June 10 15, 1976) Academic Press, New York, 1980 view details