Because of its use in computer science, the term “coding” often refers to programming a computer. In the case of quantum computing, therefore, the term often refers to coding for quantum computers. Quantum computer coding, in fact, uses classical programming languages and looks like classical computer programming, so the fundamental difference between the two is what happens at compilation and execution times.
Whether a quantum computer supports a digital model, with circuits and gate operations, or an analog model, the classical code is ultimately compiled into a sequence of instructions. Control systems then execute these instructions with laser or microwave pulses, depending on the qubit modality. Other outcomes are possible, such as the configuration of beam splitters on integrated circuits. In any event, these pulses, beam splitters, and so forth evolve the quantum system as specified by the algorithm.
There are efforts to unify quantum instruction sets as quantum assembly languages, or QASM. However, there are at least three non-interoperable QASM languages, not to mention other formats that have been introduced, as well. The goal, however, is the same: the high-level portability of algorithms, which can then be compiled for and executed on a broad range of quantum computers.
Above the QASM, JSON, or other language is typically a software development kit, or SDK. The most popular language supported by SDKs is Python, with Julia and C++ gaining in popularity behind it. Support can also be found for a number of other programming languages, but that support might be limited to a handful of projects. There isn’t much yet in the way of quantum coding software, as software has historically been defined, but “Best Quantum Developer Tools for 2023” identifies useful libraries such as Bloqade and Bloqade-Python, as well as coding environments such as qBraid and Google Colab.
Beyond proficiency with a classical programming language, leveraging the potential of quantum computation requires some specialized knowledge. Learning how to code quantum computer algorithms may require, for example, knowledge of the target hardware. Our page “Important Technical Aspects in Quantum Computing” lists a series of articles pertaining specifically to quantum computing with neutral atoms.
Despite the term’s obvious computer science origin, coding does not necessarily refer to programming when referring to quantum technologies. In an article titled “What is Quantum Coding?,” Tomorrow.Bio notes that the term is applicable to the encryption, secure transmission, compression, storage, and retrieval of quantum information. The term might also be used interchangeably with the term “encoding,” which is the mapping of classical or quantum information to qubits. One example of that is the term “dense coding.” But the most significant overlap is probably in quantum error correction. The term “quantum codes,” specifically, is short for “quantum error correction codes.”
To reinforce the overlap with quantum error correction, there is a ScienceDirect page titled “Quantum Code.” All eight book chapters on this page are about quantum error correction codes.
In one sense, the applications of quantum coding could simply be a list of all of the potential applications of quantum computing. This list would include such use cases as drug discovery and development, solving classically-intractable optimization problems, designing novel materials, and the like. But quantum coding today has more direct applications:
The use cases that could’ve been listed here would be included in prototyping. For example, the optimal placement of coffee shops, a maximum independent set (MIS) problem, can be demonstrated on QuEra’s 256-qubit neutral atom quantum computer.
The near-term future promises a number of advancements. Something that everyone is looking forward to, of course, is better hardware. But the software layers of the stack have room for improvement, as well. Some of the best bets across the stack include:
The one thing not likely to change is how quantum computers are programmed. More programming languages may become options, but they will still be the familiar programming languages that are used for classical computation. The difference, again, is in the instructions provided to the target hardware. Of course, over time, libraries like Bloqade and Bloqade-Python will evolve higher-level abstractions that will make quantum coding easier, but the languages used, respectively, will remain the familiar Julia and Python.