|
Logic & Semantics |
In parallel programming there are two conflicting goals: offering a high-level of abstraction to the programmer (typical of declarative programming) and providing enough information to an optimizing compiler. At a linguistic level "skeletons" have been proposed as a reasonable compromise between these conflicting goals.
While correctness of parallel programs can be addressed using directly the models and techniques available for declarative programs (since in both cases specifications are simply input-output relations because of lack of "interaction"), the more refined analysis involved in optimizing compilers would benefit from the descriptive models proposed for concurrent systems.
In this talk we describe a way of refining a naive set-theoretic semantics to highlight the availability of static information (which makes partial evaluation possible) and the potential for parallel execution (which is important to compare the efficiency of different algorithms). The proposed semantics combines two general ideas: