Over the last year, I have been spending time learning as much as I can about quantum computing. I’ve studied and written circuits in Q#, but in learning, something escaped me. Yesterday, while in a meeting with a high-ranking person within a large quantum computing company, that something hit me like an atom splitting: The core difference in the computers of today and the quantum computers of later today lies in understanding probability.

To peel apart this difference begins with seeing that today’s “classical” computers are deterministic. That is, if an algorithm is defined as Y, and if the input set is known, then the output set will always result in defined and expected outcomes. For example, if the algorithm is, Y squared, then for every input X the result will be X squared. For someone like me who has spent a large part of a career ensuring that any given system meets expected outcomes, this type of computing is rather comfortable.

Quantum computing, though, isn’t as “if this, then that.” While there are input sets and algorithms, quantum computing outcomes are, well, more maybe-ish. That is, quantum computing is probabilistic, meaning that outcomes of algorithms are likelihoods and are not definitive. The reason for this is that quantum computers can process a whole bunch of stuff, including randomness, at once. The processing power of a quantum computer far outweighs today’s computers and reflects a core fact of reality: things are more probabilistic than they are deterministic.

It’s a tough pill to swallow, sometimes. I like things to be as I expect them to be. I love living under a blanket of security that sings me “if you do this then you can expect that” lullabies. But reality isn’t quite that simple. More often than not, things are more likely than they are certain and the only thing we can expect is that we really can’t completely expect things to be as we hope.

However, quantum computing reveals the nature of our reality. I have come to appreciate the technology so much that I have a hard time writing straight code anymore. I can’t help but think, “I’m coding this as such, but if I had way more variable and allowed randomness to creep into my code, it would probably not work.” But, I am still working on today’s computers, as are most of us. Soon, though, we will all have to learn about the computers of later today. To do so, I think understanding the difference between deterministic systems and probabilistic systems is the best place to begin…don’t get me started on how cool qubits are…later maybe…