Programming of heterogenous Systems