The collection of programs and program complexes by means of which: the algorithms in a program of a user, written in a high-level algorithmic language, are transformed into a sequence of instructions understood by the computer; the automatic execution of user jobs into the computer is organized; and effective use of the computer equipment is provided (see –).
The appearance of software was caused by the need to enhance the productivity of programmers and of the specialists who used computers. In fact, computer instructions, from the point of view of being able to write algorithms, are very elementary operations, and writing down an algorithm (programming) as a sequence of these instructions is labour-intensive work. This has stimulated the creation of facilities for automatic programming. There has been an enhancement of the operations understood by computers, but this has not solved the problem. Even in modern computers the instructions, as a rule, represent elementary operations. Significantly greater progress has been made in the way of producing software tools which make programming easier. The first step was the production of software to allow programming in autocode. A program in autocode, in fact, represented the same sequence of computer instructions, but written in a symbolic notation: mnemonics. The transformation of the mnemonic code of the program into machine instructions was carried out by a special program, an assembler. Next, the macro-assembler appeared, which gave the opportunity of using macro-operators, which provide for the implementation of a group of machine instructions within the texts of programs.
The next step in the automation of programming was the creation of high-level algorithmic languages (cf. Algorithmic language). There are more than a thousand algorithmic languages for various purposes, the use of which significantly reduces the development and production costs of programs. The first to be widely used was the language Fortran. Then there appeared the languages Algol; Algams; and in the USSR the language Al'fa, largely intended for scientific and technical calculation. In order to write algorithms for processing economic information, the language Cobol was created. The Algol-like language Pascal has facilities for the description of data structures. Intended for work on textual information were the languages Lisp; Snobol; Ambit; Sdl; and others. For the description of algorithms for the execution of analytical transformations by a computer, the system Reduce was widely used, and in the USSR the language Analytic (see ). As a development and generalization of the languages Fortran, Algol and Cobol there appeared the languages PL/I and Algol-68.
In parallel with the development of language facilities, work was done on the creation of libraries of standard procedures (cf. Standard program). There are thousands of procedures, programs and program complexes, realizing general and special purpose algorithms and using methods of computational mathematics. Among them are: the calculation of elementary and special functions, linear algebra, the calculation of integrals, the numerical solution of ordinary and partial differential equations, the method of least squares, etc. Standard procedures are organized in the form of a library of procedures, written on magnetic tapes or discs so that they are easily accessible. To call for a procedure it suffices to put the operator name of the procedure in the program. The procedures most often used are kept in the form of standard load modules in a language close to the machine code. As a rule, translators from algorithmic languages give the results of their work as a sequence of distinct programs and procedures, which immediately after translation are written into a temporary library as standard load modules. Following the amalgamation of the distinct procedures into a working program in machine code, with suitable adjustments, the loader is executed either before the program execution (static loader), or at run-time when a concrete procedure is invoked (dynamic loader). In some systems the amalgamation of the various previously translated parts of the program into a single program is executed by the so-called link editor, and the loader simply places the ready-made program into the memory of the machine.
Alongside the formation of a library of standard procedures, the practice of producing packages of applied programs, designed for the solution of not one problem, but a whole class of problems, became more widespread. A program package is a set of procedures operating under the control of a main program. The working conditions for a package are provided by a special problem-oriented language, which most frequently is a subset of the usual professional language or jargon.
Modern computers, along with the facilities for easing the writing and the debugging of programs, are also equipped with program complexes providing for an effective use of the computer itself by organizing the automatic job flow (job control), data management, dynamic allocation of memory, and peripherals (resource control). The collection of these programs is called the operating system of the computer (see –, ). Operating systems have become an integral part of any computing system. Without operating systems computers could not function, since the control of peripherals, the interchange of information, and the organization of the interactions of the individual elements of the computer are, to a significant extent, realized by the programs in the operating system. Functioning under the control of the operating system are translators from algorithmic languages, the system of programs easing the programming and debugging (including that in a dialogue regime), and also programs providing the work with graphical information. The operating system provides for jobs with a huge amount of data, for making files (a sequence of groups of data, as a rule, with the same structure), the creation of databases and information-retrieval systems of different kinds. The operating system provides for the use of the computer as a part of a multi-machine complex, computer networks. Besides the language facilities for implementing programs, the user is also given the opportunity to control the work of the operating system by means of control directives which are input into the computer along with the program.
Depending on the operating regime provided by the operating system, one distinguishes three types of use of computers:
1) Batch processing of programs, consisting of the automatic flow (run) of the stream of jobs in the computer, including multi-programming regime. Examples of operating systems providing such modes of operation are the systems OS ES and DOS ES for the ES machines (see , ) and IBM machines; the systems OS DUBNA and OS DISPAK for the BESM-6 (see ); the system NOS/BE for Control Data machines.
2) Time sharing gives the opportunity for simultaneous use of a computer by several users working at terminals connected to the computer, including some at large distances from it. Examples of operating systems providing for such a regime are the early experimental systems MULTICS and the TSS/360 system for IBM machines. In large-scale systems, time-sharing, as a rule, is provided by operating systems which simultaneously take account of a batch processing mode. Here the interaction with the operating system is implemented by special subsystems, working under the control of the operating system. In NOS/BE this is the system INTERCOM, in OS DUBNA it is MULTITYPE, in OS DISPAK it is the DIMON system (see ), and in OS ES it is DUUVZ and SRV (see ).
When working on terminals connected to a computer which has a batch mode, users in the time-sharing regime are only given the means for logging on, editing and running programs. The translation of programs and the execution run in the usual batch mode, with as a rule, a higher priority. The user has the opportunity to consider the results of the job run and, if necessary, to edit and run again. A program may address a terminal even in real time, as a peripheral equipment, for the input-output of information in the dialogue mode.
Systems in time sharing mode are often provided with translators operating in interpretive mode, where an individual instruction (an operator of the language) is transformed into machine code and immediately implemented on entry at the terminal.
3) Real-time operating systems provide for the functioning of the computer online with peripherals which, at arbitrary times, may send information to the computer which requires operative processing at the time of occurrence. Operating systems of this type are intended for the control of experiments and engineering set-up, operating online with the computer (see , , , ). Not infrequently the roles of real-time operating systems are performed, in suitable fashion, by highly-developed batch mode operating systems. Computers meant for online work with equipment (control computers) have techniques and software tools providing for the processing of programs and their real-time operation.
The ideas and terminology in the domain of software and system programming are not yet clearly established. Earlier, in forming an operating system, translators were included, now the majority of researchers regard them as application programs running under the control of the operating system. In various studies the names of the components of an operating system and, frequently, even the partition of the operating system into its various components, vary. This is mainly related to the rapid development of this area of science and the continuous emergence of new ideas.
In addition to the above general-purpose computer software (general-purpose operating systems and application packages), there is software still actively being produced which is aimed at the solution of concrete problems in various branches of science, engineering and economy. Problem-oriented program complexes have been created using the language facilities and other possibilities offered by computer operating systems. The amount of this software far surpasses the amount of general-purpose software.
In large institutes of nuclear physics and high-energy physics tens (sometimes more than a hundred) of computers of different classes are used basically for the control and information retrieval from experimental apparatus. For each such apparatus a specialized real-time or time-sharing operating system has been produced (see ). These specialized operating systems guarantee the functioning not only of the computer, but also of the complex electromechanical system. Most of the program complexes controlled by the operating system control the accuracy of the work of the apparatus, the retrieval of information, its processing, data compression, and storage. The experimentor is offered rich means of communication and graphical interaction with the system.
A part of the system runs in a mode of automatic identification of events and their representation. In addition to the specialized operating systems, in forming the software for experiments there is also a large amount of program complexes intended for the processing of experimental information. A system of programs for processing film information has tens of thousands of Fortran statements, and was created within the modular programming system Hydra (see ). The Hydra system offers the user facilities for editing, for the organization of the storage of various versions of programs, and for the creation of versions of programs for the concrete tracking of cameras, experiments and types of easily accessible electronic machines. In the system one finds the embodiment of all modern achievements of programming: the modular principle, structured programming, auto-documentation, dynamic allocation of operating memory, and convenient means of generation. The creation of concrete versions of a program reduces to the description of sequences of lines, indicating the types of measuring apparatus, the processing stage and the form of the output of the information, the assignment of numerical information, describing the parameters of the tracking camera (the constants of the optical system, the map of the magnetic field), and the topology of the events being studied. The result of the operation of the system is a Fortran program, generated from the modules stored in the system, or introduced by the user.
A lot of problem-oriented program complexes have been created, not just for nuclear physics, but also for many other branches of science and technology (see ). Among them are program complexes for processing information in molecular biology and crystal physics (see ), electro- (EPAK) and seismic- (SEISPAK) prospecting for useful minerals (see ), program complexes for the automation of design (see ), for the automation of control systems in economics, and many others. As a rule, the creation of a program for the solution of some problem or other, using a problem-oriented system, reduces to the preparation of its description in a language which is the controlling input language of the system and which is constructed on the basis of the definitions and concepts used in the given area of science and engineering.
In this way computer software can be presented on two levels.
The first level consists of the program complexes in the operating system, or operating under its immediate control, which is the general software supplied with the computer system. In addition to the programs strictly within the operating system, in general software one includes above all translators from computer-oriented and widespread procedure-oriented languages, and also libraries of standard general-purpose procedures.
The second level is represented by the problem-oriented program complexes. They are, as a rule, a superstructure over the general software of the first level, and are created using the language facilities and other possibilities offered by the first level software. Problem-oriented software, with respect to its general organization and purpose, can be divided into two types. The first are the program complexes created on general-purpose universal computers by means of the facilities offered by the software. They are meant for the solution of definite classes of problems of data processing. From the point of view of the connection with the computer operating system these complexes are ordinary application programs. The second type is represented by specialized real-time operating systems or control programs, which are created both by using the facilities offered by the standard operating system of the computer, as well as without their use. This software controls complex electronic and electromechanical systems in which the computers form only a part of the entire equipment of the system.
|||L.N. Korolev, "The structure of computers and their software" , Moscow (1978) (In Russian)|
|||G.D. Frolov, "Programming and algorithmic languages" , Moscow (1979) (In Russian)|
|||I. Flores, "Computer software" , Prentice-Hall (1965)|
|||J. Donovan, "System programming" , McGraw-Hill (1972)|
|||V.M., et al. Glushkov, "Analitik" Cybernetics , 7 : 3 (1971) pp. 513–552 Kibernetika , 7 : 3 (1971) pp. 102–134|
|||H. Katzan jr., "Operating systems, a pragmatic approach" , v. Nostrand-Reinhold (1973)|
|||I.V. Vel'bitskii, "Technology of industrial programs on the basis of the R-metalanguage" , System and Theoretical Programming , 1 , Kishinev (1974) (In Russian)|
|||, The software system of ES computers , Moscow (1974) (In Russian)|
|||G.L. Maznyi, "Programming on the BESM-6 in the DUBNA system" , Moscow (1978) (In Russian)|
|||S.A. Usov, "The dialogue monitor DIMON" , Moscow (1979) (In Russian)|
|||G.V. Pelsedov, L.D. Raikov, , Computer Engineering in Socialist Countries , 2 , Moscow (1977) pp. 78–82 (In Russian)|
|||V.M. Glushkov, "Automatic control systems" , Proc. All-Union Conf. on Programming, "VKP-2" , Novosibirsk (1970) (In Russian)|
|||S.Ya. Vilenkin, E.A. Trakhtengerts, "Software for control computers" , Moscow (1972) (In Russian)|
|||J. Martin, "Programming real-time computer-systems" , Prentice-Hall (1965)|
|||, Proc. 1-st All-Union Symp. on Software for Computers Working in Real Scaled Time , Kiev (1972) (In Russian)|
|||N.N. Govorun, Z.M. Ivanchenko, Programmirovanie , 4 (1976) pp. 52–65|
|||N.N., et al. Govorun, Fizika elementarn. Chastits i atomn. Yadra , 6 : 3 (1975) pp. 742–775|
|||I.V. Sergienko, I.N. Parasyuk, N.I. Tukalevskaya, "Automatic data processing systems" , Kiev (1976) (In Russian)|
|||"X-ray structural analysis" , Large Soviet Encyclopaedia , 22 pp. 23–27 (In Russian)|
|||I.A. Bezruk, A.S. Safonov, "Applied geophysics" , 98 , Moscow (1980) (In Russian)|
|||V.M. Glushkov, Yu.V. Kapitonova, A.A. Lyatichevskii, "Software for an automatic system of design of computers and systems (PROEKT)" Cybernetics , 6 : 4 (1970) pp. 363–368 Kibernetika , 6 : 4 (1970) pp. 1–6|
Software. N.N. Govorun (originator), Encyclopedia of Mathematics. URL: http://www.encyclopediaofmath.org/index.php?title=Software&oldid=16262