Programming Abstractions for Data Intensive Computing on Clouds and Grids