login

Parallel programming in maude

Lecture notes in computer sciencePublished 1 January 1992
José Meseguer, Timothy Winkler
Citations56
SJR quartileQ2
SJR score0.35
SNIP0.55

TL;DR

It seems to us that the difficulties faced in dealing with issues in a functional or relational context have for the most part been somewhat inconclusive because they have either involved baroque and complicated solutions, or have compromised the original connections with logic in the search for operational flexibility.

Abstract

Declarative programming greatly facilitates the conceptual aspects of the programming task. In this approach, programming the solution to such a problem becomes a matter of formally axiomatizing the problem in an adequate logic. In this way, the essential aspects of the problem can be captured and expressed in the program, which becomes easier to understand than programs written in conventional languages. This freedom from the idiosyncratic choices of low level representation and control forced upon a programmer by conventional languages brings also with it a freedom from sequentialization and this opens up new possibilities for parallelism. Besides, since rigorous reasoning about concurrent programs can be more difficult than reasoning about sequential ones, the need for approaches amenable to formal methods is even greater than usual in a parallel context, and this makes declarative approaches particularly attractive. However, in spite of the benefits offered by declarative programming, this approach has so far been confined to functional programming, where the underlying logic is equational logic--in first order or higher order versions depending on the language--or to relational programming based on Horn logic. In both the functional and relational cases the logic describes static, Platonic, structures such as functions and relations on sets. This makes such approaches nice but limited, especially when the problems that have to be resolved have a dynamic character. Applications of this kind include operating systems, simulations, information systems, communications software, and robotics. Certainly, attempts to deal with such issues in a functional or relational context have been made--for example, the functional treatment of input-output issues with streams, or the entire subfield of concurrent logic programming attest to this fact--but it seems fair to say that, up to now, they have for the most part been somewhat inconclusive because they have either involved baroque and complicated solutions, or have compromised the original connections with logic in the search for operational flexibility. It seems to us that these difficulties are intrinsic not to the idea of declarative programming, but to the standard logics on which the functional and relational approaches

Keywords

Computer Science