Foreword by Bjarne Stroustrup Software is generally acknowledged to be the singlegreatest obstacle preventing mainstream adoption of massively-parallel computing. While sequentialapplications are routinely ported to platforms ranging from PCs to mainframes, most parallelprograms only ever run on one type of machine. One reason for this is that most parallel programmingsystems have failed to insulate their users from the architectures of the machines on which theyhave run. Those that have been platform-independent have usually also had poor performance.Manyresearchers now believe that object-oriented languages may offer a solution. By hiding thearchitecture-specific constructs required for high performance inside platform-independentabstractions, parallel object-oriented programming systems may be able to combine the speed ofmassively-parallel computing with the comfort of sequential programming.Parallel Programming UsingC++ describes fifteen parallel programming systems based on C++, the most popular object-orientedlanguage of today. These systems cover the whole spectrum of parallel programming paradigms, fromdata parallelism through dataflow and distributed shared memory to message-passing controlparallelism.For the parallel programming community, a common parallel application is discussed ineach chapter, as part of the description of the system itself. By comparing the implementations ofthe polygon overlay problem in each system, the reader can get a better sense of theirexpressiveness and functionality for a common problem. For the systems community, the chapterscontain a discussion of the implementation of the various compilers and runtime systems. In additionto discussing the performance of polygon overlay, several of the contributors also discuss theperformance of other, more substantial, applications.For the research community, the contributorsdiscuss the motivations for and philosophy of their systems. As well, many of the chapters includecritiques that complete the research arc by pointing out possible future research directions.Finally, for the object-oriented community, there are many examples of how encapsulation,inheritance, and polymorphism can be used to control the complexity of developing, debugging, andtuning parallel software.