Short description: Computer programming for quantum computers
Programming paradigms
Action
Agent-oriented
Array-oriented
Automata-based
Concurrent computing
Relativistic programming
Data-driven
Declarative (contrast: Imperative)
Functional
Functional logic
Purely functional
Logic
Abductive logic
Answer set
Concurrent logic
Functional logic
Inductive logic
Constraint
Constraint logic
Concurrent constraint logic
Dataflow
Flow-based
Reactive
Ontology
Differentiable
Dynamic/scripting
Event-driven
Function-level (contrast: Value-level)
Point-free style
Concatenative
Generic
Imperative (contrast: Declarative)
Procedural
Object-oriented
Polymorphic
Intentional
Language-oriented
Domain-specific
Literate
Natural-language programming
Metaprogramming
Automatic
Inductive programming
Reflective
Attribute-oriented
Macro
Template
Non-structured (contrast: Structured)
Array
Nondeterministic
Parallel computing
Process-oriented
Probabilistic
Quantum
Set-theoretic
Stack-based
Structured (contrast: Non-structured)
Block-structured
Structured concurrency
Object-oriented
Actor-based
Class-based
Concurrent
Prototype-based
By separation of concerns:
Aspect-oriented
Role-oriented
Subject-oriented
Recursive
Symbolic
Value-level (contrast: Function-level)
v
t
e
Quantum programming is the process of designing or assembling sequences of instructions, called quantum circuits, using gates, switches, and operators to manipulate a quantum system for a desired outcome or results of a given experiment. Quantum circuit algorithms can be implemented on integrated circuits, conducted with instrumentation, or written in a programming language for use with a quantum computer or a quantum processor.
With quantum processor based systems, quantum programming languages help express quantum algorithms using high-level constructs.[1] 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.[2]
Quantum computers, such as those based on the KLM protocol, a linear optical quantum computing (LOQC) model, use quantum algorithms (circuits) implemented with electronics, integrated circuits, instrumentation, sensors, and/or by other physical means.[not verified in body]
Other circuits designed for experimentation related to quantum systems can be instrumentation and sensor based.[not verified in body]
Contents
1Quantum instruction sets
1.1cQASM
1.2Quil
1.3OpenQASM
1.4Blackbird
2Quantum software development kits
2.1SDKs with access to quantum processors
2.1.1Perceval
2.1.2Ocean
2.1.3ProjectQ
2.1.4Qiskit
2.1.5Qibo
2.1.6Forest
2.1.7t|ket>
2.1.8Strawberry Fields
2.1.9PennyLane
2.1.10Quantum Development Kit
2.1.11Cirq
3Quantum programming languages
3.1Imperative languages
3.1.1Ket
3.1.2QCL
3.1.3Quantum pseudocode
3.1.4Q#
3.1.5Q|SI>
3.1.6Q language
3.1.7qGCL
3.1.8QMASM
3.1.9Scaffold
3.1.10Silq
3.1.11LQP
3.2Functional languages
3.2.1QFC and QPL
3.2.2QML
3.2.3LIQUi|>
3.2.4Quantum lambda calculi
3.2.5Quipper
4References
5Further reading
6External links
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 traps or superconducting qubits.
cQASM
cQASM,[3] 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
Main page: Quil (instruction set architecture)
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.[4] Many quantum algorithms (including quantum teleportation, quantum error correction, simulation,[5][6] and optimization algorithms[7]) require a shared memory architecture.
OpenQASM
Main page: OpenQASM
OpenQASM[8] is the intermediate representation introduced by IBM for use with Qiskit and the IBM Q Experience.
Blackbird
Blackbird[9][10] 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 kits provide collections of tools to create and manipulate quantum programs.[11] 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 kits can be used to run quantum circuits on prototype quantum devices, as well as on simulators.
Perceval
An open-source project created by Quandela [fr] for designing photonic quantum circuits and developing quantum algorithms, based on Python. Simulations are run either on the user's own computer or on the cloud. Perceval is also used to connect to Quandela's cloud-based photonic quantum processor.[12][13]
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.[citation needed]
A sample code using projectq with Python
ProjectQ
An Open Source project developed at the Institute for Theoretical Physics at ETH, which uses the Python programming language to create and manipulate quantum circuits.[14] Results are obtained either using a simulator, or by sending jobs to IBM quantum devices.
Qiskit
Main page: Software:Qiskit
An Open Source project developed by IBM.[15] Quantum circuits are created and manipulated using Python. 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.[16] Qiskit is based on the OpenQASM standard for representing quantum circuits. It also supports pulse level control of quantum systems via QiskitPulse standard.[17]
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. Qibo is a modular framework which includes multiple backends for quantum simulation and hardware control.[18][19] This project aims at providing a platform agnostic quantum hardware control framework with drivers for multiple instruments[20] and tools for quantum calibration, characterization and validation.[21] 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.[22] 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.[23]
Strawberry Fields
An open-source Python library developed by Xanadu Quantum Technologies for designing, simulating, and optimizing continuous variable (CV) quantum optical circuits.[24][25] Three simulators are provided - one in the Fock basis, one using the Gaussian formulation of quantum optics,[26] and one using the TensorFlow machine learning library. Strawberry Fields is also the library for executing programs on Xanadu's quantum photonic hardware.[27][28]
PennyLane
An open-source Python library developed by Xanadu Quantum Technologies for differentiable programming of quantum computers.[29][30][31][32] PennyLane provides users the ability to create models using TensorFlow, NumPy, or PyTorch, and connect them with quantum computer backends available from IBMQ, Google Quantum, Rigetti, Quantinuum[33] and Alpine Quantum Technologies.[34][35]
Quantum Development Kit
A project developed by Microsoft[36] as part of the .NET Framework. Quantum programs can be written and run within Visual Studio and VSCode using the quantum programming language Q#. Programs developed in the QDK can be run on Microsoft's Azure Quantum,[37] and run on quantum computers from Quantinuum,[33] IonQ, and Pasqal.[38]
Cirq
Main page: Cirq
An Open Source project developed by Google, which uses the Python programming language to create and manipulate quantum circuits. Programs written in Cirq can be run on IonQ, Pasqal,[38] Rigetti, and Alpine Quantum Technologies.[34]
Quantum programming languages
There are two main groups of quantum programming languages: imperative quantum programming languages and functional quantum programming languages.
Imperative languages
The most prominent representatives of the imperative languages are QCL,[39] LanQ[40] and Q|SI>.[41]
Ket
Ket[42] is an open-source embedded language designed to facilitate quantum programming, leveraging the familiar syntax and simplicity of Python. It serves as an integral component of the Ket Quantum Programming Platform,[43] seamlessly integrating with a Rust runtime library and a quantum simulator. Maintained by Quantuloop, the project emphasizes accessibility and versatility for researchers and developers. The following example demonstrates the implementation of a Bell state using Ket:
from ket import *
a, b = quant(2) # Allocate two quantum bits
H(a) # Put qubit `a` in a superposition
cnot(a, b) # Entangle the two qubits in the Bell state
m_a = measure(a) # Measure qubit `a`, collapsing qubit `b` as well
m_b = measure(b) # Measure qubit `b`
# Assert that the measurement of both qubits will always be equal
assert m_a.value == m_b.value
QCL
Main page: Quantum Computation Language
Quantum Computation Language (QCL) is one of the first implemented quantum programming languages.[44] 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 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#
Main page: Q Sharp
A language developed by Microsoft to be used with the Quantum Development Kit.[45]
Q|SI>
Q|SI> is a platform embedded in .Net language supporting quantum programming in a quantum extension of while-language.[41][46] This platform includes a compiler of the quantum while-language[47] and a chain of tools for the simulation of quantum computation, optimisation of quantum circuits, termination analysis of quantum programs,[48] and verification of quantum programs.[49][50]
Q language
Q Language is the second implemented imperative quantum programming language.[51] 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.[52]
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.[53][54]
Silq
Silq is a high-level programming language for quantum computing with a strong static type system, developed at ETH Zürich.[55][56]
LQP
The Logic of Quantum Programs (LQP) is a dynamic quantum logic, capable of expressing important features of quantum measurements and unitary evolutions of multi-partite states, and provides logical characterizations of various forms of entanglement. The logic has been used to specify and verify the correctness of various protocols in quantum computation.[57][58]
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,[59] and the Haskell-like language QML by Altenkirch and Grattage.[60][61] Higher-order quantum programming languages, based on lambda calculus, have been proposed by van Tonder,[62] Selinger and Valiron[63] and by Arrighi and Dowek.[64]
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-like quantum programming language by Altenkirch and Grattage.[65][60] 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 [math]\displaystyle{ |\phi\rangle }[/math] to [math]\displaystyle{ |\phi\rangle\otimes|\phi\rangle }[/math], and is not to be confused with the impossible operation of 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.[66]
LIQUi|>
LIQUi|> (pronounced liquid) is a quantum simulation extension on the F# programming language.[67] It is currently being developed by the Quantum Architectures and Computation Group (QuArC)[68] 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.[69]
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.[70]
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.[71]
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[citation needed].
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.[72]
In 2004, Selinger and Valiron defined a strongly typed lambda calculus for quantum computation with a type system based on linear logic.[73]
Quipper
Quipper was published in 2013.[74][75] It is implemented as an embedded language, using Haskell as the host language.[76] For this reason, quantum programs written in Quipper are written in 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
References
↑Jarosław Adam Miszczak (2012). High-level Structures in Quantum Computing. Morgan & Claypool Publishers. ISBN 9781608458516.
↑"Comprehensive list of quantum open-source projects". https://github.com/qosf/awesome-quantum-software.
↑Bertels, K.; Almudever, C. G.; Hogaboam, J. W.; Ashraf, I.; Guerreschi, G. G.; Khammassi, N. (2018-05-24). "cQASM v1.0: Towards a Common Quantum Assembly Language". arXiv:1805.09607v1 [quant-ph].
↑Smith, Robert S.; Curtis, Michael J.; Zeng, William J. (2016). "A Practical Quantum Instruction Set Architecture". arXiv:1608.03355 [quant-ph].
↑McClean, Jarrod R.; Romero, Jonathan; Babbush, Ryan; Aspuru-Guzik, Alán (2016-02-04). "The theory of variational hybrid quantum-classical algorithms". New Journal of Physics18 (2): 023023. doi:10.1088/1367-2630/18/2/023023. ISSN 1367-2630. Bibcode: 2016NJPh...18b3023M.
↑Rubin, Nicholas C.; Curtis, Michael J.; Zeng, William J. (2016). "A Hybrid Classical/Quantum Approach for Large-Scale Studies of Quantum Systems with Density Matrix Embedding Theory". arXiv:1610.06910 [quant-ph].
↑Farhi, Edward; Goldstone, Jeffrey; Gutmann, Sam (2014). "A Quantum Approximate Optimization Algorithm". arXiv:1411.4028 [quant-ph].
↑qiskit-openqasm: OpenQASM specification, International Business Machines, 2017-07-04, https://github.com/IBM/qiskit-openqasm, retrieved 2017-07-06
↑"Blackbird Quantum Assembly Language — Blackbird 0.2.0 documentation". https://quantum-blackbird.readthedocs.io/en/latest/.
↑Weedbrook, Christian; Amy, Matthew; Bergholm, Ville; Quesada, Nicolás; Izaac, Josh; Killoran, Nathan (2019-03-11). "Strawberry Fields: A Software Platform for Photonic Quantum Computing" (in en-GB). Quantum3: 129. doi:10.22331/q-2019-03-11-129. Bibcode: 2019Quant...3..129K.
↑Häner, Thomas; Steiger, Damian S.; Svore, Krysta; Troyer, Matthias (2018). "A software methodology for compiling quantum programs". Quantum Science and Technology3 (2): 020501. doi:10.1088/2058-9565/aaa5cc. ISSN 2058-9565. Bibcode: 2018QS&T....3b0501H.
↑"La puissance d'un ordinateur quantique testée en ligne (The power of a quantum computer tested online)". Le Monde.fr (Le Monde). November 22, 2022. https://www.lemonde.fr/sciences/article/2022/11/22/la-puissance-d-un-ordinateur-quantique-testee-en-ligne_6151063_1650684.html.
↑Heurtel, Nicolas; Fyrillas, Andreas; de Gliniasty, Grégoire; Le Bihan, Raphaël; Malherbe, Sébastien; Pailhas, Marceau; Bertasi, Eric; Bourdoncle, Boris et al. (February 21, 2023). "Perceval: A Software Platform for Discrete Variable Photonic Quantum Computing". Quantum7: 931. doi:10.22331/q-2023-02-21-931. Bibcode: 2023Quant...7..931H. https://quantum-journal.org/papers/q-2023-02-21-931/.
↑"Home". https://projectq.ch/.
↑"qiskit.org". https://qiskit.org/.
↑"Qiskit Overview". https://qiskit.org/overview/.
↑McKay, David C.; Alexander, Thomas; Bello, Luciano; Biercuk, Michael J.; Bishop, Lev; Chen, Jiayin; Chow, Jerry M.; Córcoles, Antonio D.; Egger, Daniel; Filipp, Stefan; Gomez, Juan; Hush, Michael; Javadi-Abhari, Ali; Moreda, Diego; Nation, Paul; Paulovicks, Brent; Winston, Erick; Wood, Christopher J.; Wootton, James; Gambetta, Jay M. (2018). "Qiskit Backend Specifications for OpenQASM and OpenPulse Experiments". arXiv:1809.03452 [quant-ph].
↑Efthymiou, Stavros; Ramos-Calderer, Sergi; Bravo-Prieto, Carlos; Pérez-Salinas, Adrián; García-Martín, Diego; Garcia-Saez, Artur; Latorre, José Ignacio; Carrazza, Stefano (2022-01-01). "Qibo: a framework for quantum simulation with hardware acceleration". Quantum Science and Technology7 (1): 015018. doi:10.1088/2058-9565/ac39f5. ISSN 2058-9565. Bibcode: 2022QS&T....7a5018E. https://iopscience.iop.org/article/10.1088/2058-9565/ac39f5.
↑"In the Race to Hundreds of Qubits, Photons May Have "Quantum Advantage"" (in en). 5 March 2021. https://spectrum.ieee.org/tech-talk/computing/hardware/race-to-hundreds-of-photonic-qubits-xanadu-scalable-photon.
↑"AWS joins PennyLane, an open-source framework that melds machine learning with quantum computing" (in en-US). 2021-02-17. https://siliconangle.com/2021/02/17/aws-throws-weight-behind-pennylane-open-source-framework-melds-machine-learning-quantum-computing/.
↑"SD Times Open-Source Project of the Week: PennyLane" (in en-US). 2021-02-26. https://sdtimes.com/open-source/sd-times-open-source-project-of-the-week-pennylane/.
↑Salamone, Salvatore (2020-12-13). "Real-time Analytics News Roundup for Week Ending December 12" (in en-US). https://www.rtinsights.com/real-time-analytics-news-roundup-for-week-ending-december-12/.
↑Da Rosa, Evandro Chagas Ribeiro; De Santiago, Rafael (2022-01-31). "Ket Quantum Programming" (in en). ACM Journal on Emerging Technologies in Computing Systems18 (1): 1–25. doi:10.1145/3474224. ISSN 1550-4832. https://dl.acm.org/doi/10.1145/3474224.
↑"Ket Quantum Programming" (in en). https://quantumket.org.
↑"QCL - A Programming Language for Quantum Computers". http://tph.tuwien.ac.at/~oemer/qcl.html.
↑"Introduction to Q# & Quantum Development Kit - Azure Quantum". March 30, 2023. https://learn.microsoft.com/en-us/azure/quantum/overview-what-is-qsharp-and-qdk.
↑Litteken, Andrew (28 May 2020). "An updated LLVM-based quantum research compiler with further OpenQASM support". Quantum Science and Technology5 (3): 034013. doi:10.1088/2058-9565/ab8c2c. Bibcode: 2020QS&T....5c4013L.
↑"What is Silq?". https://silq.ethz.ch/.
↑Bichsel, Benjamin; Baader, Maximilian; Gehr, Timon; Vechev, Martin (2020-06-11). "Silq: A high-level quantum language with safe uncomputation and intuitive semantics" (in en). Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation. London UK: ACM. pp. 286–300. doi:10.1145/3385412.3386007. ISBN 978-1-4503-7613-6.
↑A. Baltag and S. Smets, "LQP: The Dynamic Logic of Quantum Information", Mathematical Structures in Computer Science 16(3):491-525, 2006.
↑Peter Selinger, "Towards a quantum programming language", Mathematical Structures in Computer Science 14(4):527-586, 2004.
↑ 60.060.1Jonathan Grattage: QML Research (website)
↑T. Altenkirch, V. Belavkin, J. Grattage, A. Green, A. Sabry, J. K. Vizzotto, QML: A Functional Quantum Programming Language (website)
↑Andre van Tonder, "A Lambda Calculus for Quantum Computation", SIAM J. Comput., 33(5), 1109–1135. (27 pages), 2004. Also available from arXiv:quant-ph/0307150
↑Peter Selinger and Benoît Valiron, "A lambda calculus for quantum computation with classical control", Mathematical Structures in Computer Science 16(3):527-552, 2006.
↑"QML: A Functional Quantum Programming Language". 2007-09-26. http://sneezy.cs.nott.ac.uk/QML/.
↑Jonathan Grattage, QML: A Functional Quantum Programming Language (compiler) , 2005–2008
↑"The Language Integrated Quantum Operations Simulator". https://stationq.github.io/Liquid/.
↑Quantum Architectures and Computation Group (QuArC), https://www.microsoft.com/en-us/research/group/quantum-architectures-and-computation-group-quarc/, 2011
↑"The Quipper Language (website)". http://www.mathstat.dal.ca/~selinger/quipper/.
↑Alexander S. Green; Peter LeFanu Lumsdaine; Neil J. Ross; Peter Selinger; Benoît Valiron (2013). "An Introduction to Quantum Programming in Quipper". Reversible Computation. Lecture Notes in Computer Science. 7948. pp. 110–124. doi:10.1007/978-3-642-38986-3_10. ISBN 978-3-642-38985-6.
Further reading
Mingsheng, Ying (2016). Foundations of quantum programming. Cambridge, MA. ISBN 978-0128025468. OCLC 945735387.
External links
Curated list of all quantum open-source software projects
Bibliography on Quantum Programming Languages (updated in May 2007)
Quantum Physics and Logic (QPL) Conference Series (L stood for 'Languages' until 2006)
Quantum programming language in Quantiki
QMASM documentation
pyQuil documentation including Introduction to Quantum Computing
Scaffold Source
v
t
e
Quantum information science
General
Quantum computing
Qubit
physical vs. logical
DiVincenzo's criteria
Quantum information
Quantum programming
Quantum processors
Cloud-based quantum computing
Timeline of quantum computing
Theorems
Bell's theorem
Gleason's theorem
Gottesman–Knill theorem
Holevo's theorem
Margolus–Levitin theorem
No-broadcast theorem
No-cloning theorem
No-communication theorem
No-deleting theorem
No-hiding theorem
No-teleportation theorem
PBR theorem
Quantum threshold theorem
Quantum communication
Quantum capacity
Classical capacity
Entanglement-assisted classical capacity
Quantum channel
Quantum network
Quantum cryptography
Quantum key distribution
BB84
SARG04
Three-stage quantum cryptography protocol
Quantum teleportation
Superdense coding
LOCC
Entanglement distillation
Quantum algorithms
Universal quantum simulator
Deutsch–Jozsa algorithm
Grover's algorithm
Quantum Fourier transform
Shor's algorithm
Simon's problem
Quantum phase estimation algorithm
Quantum counting algorithm
Quantum annealing
Quantum algorithm for linear systems of equations
Amplitude amplification
Quantum complexity theory
Quantum Turing machine
EQP
BQP
QMA
PostBQP
QIP
Quantum computing models
Quantum circuit
Quantum logic gate
One-way quantum computer
cluster state
Adiabatic quantum computation
Topological quantum computer
Quantum error correction
Stabilizer codes
Entanglement-Assisted Quantum Error Correction
Shor code
Steane code
CSS code
Quantum convolutional codes
Toric code
Physical implementations
Quantum optics
Cavity QED
Circuit QED
Linear optical quantum computing
KLM protocol
Boson sampling
Ultracold atoms
Trapped ion quantum computer
Optical lattice
Spin-based
Nuclear magnetic resonance QC
Kane QC
Loss–DiVincenzo QC
Nitrogen-vacancy center
Superconducting quantum computing
Charge qubit
Flux qubit
Phase qubit
Transmon
Software
libquantum
OpenQASM
Q#
Qiskit
IBM Q Experience
v
t
e
Emerging technologies
Fields
Agriculture
Agricultural robot
Cellular agriculture
Closed ecological systems
Cultured meat
Genetically modified food
Precision agriculture
Vertical farming
Architecture
Arcology
Building printing
Contour crafting
Domed city
Biomedical
Artificial uterus
Ampakine
Brain transplant
Cryonics
Cryoprotectant
Cryopreservation
Vitrification
Suspended animation
De-extinction
Genetic engineering
Gene therapy
Head transplant
Isolated brain
Life extension
Strategies for Engineered Negligible Senescence
Nanomedicine
Nanosensors
Organ printing
Personalized medicine
Regenerative medicine
Stem-cell therapy
Tissue engineering
Robot-assisted surgery
Synthetic biology
Synthetic genomics
Virotherapy
Oncolytic virus
Tricorder
Whole genome sequencing
Displays
Next generation
FED
FLCD
iMoD
Laser
LPD
OLED
OLET
QD-LED
SED
TPD
TDEL
TMOS
MicroLED
Screenless
Bionic contact lens
Head-mounted display
Head-up display
Optical head-mounted display
Virtual retinal display
Other
Autostereoscopy
Flexible display
Holographic display
Computer-generated holography
Multi-primary color display
Ultra HD
Volumetric display
Electronics
Electronic nose
E-textiles
Flexible electronics
Molecular electronics
Nanoelectromechanical systems
Memristor
Spintronics
Thermal copper pillar bump
Twistronics
Energy
Production
Airborne wind turbine
Artificial photosynthesis
Biofuels
Carbon-neutral fuel
Concentrated solar power
Fusion power
Home fuel cell
Hydrogen economy
Methanol economy
Molten salt reactor
Nantenna
Photovoltaic pavement
Space-based solar power
Vortex engine
Storage
Beltway battery
Compressed air energy storage
Flywheel energy storage
Grid energy storage
Lithium–air battery
Molten-salt battery
Nanowire battery
Research in lithium-ion batteries
Silicon–air battery
Thermal energy storage
Ultracapacitor
Other
Smart grid
Wireless power
Information and communications
Ambient intelligence
Internet of things
Artificial intelligence
Applications of artificial intelligence
Progress in artificial intelligence
Machine translation
Mobile translation
Machine vision
Semantic Web
Speech recognition
Atomtronics
Carbon nanotube field-effect transistor
Cybermethodology
Fourth-generation optical discs
3D optical data storage
Holographic data storage
GPGPU
Memory
CBRAM
FRAM
Millipede
MRAM
NRAM
PRAM
Racetrack memory
RRAM
SONOS
Optical computing
RFID
Chipless RFID
Software-defined radio
Three-dimensional integrated circuit
Manufacturing
3D printing
Claytronics
Molecular assembler
Utility fog
Materials science
Aerogel
Amorphous metal
Artificial muscle
Conductive polymer
Femtotechnology
Fullerene
Graphene
High-temperature superconductivity
High-temperature superfluidity
Linear acetylenic carbon
Metamaterials
Metamaterial cloaking
Metal foam
Multi-function structures
Nanotechnology
Carbon nanotubes
Molecular nanotechnology
Nanomaterials
Picotechnology
Programmable matter
Quantum dots
Silicene
Superalloy
Synthetic diamond
Military
Antimatter weapon
Caseless ammunition
Directed-energy weapon
Laser
Maser
Particle-beam weapon
Sonic weapon
Coilgun
Railgun
Plasma weapon
Pure fusion weapon
Stealth technology
Vortex ring gun
Neuroscience
Artificial brain
Brain–computer interface
Electroencephalography
Mind uploading
Brain-reading
Neuroinformatics
Neuroprosthetics
Bionic eye
Brain implant
Exocortex
Retinal implant
Quantum
Quantum algorithms
Quantum amplifier
Quantum bus
Quantum channel
Quantum circuit
Quantum complexity theory
Quantum computing
Quantum cryptography
Quantum dynamics
Quantum electronics
Quantum error correction
Quantum imaging
Quantum information
Quantum key distribution
Quantum logic
Quantum logic gates
Quantum machine
Quantum machine learning
Quantum metamaterial
Quantum metrology
Quantum network
Quantum neural network
Quantum optics
Quantum programming
Quantum sensing
Quantum simulator
Quantum teleportation
Robotics
Domotics
Nanorobotics
Powered exoskeleton
Self-reconfiguring modular robot
Swarm robotics
Uncrewed vehicle
Space science
Launch
Fusion rocket
Non-rocket spacelaunch
Mass driver
Orbital ring
Skyhook
Space elevator
Space fountain
Space tether
Reusable launch system
Propulsion
Beam-powered propulsion
Ion thruster
Laser propulsion
Plasma propulsion engine
Helicon thruster
VASIMR
Nuclear pulse propulsion
Solar sail
Other
Interstellar travel
Propellant depot
Laser communication in space
Transport
Aerial
Adaptive compliant wing
Backpack helicopter
Delivery drone
Flying car
High-altitude platform
Jet pack
Pulse detonation engine
Scramjet
Spaceplane
Supersonic transport
Land
Airless tire
Alternative fuel vehicle
Hydrogen vehicle
Driverless car
Ground effect train
Hyperloop
Maglev train
Personal rapid transit
Transit Elevated Bus
Vactrain
Vehicular communication systems
Pipeline
Pneumatic transport
Automated vacuum collection
Other
Anti-gravity
Cloak of invisibility
Digital scent technology
Force field
Plasma window
Immersive virtual reality
Magnetic refrigeration
Phased-array optics
Topics
Collingridge dilemma
Differential technological development
Disruptive Innovation
Ephemeralization
Exploratory engineering
Fictional technology
Proactionary principle
Technological change
Technological unemployment
Technological convergence
Technological evolution
Technological paradigm
Technology forecasting
Accelerating change
Moore's law
Technological singularity
Technology scouting
Technology readiness level
Technology roadmap
Transhumanism
Category
List
0.00
(0 votes)
Original source: https://en.wikipedia.org/wiki/Quantum programming. Read more