Compiler and programming languages
People who design quantum algorithms cannot account for the specific details of a given quantum device. These details include the size of the device, as well as connectivity (which sets of qubits can be entangled with a single operation). In order to transform generic quantum algorithms into a form which can be executed on a device of our choosing, we'll need a compiler, a classical computer program which finds a near-optimal fit between the desired quantum operations and the limits of near-term devices. These compilers, in turn, require us to express quantum algorithms in specific quantum programming languages.