Previous: Introduction Up: Introduction Next: This Tutorial
Is parallel programming difficult? Many programmers complain that architecture dependencies, confusing notations, difficult correctness verification, and burdensome overhead make parallel programming seem tedious and arduous. These barriers cast doubt on the practicality of parallel programming, despite its many potential benefits.
Compositional C++ (CC++) was designed to alleviate the frustrations of parallel programming by adding a few simple extensions to the sequential language C++. It is a strict superset of the C++ language so any valid C or C++ program is a valid CC++ program. Conversly, many classes of parallel CC++ programs can be simply rewritten as equivalent sequential programs. For these classes of programs, the developement path can be very similar to that of the equivalent sequential program. This compatibility with the C and C++ languages facilitates the transition to the task of parallel programming for users knowledgeable in those languages.
CC++ extends C++ with the following eight constructs:
The richness of this language is reflected in its suitability to a wide spectrum of applications. In fact, CC++ integrates many seemingly disparate fields:
All of the object-oriented features of C++ are preserved in CC++. These features (especially generic classes and inheritance mechanisms) promote the reuse of code, structure, and verification arguments. Thus, CC++ provides an excellent framework for the developement of libraries and for the use of software templates in program construction. This reuse is especially important and useful in the context of parallel programming.