![]()
Jonathan Poole
,
Russel Winder and Graham Roberts
Department of Computer Science
University College London
Gower Street
London WC1E 6BT
United Kingdom
This paper sets out the position of the UCL research group on the EUROPA working group on parallel C++.
We agree with Denis Caromel that the aims of Europa are ambitious. The task of fully defining a parallel language based on C++ is difficult for several reasons:
The approach adopted by INRIA to deal with these problems is to define a high level language flexible enough to define all possible parallel models. We agree that this is an interesting route to investigate, and in the long-term seems to offer extreme flexibility. However, the approach taken with the UC++ project is different: it is to `hard-wire' a finite but flexible set of parallel object behaviours. This has the advantage of being much easier: it does not require the creation of new compilers, but can instead be done by inserting macros into standard C++ code. Given the complexity and instability of the base language we believe this ability to be able to use standard C++ tools to be important.
We feel that the role of EUROPA should not be to choose between these and other languages but rather just to define an initial set of well defined parallel object behaviours that can be implemented in different parallel C++ languages. Languages that implement such behaviours directly or in which such behaviours can (and have been) implemented would then be seen as instance of EC++.
The distinction might be seen to be between whether Europa should try to define a standard, portable language based on C++ or just define certain standard parallel object properties that can be defined in different languages. Programs written relying on these properties can then be easily ported between the different languages. The aim should be to provide a mechanism for writing portable parallel programs rather than a portable parallel language.
There are two levels at which object behaviours might be defined: as whole bundles of behaviour or as collections of separate attributes. In practice EUROPA will probably want to define both. First we discuss the definition of standard object behaviours.
![]()