Qubits are not Bits!

I had a revelation in the last couple of days — qubits are not bits. Shocking right? Let me explain.

In traditional computing, everything you see is a 0 or a 1, because everything is eventually compiled down to a bit representation. Groups of bits are used to represent instructions and information. When a programmer types in something like result = 1 + 2, all of that is converted into machine language — 0’s and 1’s. The set of bits that represent instructions are well-defined for each chip, like for your mass-market Intel x86 processors. The values (bits) used in each operation are then manipulated and stored in memory, to be used later.

In quantum computing, people talk about how qubits are 0, 1, or both at the same time, and I’ve had this misconception that qubits just run the exact same instructions with the same set of information as traditional computing — except that all the instructions run simultaneously. But that’s not the case (as this article from Chemical & Engineering News explains very well). Qubits represent the state of things, but not instructions or information. When you program with quantum computing, you set the qubits into a specific, defined state, and let them naturally (i.e. magically) settle into a final, resting state. You don’t program in explicit instructions on how that initial state turns into the final state, you just set up the right constraints on the system (how various qubits are tied together, for example, or what gates are used to influence the qubit). So when people talk about programming quantum computers, the program instructions exist outside of the “quantum” part. Like this paper from Oak Ridge National Laboratories explains, a quantum architecture involves both traditional computing and what they call “quantum accelerators”.

A highly simplified comparison might be when you fill up your car with gas, you fill it up until the nozzle disengages, because it senses that the tank is full (quantum programming — the state speaks for itself). You don’t think to yourself, I need to fill it up with 5.182 gallons of gas to get it full (traditional programming — you specify everything).