Quantum programming languages and semantics