Soviet school: address programming language
A kind of base for the address language was the development of Aleksey Andreevich Lyapunov, a correspondent member of the USSR Academy of Sciences. This outstanding mathematician created the operator programming method, which was widely used in practice and had a strong influence on the subsequent development of theoretical programming.

Yekaterina Logvinovna Yushchenko and Vladimir Semenovich Korolyuk
E.L.Yushchenko and V.S.Korolyuk embodied in the address language two general principles of work - targeting and program management. The authors introduced second-level address manipulation tools into their development, and also created a convenient system of concepts to describe the architecture of the computer and the command system. In other words, the principle of the relation of address and content was laid at the core of the address language, which allows to describe operations on a digital computer in a simple form.
In the address language as objects of a certain system of codes Shaving interrelated relations, the elements of initial information, the results of solving problems and constructive objects for constructing programs are considered. Using relations, you can build expressions according to the usual rules. The values of these expressions will also be the codes obtained after performing the operations indicated in them. But at the same time, the set of initial information elements (subset codes) can be specified explicitly through the elements of the address set S I (A I ⊂ S) .
Address Language Operations
An address mapping is an operation of extracting the contents of an address (bar-operation), which defines a mapping of the set A to the set of contents of these addresses B (B ⊂ S) . The stroke operation is unique - only one content can correspond to each address, the operation is indicated by a symbol (stroke). For example and b = , where a ∈ A , and b ∈ B . The address language does not limit the choice of the set A , it can be determined in a constructive way for each specific implementation. If we consider the simplest case when the address language is oriented to a specific machine, then as AYou can take many bytes or the addresses of RAM and program registers. In another situation, when focusing on a machine class , the combination of a certain subset of memory fields is taken as A. In such cases, the intersection of A and B is usually not empty. This allows you to repeatedly apply barcode operations and thereby raise the rank of the address. Let b be the contents of address a, 'a = b , a c the content of address b,' b = c ; and will be the address of the code address c , where a is the address of the second rank of the code c (indirect address) 2 a = '(' a) = 'b = c. The address of higher ranks k a = '( k - 1 a) is also determined . The address a is called the zero-rank address of the code a , relative to its contents.
The minus a stroke operation is the inverse of the stroke operation "-1" in ( -1 b = a) . This operation is not unambiguous, and a single content b may correspond to a plurality of addresses A b , for each a ∈ A b is ' a = b .
To determine and change the address mapping, you must enter the algorithm, the operation of sending to the address, denoted by the symbol ⇒. And then the record of the operation b ⇒ a will mean the following:
1) the element a is included in the set A ;
2) the element b is included in the set B ;
3) the correspondence is established 'a = b ;
4) all previously established correspondences of the form 'x = y , where x is not equal to a, remain unchanged .
The operation b ⇒ a implies that a and b are some functions. In this case, the value of the function b becomes the content of the address resulting from the calculation of the value of a ('a = b). In addition to stroke operations, the construction of functions also uses arithmetic (+, -, x, :) , logical (∧, ∨, etc.) , functional (sin, √ etc.) , relations (=, <,> etc.) and others. All these functions are called addressable. The address conversion formula (or the transfer formula) is expressed as b ⇒ a , where a and b are address functions.
In an address language, the process of converting information is represented as an address program. It is defined by the initial distribution of addresses in Sand a sequence of address formulas, indicating the order of their application. The last formula is specified through the operators of the cycle, access to programs, conditional, unconditional and calculated transitions, etc.
In the address language, there are different steps depending on the representation in the program of the objects from which it is constructed by means of the contents of the addresses. The first stage contains the elements of the initial information and labels defined using addresses. In the second step, the addresses may be the contents of the addresses. At the third stage, the contents of addresses can also be symbols of single and double operations.
In the Address language, a program entry includes two parts: the original address mapping and the dynamic part. As a rule, the initial address mapping is given by the relations ' a = c. In such relations, there may be those where c will not be an element of the initial information, therefore they can be written in the form of simple link formulas with ⇒ a. The totality of such equalities will be a static part of the address program. The dynamic part of the program is a list of address lines. The address language allows the free change of volumes and the movement of information of the static and dynamic parts (from dynamic to static and vice versa). When a specific problem is solved, the information related to it is quite visible. The program reviews the code if its address of some rank is in the address program. To expand the possibilities of viewing the codes of the program, addresses of higher ranks are used. Thus, during programming, information review schemes are constructed. Code Sequence Review Scheme x 1 , x 2Is a cyclic address program, on the i-th of the cycles of which the i-th element of the sequence is viewed. To order elements into sets, schemes are also needed, in the construction of which the following operations are introduced. Namely, the elements of the initial information are ordered using the addresses in which they are contained by some rank. To specify a sequence relation on a set of addresses, arithmetic operations for machine addresses are resorted to.

Textbook Yushchenko E. L. Address programming
The address language has become the basis for the development of a whole family of programming languages, which differ in the set of operators, in symbolics, in the levels of algorithmization of the following operations in the set of addresses entered into them, and in the degree of objects necessary for constructing the program using the contents of the addresses. Therefore, the address language has levels, styles and steps.
The degree of ordering of addresses and the algorithmization of the following operations entered into them determines the level of the address language. The levels are: obschealgoritmichesky level contingent of residents and the level of specific addresses
Obschealgoritmichesky. It accepts the most natural set of addresses for a programmed task. In certain cases (if the task requires it), follow-up operations are introduced, which are described by general mathematical means (indexes, etc.).
The level of conditional addresses. In this case, the ordering of addresses occurs only on the basis of the requirements of the task. The individual arrays of addresses are processed, which are processed by the algorithm. All other issues related to the actual distribution of memory are not resolved. As a rule, arrays are represented by arithmetic sequences of addresses. Sequences defined by different start addresses that do not overlap. Accordingly, the following operations are described algorithmically. The operation of following the indices for matrix elements arranged in rows starting from address a 0 + 1 has the form a 0 + (i - 1) n + j , where n is the order of the matrix.
Specific Address Level. It involves the execution of the algorithm on a specific machine, solving the problems of determining the true operations of the sequence. In this case, the set of addresses is completely ordered (with the exception of program registers).
The address language allows you to move from level to level, starting from the most abstract algorithmic language and ending with the complete distribution of addresses for this machine. Language style is determined by the choice of alphabet, a set of elementary operations and valid formulas. There are publication languages, machine styles, algorithm records (differing from machine ones in coding), input languages of specific translators.
They distinguish between the language of publications, the input languages of specific translators, machine styles, the recording of algorithms in which differs from machine recording only in coding.
In the address language, you can describe arbitrary patterns of information viewing, economic and complex information-logic algorithms, processes of searching and viewing information, which is organized in chain lists. In this regard, it has an advantage over algorithmic languages created abroad for list processing of symbolic expressions. Another advantage of the address language is the ability to describe algorithms, which cannot be done using a language such as ALGOL (such processes are described only with additional funds).
An important feature of the address language is the natural interpretation as internal languages of the digital computer. The researcher can compile specific machine-oriented languages using the apparatus of address algorithms as a convenient system of concepts for describing algorithms and elemental structures of digital computers. The same can be done to describe translators and interpreters of programming languages.
Address programming helped a lot in developing the structure and command system of such Soviet computers as: Dnepr, Kiev, M20, Ural, Minsk. As for the hardware implementation of the indirect addressing mechanism in Kiev, this is one of the first examples of the influence of theoretical programming on the design of the architecture and element base of computers. In addition, as already mentioned, the means of the address language are included in the subsequent programming languages, focused on the description of translation algorithms.

Computer Kiev (1958)
We can say with confidence that the creation of an address language was one of the first significant achievements of the scientific school of theoretical programming. Moreover, not only in the USSR. The address language is ahead of the advent of assemblers and programming languages with an indirect addressing apparatus. Textbooks on this language have been published in different countries (Germany, France, Hungary, Austria, Slovakia).
By tradition, there is a bit of advertising in the basement, where it will not hurt anyone. Our company launched the New Year sale of servers and VPS, within which you can get from 1 to 3 months of rent for free. You can find out more about the action here .