Large scale machines are becoming cheaper and faster, but programming these machines has not become easier. In this talk we examine the promise of the UPC (Unified Parallel C) language to combine productivity with high performance: what the shortcomings of the language are and how we are addressing these to allow UPC to scale to large machines.