Programmable Diffractive Optics