Association for Computing Machinery (ACM), ACM Letters on Programming Languages and Systems, 4(18), p. 454-476, 1996
Full text: Download
this paper, we discuss alternative approaches to the realization of this principle, which holds that properties of program components should be preserved when those components 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 objects, 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 their strengths and 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 paper with a discussion of two languages that realize this strategy. Categories and Subject Descriptors: D.3.2 [Programming Languages]: Language Classifications ---Concurrent, distributed, and parallel languages; D.3.3 [Programming Languages]: Language Constructs and Features---Concurrent programming structures General Terms: Languages Additional Key Words and Phrases: Compositionality, Parallel Languages, Parallel Programming ACM Transactions on Programming Languages and Systems, Vol. 8, No. 1, January 1999. Compositional Parallel Programming Languages Delta 113 1. INTRODUCTION Parallel programming is widely regarded as difficult: more difficult than sequential programming, and perhaps (at least this is our view) more difficult than it needs to be. In addition to the normal programming concerns, the para...