Quantum Computing for Programmers