Aspects of the Automatic Generation of Parallel Programs