Compositional parallel programming languages
- 1 July 1996
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 18 (4) , 454-476
- https://doi.org/10.1145/233561.233565
Abstract
In task-parallel programs, diversee activities can take place concurrently, and communication and synchronization patterns are complex and not easily predictable. Previous work has identified compositionality as an important design principle for task-parallel programs. In this article, we discuss alternative approaches to the realization of this principle, which holds that properties of program components should be preserved when those co ponents are composed in parallel with other program components. We review two programming languages, Strand and Program Composition Notation, that support compositionality via a small number of simple concepts, namely, monotone operations on shared opbects, a uniform addressing mechanism, and parallel composition. Both languages have been used extensively for large-scale application development, allowing us to provide an informed assessment of both their strengths and their weaknesses. We observe that while compositionality simplifies development of complex applications, the use of specialized languages hinders reuse of existing code and tools and the specification of domain decomposition strategies. This suggests an alternative approach based on small extensions to existing sequential languages. We conclude the article with a discussion of two languages that realized this strategy.Keywords
This publication has 14 references indexed in Scilit:
- A notation for deterministic cooperating processesIEEE Transactions on Parallel and Distributed Systems, 1995
- Monitors, messages, and clusters: The p4 parallel programming systemParallel Computing, 1994
- PVM: A framework for parallel distributed computingConcurrency: Practice and Experience, 1990
- Concurrency: Simple Concepts and Powerful ToolsThe Computer Journal, 1990
- A multicomputer garbage collector for a single-assignment languageInternational Journal of Parallel Programming, 1989
- Linda in contextCommunications of the ACM, 1989
- Parlog86 and the dining logiciansCommunications of the ACM, 1988
- Communicating sequential processesCommunications of the ACM, 1978
- Guarded commands, nondeterminacy and formal derivation of programsCommunications of the ACM, 1975
- MonitorsCommunications of the ACM, 1974