Let’s take a step back: do we need to learn physics to program a classical computer? Definitely not. We don’t need to learn it __because we already know__ all the necessary physics from our everyday experience!

Everybody has a good intuition about how an abacus or a Turing machine mechanically works, or would work, and that’s all the “physics” needed for programming. To know how the transistor works does not add anything fundamentally new in this respect, it’s solely a matter of engineering that makes things more powerful and smaller in size.

However, the situation is very different in quantum computing, where physics and computation are intimately related. Quantum computing exploits the counter-intuitive laws of quantum mechanics, about which we have no experience at all in our daily life. Thus, it is necessary that we learn about those laws and see how they can be utilized for computation.

The good news is that we don’t have to learn much: familiarity with a couple of basic concepts (superposition, interference, entanglement and measurement) will suffice. To make matters even better, all what is needed to exploit the power of quantum phenomena for computation is just a bunch of two-level quantum-mechanical systems, the so-called qubits, which happen to be the __simplest imaginable__ non-trivial things in quantum mechanics. (More on qubits will follow in a separate blog post.)

On the flip side, it’s clearly beneficial to know a little more when it comes to the simulation of more involved quantum systems like atoms and molecules, which will most likely be (besides machine learning and complex optimization) the first ‘killer app’ of quantum computers. Furthermore, since near-term quantum computers are expected to fall under the so-called NISQ category (Noisy Intermediate-Scale Quantum, a term coined by John Preskill), understanding the effects of quantum errors due to noisy qubits and noisy qubit operations will be crucial in real-world applications, which again may require a bit more advanced understanding of quantum processes.

To conclude, knowing some __basic__ physics is always a prerequisite for computation. In the classical case, however, this physical aspect is so obvious that we tend not even to notice it, while in the quantum case the connection between physics and computation becomes more apparent. Also, owing to NISQ and quantum simulation, knowing a bit more physics can be beneficial in the near term, but much less needed in the longer term.