📜 ⬆️ ⬇️

Soviet school: address programming language

Address programming language is considered one of the first high-level programming languages. It was created by the Soviet developer Yekaterina Logvinovna Yushchenko together with the mathematician Vladimir Semenovich Korolyuk in 1955. The constructions of this algorithmic language became the basis of modern programming languages.

A kind of base for the address language became the development of a member of the Academy of Sciences of the USSR Alexei Andreyevich Lyapunov. This outstanding mathematician created an operator programming method, which became widely used in practice and exerted a strong influence on all subsequent development of theoretical programming.


Ekaterina Logvinovna Yushchenko and Vladimir Semenovich Korolyuk
')
E.L. Yushchenko and V.S. Korolyuk embodied two general principles of work in the address language - targeting and program management. The authors introduced a second-rank address manipulation tool in their development, and also created a convenient system of concepts to describe the computer architecture and command system. In other words, the principle of the relationship between address and content was based on the address language, which makes it possible to describe operations on a digital computer in a simple form.

In the address language, the elements of the initial information, the results of solving problems and the constructive objects for the construction of programs are considered as objects of a certain system of S codes with certain relations between them. Using relationships, you can build expressions according to the usual rules. The values ​​of these expressions will also be codes obtained after performing the operations specified in them. But at the same time, the set of elements of the initial information (subset codes) can be specified explicitly through the elements of the set of addresses S I (A I S) .

Address language operations


Address mapping is an operation of extracting the contents of an address (a stroke operation), which sets the mapping of the set A to the set of contents of these addresses B (B S) . A bar-operation is unambiguous - only one content can correspond to each address, the operation is indicated by a symbol (bar). For example, a = b , where a ∈ A , and b ∈ B. Address language does not limit the choice of the set A , it can be determined in a constructive way with each specific implementation. If we consider the simplest case when the address language is oriented to a specific machine, then as A you can take a lot of bytes or addresses of memory and program registers. In another situation, when targeting a class of machine, A is taken as the union of some subset of memory fields. In such cases, the intersection of A and B is usually not empty. This allows you to repeatedly apply bar operations and thereby raise the rank of the address. Let b be the contents of the address a, 'a = b , a c - the content of the address b,' b = c ; and it 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 the highest ranks k a = '( k - 1 a) is also determined. Address a is called a zero rank address of code a , relative to its content.

The minus-bar operation is the inverse of the "-1" bar operations ( -1 b = a) . This operation is not unambiguous and the set of addresses A b can correspond to one content b , which for each a ∈ A b will be 'a = b .

To determine and change the address mapping, you must enter an algorithm, the upload operation to the address indicated 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 assumes that a and b are some functions. In this case, the value of the function b becomes the contents of the address, which is the result of calculating the value of a ('a = b) . In addition to stroke operations, arithmetic (+, -, x, :) , logical (∧, ∨, etc.) , functional (sin, √ etc.) , relations (=, <,> etc.) and others. All these functions are called address. The address conversion formula (or the feed formula) is expressed as b ⇒ a , where a and b are address functions.

In the address language, the process of converting information is represented as an address program. It is given by the initial distribution of addresses in S and a sequence of address formulas, indicating the order in which they are applied. The last formula is given in terms of loop operators, program accesses, conditional, unconditional and calculated transitions, etc.

In the address language there are different stages, depending on the representation in the program of the objects from which it is constructed, by means of the contained addresses. The first stage contains the elements of the initial information and the labels set with the help of addresses. At the second stage, addresses can be the contents of addresses. At the third stage, the contents of the addresses can also be characters of single and two-place operations.

In the Address language, the program record 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 ratios there may be those where c will not be an element of the initial information, because they can be written as simple formulas with the link with ⇒ a . The combination of such equalities will be a static part of the address program. The dynamic part of the program is a list of address lines. In the address language, free change of volumes and movement of information of the static and dynamic parts are allowed (from dynamic to static and vice versa). When the solution of a particular task is made, the information relating to it is quite observable. A program reviews a code if its address of a certain rank is in the address program. To enhance the visibility of program codes, high rank addresses are used. Thus, when programming, the construction of information viewing schemes takes place. The sequence of viewing a code sequence x 1 , x 2 is a cyclic address program, on the i-th of whose cycles the ith element of the sequence is viewed. For the ordering of elements into sets, we also need schemes, in the construction of which we introduce the following operations. Namely, the elements of the initial information are ordered using the addresses in which they are contained for a certain rank. To set the following relationship on a set of addresses resorted to arithmetic operations for machine addresses.


Textbook Yushchenko E. L. Address programming

Address language became the basis for the development of a whole family of programming languages, which differ in the set of operators, in symbolism, in the levels of algorithmization of the follow-up operations entered into them in a set of addresses, the degree of objects necessary to construct a program using the contained addresses. Therefore, the address language has levels, styles and steps.

The degree of orderliness of addresses and the algorithmization of the subsequent operations entered into them determines the level of the address language. Levels are: general algorithm, the level of conditional addresses and the level of specific addresses

General Algorithmic . It takes the most natural for a programmable problem set of addresses. In certain cases (if the task requires it), the following operations are introduced, which are described by common mathematical means (indices, etc.)

The level of conditional addresses . In this case, the addresses are ordered only on the basis of the requirements of the task. The ordering of individual arrays of addresses that are processed by the algorithm occurs. All other issues related to the actual memory allocation are not solved. As a rule, arrays are represented by arithmetic sequences of addresses. Sequences defined by different starting addresses are not intersecting. Accordingly, the following operations are described algorithmically. The operation of following the indices for the matrix elements arranged in rows, starting from the address a 0 + 1 , has the form a 0 + (i - 1) n + j , where n is the matrix order.

The level of specific addresses . It assumes the implementation of the algorithm on a particular 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).

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 a given machine. The language style is determined by the choice of the alphabet, a set of elementary operations and admissible formulas. There are publication languages, machine styles, algorithm recordings (they differ from coding), input languages ​​of specific translators.

There are publications language, input languages ​​of specific translators, machine styles, recording of algorithms in which differs from machine recording only in coding.

In the address language, you can describe arbitrary information review schemes, economic and complex information-logic algorithms, processes of searching and viewing information, which is organized into chain lists. In this regard, it has an advantage over algorithmic languages ​​created abroad for the list processing of symbolic expressions. Another advantage of the address language is the ability to describe algorithms, which cannot be done with a language like ALGOL (such processes are described only with the use of additional funds).

An important feature of the address language is a natural interpretation of the internal languages ​​of the digital computer. The researcher can compose specific machine-oriented languages ​​using the device 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 has greatly helped in the development of the structure and system of commands of such Soviet computers as: “Dnepr”, “Kiev”, M20, “Ural”, and “Minsk”. As for the hardware implementation of the indirect addressing mechanism in Kyiv, this is one of the first examples of the influence of theoretical programming on the design of the architecture and the element base of computers. In addition, as already mentioned, the tools of the address language were included in the following programming languages, focused on the description of translation algorithms.


Computer Kiev (1958)

It can be said 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. Address language ahead of the emergence of assemblers and programming languages ​​with the device of indirect addressing. Textbooks on this language have been published in various countries (Germany, France, Hungary, Austria, Slovakia).


According to tradition, a little advertising in the basement, where it does not hurt anyone. Our company launched a New Year sale of servers and VPS, within which you can get from 1 to 3 months of rent for free. The details of the action you can find here .

Source: https://habr.com/ru/post/274019/


All Articles