Quantum programming
   HOME

TheInfoList



OR:

Quantum programming is the process of assembling sequences of instructions, called quantum circuits, that are capable of running on a quantum computer. Quantum
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
s help express quantum algorithms using high-level constructs. The field is deeply rooted in the open-source philosophy and as a result most of the quantum software discussed in this article is freely available as
open-source software Open-source software (OSS) is computer software that is released under a license in which the copyright holder grants users the rights to use, study, change, and distribute the software and its source code to anyone and for any purpose. Op ...
.


Quantum instruction sets

Quantum instruction sets are used to turn higher level algorithms into physical instructions that can be executed on quantum processors. Sometimes these instructions are specific to a given hardware platform, e.g.
ion trap An ion trap is a combination of electric and/or magnetic fields used to capture charged particles — known as ions — often in a system isolated from an external environment. Atomic and molecular ion traps have a number of applications in phy ...
s or superconducting qubits.


cQASM

cQASM, also known as common QASM, is a hardware-agnostic quantum assembly language which guarantees the interoperability between all the quantum compilation and simulation tools. It was introduced by the QCA Lab at TUDelft.


Quil

Quil is an instruction set architecture for quantum computing that first introduced a shared quantum/classical memory model. It was introduced by Robert Smith, Michael Curtis, and William Zeng in ''A Practical Quantum Instruction Set Architecture''. Many quantum algorithms (including quantum teleportation, quantum error correction, simulation, and optimization algorithms) require a shared memory architecture.


OpenQASM

OpenQASM is the intermediate representation introduced by IBM for use with Qiskit and the IBM Q Experience.


Blackbird

Blackbird is a quantum instruction set and intermediate representation used by Xanadu Quantum Technologies and Strawberry Fields. It is designed to represent continuous-variable quantum programs that can run on photonic quantum hardware.


Quantum software development kits

Quantum
software development kit A software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific ...
s provide collections of tools to create and manipulate quantum programs. They also provide the means to simulate the quantum programs or prepare them to be run using cloud-based quantum devices and self-hosted quantum devices.


SDKs with access to quantum processors

The following
software development kit A software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific ...
s can be used to run quantum circuits on prototype quantum devices, as well as on simulators. Ocean An Open Source suite of tools developed by D-Wave. Written mostly in the Python programming language, it enables users to formulate problems in Ising Model and Quadratic Unconstrained Binary Optimization formats (QUBO). Results can be obtained by submitting to an online quantum computer in Leap, D-Wave's real-time Quantum Application Environment, customer-owned machines, or classical samplers.


ProjectQ

An Open Source project developed at the Institute for Theoretical Physics at
ETH (colloquially) , former_name = eidgenössische polytechnische Schule , image = ETHZ.JPG , image_size = , established = , type = Public , budget = CHF 1.896 billion (2021) , rector = Günther Dissertori , president = Joël Mesot , a ...
, which uses the Python programming language to create and manipulate quantum circuits. Results are obtained either using a simulator, or by sending jobs to IBM quantum devices.


Qiskit

An Open Source project developed by IBM. Quantum circuits are created and manipulated using
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
. Results are obtained either using simulators that run on the user's own device, simulators provided by IBM or prototype quantum devices provided by IBM. As well as the ability to create programs using basic quantum operations, higher level tools for algorithms and benchmarking are available within specialized packages. Qiskit is based on the OpenQASM standard for representing quantum circuits. It also supports pulse level control of quantum systems via QiskitPulse standard.


Qibo

An Open Source full-stack API for quantum simulation, quantum hardware control and calibration developed by multiple research laboratories, including QRC, CQT and
INFN The Istituto Nazionale di Fisica Nucleare (INFN; "National Institute for Nuclear Physics") is the coordinating institution for nuclear, particle, theoretical and astroparticle physics in Italy. History INFN was founded on 8 August 1951, to furt ...

Qibo
is a modular framework which includes multiple backends for quantum simulation and hardware control. This project aims at providing a platform agnostic quantum hardware control framework with drivers for multiple instruments and tools for quantum calibration, characterization and validation. This framework focuses on self-hosted quantum devices by simplifying the software development required in labs.


Forest

An Open Source project developed by Rigetti, which uses the Python programming language to create and manipulate quantum circuits. Results are obtained either using simulators or prototype quantum devices provided by Rigetti. As well as the ability to create programs using basic quantum operations, higher level algorithms are available within the Grove package. Forest is based on the Quil instruction set.


t, ket>

A quantum programming environment and optimizing compiler developed by Cambridge Quantum Computing that targets simulators and several quantum hardware back-ends, released in December 2018.


Strawberry Fields

An open-source
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
library developed by Xanadu Quantum Technologies for designing, simulating, and optimizing continuous variable (CV) quantum optical circuits. Three simulators are provided - one in the Fock basis, one using the Gaussian formulation of quantum optics, and one using the
TensorFlow TensorFlow is a free and open-source software library for machine learning and artificial intelligence. It can be used across a range of tasks but has a particular focus on training and inference of deep neural networks. "It is machine learnin ...
machine learning library. Strawberry Fields is also the library for executing programs on Xanadu's quantum photonic hardware.


PennyLane

An open-source
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
library developed by Xanadu Quantum Technologies for
differentiable programming Differentiable programming is a programming paradigm in which a numeric computer program can be differentiated throughout via automatic differentiation. This allows for gradient-based optimization of parameters in the program, often via grad ...
of quantum computers. PennyLane provides users the ability to create models using
TensorFlow TensorFlow is a free and open-source software library for machine learning and artificial intelligence. It can be used across a range of tasks but has a particular focus on training and inference of deep neural networks. "It is machine learnin ...
, NumPy, or
PyTorch PyTorch is a machine learning framework based on the Torch library, used for applications such as computer vision and natural language processing, originally developed by Meta AI and now part of the Linux Foundation umbrella. It is free and open ...
, and connect them with quantum computer backends available from IBMQ, Google Quantum, Rigetti, Quantinuum and Alpine Quantum Technologies.


Quantum Development Kit

A project developed by
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washin ...
as part of the
.NET Framework The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
. Quantum programs can be written and run within
Visual Studio Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such ...
and VSCode using the quantum programming language Q#. Programs developed in the QDK can be run on Microsoft's Azure Quantum, and run on quantum computers from Quantinuum,
IonQ IonQ is a quantum computing hardware and software company based in College Park, Maryland. They are developing a general-purpose trapped ion quantum computer and software to generate, optimize, and execute quantum circuits. History IonQ was co-f ...
, and Pasqal.


Cirq

An Open Source project developed by
Google Google LLC () is an American Multinational corporation, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
, which uses the Python programming language to create and manipulate quantum circuits. Programs written in Cirq can be run on
IonQ IonQ is a quantum computing hardware and software company based in College Park, Maryland. They are developing a general-purpose trapped ion quantum computer and software to generate, optimize, and execute quantum circuits. History IonQ was co-f ...
, Pasqal, Rigetti, and Alpine Quantum Technologies.


Quantum programming languages

There are two main groups of quantum programming languages: Imperative programming, imperative quantum programming languages and Functional programming, functional quantum programming languages.


Imperative languages

The most prominent representatives of the imperative languages are QCL, LanQ and Q, SI>.


QCL

Quantum Computation Language (QCL) is one of the first implemented quantum programming languages. The most important feature of QCL is the support for user-defined operators and functions. Its syntax resembles the syntax of the C (programming language), C programming language and its classical data types are similar to primitive data types in C. One can combine classical code and quantum code in the same program.


Quantum pseudocode

Quantum pseudocode proposed by E. Knill is the first formalized language for description of quantum algorithms. It was introduced and, moreover, was tightly connected with a model of quantum machine called Quantum Random Access Machine (QRAM).


Q#

A language developed by
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washin ...
to be used with the #Quantum Development Kit, Quantum Development Kit.


Q, SI>

Q, SI> is a platform embedded in .NET Framework, .Net language supporting quantum programming in a quantum extension of while-language. This platform includes a compiler of the quantum while-language and a chain of tools for the simulation of quantum computation, optimisation of quantum circuits, termination analysis of quantum programs, and verification of quantum programs.


Q language

Q Language is the second implemented imperative quantum programming language. Q Language was implemented as an extension of C++ programming language. It provides classes for basic quantum operations like QHadamard, QFourier, QNot, and QSwap, which are derived from the base class Qop. New operators can be defined using C++ class mechanism. Quantum memory is represented by class Qreg. Qreg x1; // 1-qubit quantum register with initial value 0 Qreg x2(2,0); // 2-qubit quantum register with initial value 0 The computation process is executed using a provided simulator. Noisy environments can be simulated using parameters of the simulator.


qGCL

Quantum Guarded Command Language (qGCL) was defined by P. Zuliani in his PhD thesis. It is based on Guarded Command Language created by Edsger Dijkstra. It can be described as a language of quantum programs specification.


QMASM

Quantum Macro Assembler (QMASM) is a low-level language specific to quantum annealers such as the D-Wave.


Scaffold

Scaffold is C-like language, that compiles to QASM and OpenQASM. It is built on top of the LLVM Compiler Infrastructure to perform optimizations on Scaffold code before generating a specified instruction set.


Silq

Silq is a high-level programming language for quantum computing with a strong static type system, developed at ETH Zurich, ETH Zürich.


Functional languages

Efforts are underway to develop functional programming languages for quantum computing. Functional programming languages are well-suited for reasoning about programs. Examples include Selinger's QPL,Peter Selinger
"Towards a quantum programming language"
Mathematical Structures in Computer Science 14(4):527-586, 2004.
and the Haskell (programming language), Haskell-like language QML by Altenkirch and Grattage.Jonathan Grattage: QML Research
(website)
T. Altenkirch, V. Belavkin, J. Grattage, A. Green, A. Sabry, J. K. Vizzotto
QML: A Functional Quantum Programming Language
(website)
Higher-order quantum programming languages, based on lambda calculus, have been proposed by van Tonder, Selinger and Valiron and by Arrighi and Dowek.


QFC and QPL

QFC and QPL are two closely related quantum programming languages defined by Peter Selinger. They differ only in their syntax: QFC uses a flow chart syntax, whereas QPL uses a textual syntax. These languages have classical control flow but can operate on quantum or classical data. Selinger gives a denotational semantics for these languages in a category of superoperators.


QML

QML is a Haskell (programming language), Haskell-like quantum programming language by Altenkirch and Grattage. Unlike Selinger's QPL, this language takes duplication, rather than discarding, of quantum information as a primitive operation. Duplication in this context is understood to be the operation that maps , \phi\rangle to , \phi\rangle\otimes, \phi\rangle, and is not to be confused with the impossible operation of no-cloning theorem, cloning; the authors claim it is akin to how sharing is modeled in classical languages. QML also introduces both classical and quantum control operators, whereas most other languages rely on classical control. An operational semantics for QML is given in terms of quantum circuits, while a denotational semantics is presented in terms of superoperators, and these are shown to agree. Both the operational and denotational semantics have been implemented (classically) in Haskell.


LIQUi, >

LIQUi, > (pronounced ''liquid'') is a quantum simulation extension on the F Sharp (programming language), F# programming language. It is currently being developed by the Quantum Architectures and Computation Group (QuArC) part of the StationQ efforts at Microsoft Research. LIQUi, > seeks to allow theorists to experiment with quantum algorithm design before physical quantum computers are available for use. It includes a programming language, optimization and scheduling algorithms, and quantum simulators. LIQUi, > can be used to translate a quantum algorithm written in the form of a high-level program into the low-level machine instructions for a quantum device.


Quantum lambda calculi

Quantum lambda calculi are extensions of the classical lambda calculus introduced by Alonzo Church and Stephen Cole Kleene in the 1930s. The purpose of quantum lambda calculi is to extend quantum programming languages with a theory of higher-order functions. The first attempt to define a quantum lambda calculus was made by Philip Maymin in 1996. His lambda-q calculus is powerful enough to express any quantum computation. However, this language can efficiently solve NP-complete problems, and therefore appears to be strictly stronger than the standard quantum computational models (such as the quantum Turing machine or the quantum circuit model). Therefore, Maymin's lambda-q calculus is probably not implementable on a physical device . In 2003, André van Tonder defined an extension of the lambda calculus suitable for proving correctness of quantum programs. He also provided an implementation in the Scheme (programming language), Scheme programming language. In 2004, Selinger and Valiron defined a strongly typed lambda calculus for quantum computation with a type system based on linear logic.


Quipper

Quipper was published in 2013. It is implemented as an embedded language, using Haskell (programming language), Haskell as the host language. For this reason, quantum programs written in Quipper are written in Haskell (programming language), Haskell using provided libraries. For example, the following code implements preparation of a superposition import Quipper spos :: Bool -> Circ Qubit spos b = do q <- qinit b r <- hadamard q return r


funQ

A group of undergraduate students at Chalmers University of Technology developed a functional quantum programming language in 2021. It is inspired by the quantum typed lambda calculus by Selinger and Valiron.Nicklas Botö, Fabian Forslund, Matilda Blomqvist, Beata Burreau, Marcus Jörgensson, Joel Rudsber
"funQ - Functional Quantum Programming"
/ref> The underlying quantum simulator is a part of a Haskell library by the same name. The following code implements superposition in funQ spos : !(Bit -o QBit) spos b = H (new b) The same example in the Haskell library would be import FunQ spos :: Bit -> QM QBit spos b = hadamard =<< new b


References


Further reading

*


External links


Curated list
of all quantum open-source software projects
Bibliography on Quantum Programming Languages
(updated in May 2007)


4th International Workshop on Quantum Programming Languages

3rd International Workshop on Quantum Programming Languages

2nd International Workshop on Quantum Programming Languages

Quantum programming language
i
Quantiki

QMASM documentation
includin


Scaffold Source
{{emerging technologies, quantum=yes, other=yes Quantum programming, Programming language classification Programming paradigms Quantum computing