Models of quantum computation and quantum programming languages