Models and languages for parallel computation