The proliferation of computer applications has made acute the problem of creating programming languages and systems capable of implementing mappings of languages specified by their semantics into certain sets of objects, e.g., machine languages. Much has already been done in this direction. For example, a large number of languages for a wide variety of purposes have been developed, and some of them have achieved universal recognition. Many methods of mapping specific languages into given sets of objects have been proposed, and this has resulted in the creation of effective programming systems satisfying certain constraints related to the finite response of the machine, limited storage, etc. Intensive research is being done on this area and we will no doubt see even greater efforts in the future.However convenient the languages and however effective the concomitant programming systems may seem at present, more extensive and intensive research will inevitably lead to the appearance of new classes of problems for whose solution the current systems are not effective. To obtain the maximum effect from programmIng languages and systems, therefore, it will constantly be necessary to create new languages and systems (in particular, by improving on the old ones). On the other hand, it is clear that the complexities of creating new programming systems, the requisite skills and experience of the programmers, and, finally, the quality of the systems are highly dependent on the extent to which information on the infinite class of possible programming systems is embodied in the new system and in those systems on which it is based. The completeness of this information depends in turn on the current accumulated store of experience of programmers and of the corresponding programming systems, on the results of analysis of this experience, and, finally, on the theories which can meaningfully generalize the research in this area and thus provide a basis for creating specific languages and systems. This paper summarizes the author's research [1-4] into the problem of creating a general theory of programming languages and systems which would be both fairly abstract and at the same time specific and relevant enough to have some immediate practical consequences, e.g., in designing programming systems.
Parametric Models of Interpreted Languages and InterpretersLet F be a free semigroup with set of generators ~ and identity element e, and let ~2 be an arbitrary set.An interpreted language will be understood to be an arbitrary binary relation L c_ F x ~2. The first component of an element of an interpreted language will be called (as usual) a word, while the second will be called the interpretation (content, meaning, or semantics) of this word. We will not distinguish between these concepts, as is frequently done on other levels of abstraction.An interpreter will be understood to be an arbitrary mapping (generallynon-single-valued) of some set S _c F Into ~. In other words, an interpreter is a mapping which places each word of the set (or ...