  With the potential of quantum algorithms to solve intractable classical
problems, quantum computing is rapidly evolving and more algorithms are being
developed and optimized. Expressing these quantum algorithms using a high-level
language and making them executable on a quantum processor while abstracting
away hardware details is a challenging task. Firstly, a quantum programming
language should provide an intuitive programming interface to describe those
algorithms. Then a compiler has to transform the program into a quantum
circuit, optimize it and map it to the target quantum processor respecting the
hardware constraints such as the supported quantum operations, the qubit
connectivity, and the control electronics limitations. In this paper, we
propose a quantum programming framework named OpenQL, which includes a
high-level quantum programming language and its associated quantum compiler. We
present the programming interface of OpenQL, we describe the different layers
of the compiler and how we can provide portability over different qubit
technologies. Our experiments show that OpenQL allows the execution of the same
high-level algorithm on two different qubit technologies, namely
superconducting qubits and Si-Spin qubits. Besides the executable code, OpenQL
also produces an intermediate quantum assembly code (cQASM), which is
technology-independent and can be simulated using the QX simulator.
