APPENDIX Description of the L Yap AS Language* A. D. Zakrevskii
Total Page:16
File Type:pdf, Size:1020Kb
APPENDIX Description of the LYaP AS Language* A. D. Zakrevskii § 1. General Principles of the LYaPAS Language Purpose of the LYaPAS Language In many cases, the complexity of contemporary devices for the automatic processing of discrete information becomes so great that the actual building ofthese devices, performed on the intuitive level, leads to enormous expenditures of resources, materials, and time in the design phase, and to obtaining unnecessarily large, and hardly complete, constructive solutions. It is therefore necessary to replace the intuitive methods of construction by a rigorous theory of discrete automaton design. Today, the theory of discrete automaton design has been intensively developed, but the re duction of its results to the level of engineering practice has come up against two serious ob stacles. The first is that the practical methods of synthesis developed within the framework of the present theory are too complicated for a large number of engineer-designers. The second obstacle is the arduousness of many of the well-known algorithms for solving practical prob lems of synthesis: in many cases, the realization of these algorithms entails the performance of millions, and even billions, of elementary computational steps. There thus arises the necessity of automating the synthesis processes, where the effec tiveness of such automation can be judged by the degree to which the following criteria are met: a) the practical utilization of the developed system for automating synthesis must be suf- ficiently simple: b) the number of problems susceptible of handling by the system must be quite large; c) the system must provide high productivity; d) use of the system must be conducive to the further development of the theory of syn thesis; e) the system must be sufficiently flexible that it will not be rendered obsolete by further development of synthesis theory but, rather, will be able to be improved on the basis of this development; • Translated from Logical Language for the Representation of Algorithms for the Synthesis of Relay Devices (editor M. A. Gavrilov), Nauka, Moscow (1966), pp. 7-38. 141 142 A. D. ZAKREVSKII f) the system must be actually developed over a short period of time, and at relatively low cost. Taking the level of development of modern technology of information-processing into ac count, we can assert that the best way to satisfy the aforementioned requirements if to base ourselves on the use of general-purpose digital computers (GPDC). To be sure, we should realize that modern GPDC are specialized, in the sense that they are basically designed to operate on numbers. Programming problems of a logical character, to which synthesis problems belong, are accompanied by significantly greater difficulties, and require special knowledge and resourcefulness. It is possible to alleviate this problem by de veloping a special language for the representation of the algorithms for solving logical prob lems, such as those involved in synthesizing discrete automata, and by developing, on the basis of this language, a system for the automation of the programming of the problems of interest to us. In this paper, we expound the results of the development of such a language, called the LYaPAS language.* LYaPAS was developed in parallel with the programming program corres ponding to it. t In its construction, we assumed the following quite explicit goals, although the formulation avowedly lacks precision: a) the algorithms of interest to us must be expressed in LYaPAS compactly and compre hensibly, in order that these expressions may be published as they stand; b) LYaPAS must make maximum use of the capabilities of modern computational tech niques; at the same time, it must be independent of the details of programming technique and of the idiosyncracies of specific computers, Le., it must be maximally machine-independent; c) the corresponding software for the specific computers must be quite compact: it must fit completely in the machine's operational memory, providing high-speed interpretation and compilation; d) the capability must be provided of having all programmer and user interfaces with the computer on the level of the LYaPAS language; in particular, program debugging must be re duced to debugging algorithms, with the debugging results output in LYaPAS. Types of Words LYaPAS expreSSions are sequences of elements, called words. Each word is a symbol of some well-defined concept: variable, constant, certain actions on variables (represented by neighboring words in the sequence of words), etc. It is precisely this meaningful content in the elements of the language which justifies the use, in this case, of the term "word." Depending on their meaning, words are divided into types: the greater part of the words serve as symbols of operands and operators, while some words play ancillary roles, expressing relative connections of words in LYa PAS sentences, or defining the mode of interpretation of the succeeding symbols. The basic LYaPAS operands are variables, the values of which are represented by 32-bit codes, interpreted, in general, not as numbers, but as subsets of some abstract set of 32 ele ments. Such variables are the standard ones, and operations with them on modern GPDC are performed quite simply. ·Translator's note: acronyms are not particularly amenable to translation. This one means: logical language for the rep resentation of synthesis algorithms, the English acronym for which, LOLAFOTROSA, has obviously no future. tTranslator's note: by "programming program," the Russians can mean a compiler, an assembler, an operating system, or any combination of these. The English word "software" is an adequate equivalent in most cases. DESCRIPTION OF THE LYaPAS LANGUAGE 143 The capability is also provided of operating with compound variables, the values of which are given by 32w-bit codes, where w is some integer greater than unity, and also with arrays, which also play the role of operands in the language, an array being a set whose elements are analogous to variables. A special system of subscripting array elements allows one to operate both with arrays as a whole, and with their individual elements. In particular, the subscripts of array elements can be specified by the values of standard variables of a special designation, called indices. In addition to variables, constants, representable by 32-bit codes, can be LYaPAS operands. A special type of constant can be specified directly by LYaPAS words which, in the given case, do not simply play the role of symbols of some 32-bit constant, but provide, in their right part (seven bits), the constant itself, the remaining bits being filled with zeros. Such a method of giving constants (i.e., literals) is particularly convenient if these con stants are interpreted as integers and are used, in particular, for the serial numeration of program statements. We shall consider only those ~equences of LYaPAS words which represent algorithms for the solution of certain problems, and we shall call them the L-programs, or simply the prb grams, for solving these problems. Two Levels of LYaPAS LYaPAS has two levels. The first level, closer to machine language, is simpler, and is designed for the representation of algorithms which are not too complex; the more compact software corresponds to this level. On this level, ~ can operate directly on those variables whose values are 32-bit codes, Le., on simple variables, subscripts, and individual elements of arrays. For the representation of operations on this level, there is a special collection of standard first-level operators, or l-operators, many of which are close to the elementary operations of general-purpose computers: bitwise disjunction, complementation, shifting, counting the num ber of ones in a code, etc. Particular roles are played by the operators of assigning to one var iable the value of another, of incrementing the value of a variable, etc. A small group of opera tors is used for controlling the order of execution of program steps on the basis of current in formation. Provision is made for procedures to input initial values of operands and to output results in indexed form, Le., the value of a variable is accompanied in the printout by the sym bol of the variable. Provision is also made for automatic program debugging (in the LYaPAS language), this facility consisting of the printout of the corresponding process of program execu tion via the sequence of values of those variables and indices, the set of which is specified by a special code, as well as a printout of a trace of the program's trajectory. A special mechanism built in to the debugging block provides for practical uniformity of output of monitoring informa tion in all cycles of programs being debugged, independently of the mutual configurations of these cycles. On the second level of LYaPAS, the L-operators are generalized to the cases when they can be used with compound variables (in programming practice, this generalization corresponds to the unification of several memory cells, i.e., to the usual method of handling multiple-preci sion arithmetic). Many of the first-level operations are also generalized to operate with arrays. New operations are introduced. In the first instance, these new operations include the operations of union, intersection, and subtraction of sets representable by given arrays, the operations of finding the upper and the lower bounds of sets, the operations of identifying, in a given set, the subset of elements possessing some given property, the operation of finding a minimal interval of a set which includes some given set, etc. On the second level, there is also provided a special 144 A. D. ZAKREVSKII mode for realizing operations of the first level. For example, if these operations are two-place operations, operating on arrays, they are performed on all pairs made up of one element from each of the two arrays in question; the resultant array is formed from the set of results after similar pairs have been identified.