Programming Quantum Computing