Top
Image credit: Unsplash

What You Need to Know About Quantum Software Development

October 29, 2020

Category:

Though quantum computers have been around for some time, it is a common misconception that they are not ready for applications and that it will take many years before the technology becomes useful. The new technology already showed great potential in solving real-life complex computational problems that cannot be solved by even the most powerful classical supercomputers. In this article, we will take a look at some basic principles of quantum software any programmer should know. 

How Does Quantum Computing Work?

Before talking about software, it is crucial to understand how quantum computers work. Their outstanding computing power is obtained by harnessing the power of quantum mechanics. As opposed to the bits used by classical computers, a quantum computer uses quantum bits or qubits. While the classical bits can only be a 0 or a 1, qubits can exist in combinations of 0 and 1. This is known as superposition and means that individual qubits have at their disposal a range of states that are not available to classical systems. 

While superposition makes qubits interesting, their real superpower is the ability to become entangled. Entangled qubits affect each other instantly when measured, no matter how far apart they are. Together, superposition and entanglement can be harnessed for quantum computation. Quantum software plays a critical role in exploiting the full potential of quantum computing systems. 

Understanding Quantum Software

According to a paper published by Kyushu University, “Quantum computing is not only a technological advancement, but can also be considered as a new general-purpose paradigm for software development, which can radically influence the way a software system is conceived and developed. This calls for new, quantum-specific, software engineering approaches.” 

A quantum program consists of blocks of code, with each block containing classical and quantum components. Quantum operations can be divided into unitary operations (reversible and preserving the norm of the operands), and non-unitary operations (not reversible and having probabilistic implementations). A quantum program executed on a quantum computer uses a quantum register of qubits to perform quantum operations and a classical register of classic bits to record the measurements of the qubits’ states and apply quantum operators conditionally. According to the same paper, a typical quantum program usually consists of two types of instructions: classical instructions operating on the state of classical bits and applying conditional statements, and quantum instructions that operate on the state of qubits and measure the qubit values.

There are 2 main types of quantum software:

Programs running quantum algorithms for end-users: Lately, more and more companies have started designing development kits and computational platforms for those who wish to test their quantum algorithms. 

The software enabling quantum computers to function: Error-correcting software that increases the stability of quantum computers.

Top Quantum Software Development Kits

Companies and universities are rapidly developing open-source quantum software development kits. These kits provide the tools that software engineers need to solve their own problems and enable them to access the simulators or quantum computers to implement their quantum algorithms through cloud services.

Some use classic programming languages, such as Python, while others use quantum software languages. Examples of quantum development kits: Microsoft-QDK, Google-Cirq, Zapata-Orquestra, IBM-Qiskit, ETH Zurich-ProjectQ, Riverlane-Anian, Rigetti-Forest, D-Wave-Ocean, Amazon-Braket SDK. 

The first quantum-focused programming language is Q#, developed by Microsoft. The tech giant claims its Quantum Development Kit is the fastest path to quantum development. 

ETH Zurich, the Switzerland-based public research university, announced in June 2020, “the first intuitive programming language for quantum computers”. “Our quantum programming language Silq allows programmers to utilize the potential of quantum computers better than with existing languages because the code is more compact, faster, more intuitive and easier to understand for programmers,” said Martin Vechev, a computer science professor at ETH’s Secure, Reliable and Intelligent Systems Lab.

IBM’s Qiskit is an open-source SDK that allows software engineers to execute code on multiple quantum hardware architectures, from superconducting qubits to trapped-ions. The Qiskit free digital textbook makes IBM’s quantum software development kit an excellent choice for beginners.

Advanced programmers can use Qrquestra, developed by Zapata Computing, a tool that claims to bring together quantum software libraries and hardware back ends in one modular, workflow-based toolset. The company is working in close collaboration across the quantum ecosystem, including partnerships with Amazon, Google, Honeywell, IBM, Microsoft, Rigetti, and others. 

Quantum computing is a rapidly developing field that is expected to make breakthroughs in many areas. As this new technology will be available for more businesses and the need for programmers will rise, it’s a good idea to start your quantum software engineering path right now.