Data-Centric Programming For Distributed Systems