Translated abstract:
If programs are developed by step by step transformation from abstract to more concrete formulations and thus by gradual complementation of a specification to a complete program – an efficient version of an algorithm – the single elements in the chain of the development are in particular relation to each other. Mostly they are equivalent in the sense of the mathematical semantic (“functional”). The definition of the functional equivalence is generally sufficient to characterise the mathematic semantic of a programming language.
Classes of congruence relations on programming-terms can be defined in the same way as for the mathematical semantics, which formally realise several terms of “operative equivalent” and which are considerably more subtle than the congruence relation generated by the mathematical semantics. Naturally, the different versions of a program in a program development are in general by no means operatively equivalent.
An additional dimension is given to the vocabulary of concepts of the operative semantics, if parallel running programs (or parts of programs) are observed. In general program-systems with parallel running parts characteristic phenomenons arise, which strongly hinder the formal conclusions about the operative and the mathematical semantics of such programs:
- The communication between parallel running processes causes logical dependence between program parts, which are far apart from each other regarding the notation (and run).
- In addition non-determinism is arising as abstraction of the non determised, temporal interlocking of the communication-actions of parallel running processes.
Especially in this context congruence relations and defining transformations can be successfully employed for the definition of the semantics.
In many approaches dealing with the parallelism in programming languages, the above described phenomenons are additionally superimposed by problems of the synchronisation, which take up a broad space, especially if it is communicated using shared program-variables. Frequently, quasi-parallel perceptions are used for the definition of the semantics. Thereby certain “atomic” actions are mixed in any manner. This retrograding to a sequencing can, however, not always completely satisfy, because thereby often neither a sufficient concept formation of “true” parallelism nor one from possible implementations adequate description can be reached. Other approaches completely separate parallel programs from the common language elements of sequential programming languages.
In contrary thereto, an attempt is made within this work to deduce language elements for parallel programming starting from a principally functional programming language and to integrate them with classical sequential language elements.