RPL: A Domain-Specific Language for Designing and Implementing Parallel C++ Applications