'''Quantum programming''' is the process of designing or [[Assembly language|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 computing|quantum computer]] or a quantum processor.
With quantum processor based systems, quantum [[programming language]]s help express [[quantum algorithm]]s using high-level constructs.<ref>{{Cite book| author=Jarosław Adam Miszczak |title= High-level Structures in Quantum Computing | isbn=9781608458516|year= 2012 |publisher= Morgan & Claypool Publishers }}</ref> The field is deeply rooted in the [[Open source|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]].<ref>{{Cite web|url=https://github.com/qosf/awesome-quantum-software|title=Comprehensive list of quantum open-source projects|website=Github|access-date=2022-01-27}}</ref>
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|date=June 2023}}
==== Ocean ====
An Open[[open Sourcesource]] 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|date=June 2021}}
[[File:QProg1-Refreshed.png|thumb|350x350px|A sample code using projectq with Python]]
==== ProjectQ ====
An [[Openopen Source]]source project developed at the Institute for Theoretical Physics at [[ETH]], which uses the [[Python programming]] language to create and manipulate quantum circuits.<ref>{{Cite web|url=https://projectq.ch/|title=Home}}</ref> Results are obtained either using a simulator, or by sending jobs to IBM quantum devices.
==== Qrisp ====
[[Eclipse Qrisp|Qrisp]]<ref>{{cite web|title = Qrisp official website|url=https://www.qrisp.eu/}}</ref> is an [[Openopen Source]]source project coordinated by the [[Eclipse Foundation]]<ref>{{cite web |title=Eclipse Foundation (website) |url=https://www.eclipse.org/org/foundation/}}</ref> and developed in [[Python programming]] by [[Fraunhofer FOKUS]]<ref>{{cite web |title=Fraunhofer FOKUS (website) |url=https://www.fokus.fraunhofer.de/}}</ref>
Qrisp is a high-level programming language for creating and compiling quantum algorithms. Its structured programming model enables scalable development and maintenance. The expressive syntax is based on variables instead of qubits, with the QuantumVariable as core class, and functions instead of gates. Additional tools, such as a performant simulator and automatic uncomputation, complement the extensive framework.
Furthermore, it is platform independent, since it offers alternative compilation of elementary functions down to the circuit level, based on device-specific gate sets.
{{Main|Qiskit}}
An [[Openopen Source]]source project developed by [[IBM]].<ref>{{Cite web|url=https://qiskit.org/|title=qiskit.org|website=qiskit.org}}</ref> Quantum circuits are created and manipulated using [[Python (programming language)|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.<ref>{{cite web |url=https://qiskit.org/overview/ |title=Qiskit Overview |access-date=2021-02-10}}</ref> Qiskit is based on the [[OpenQASM]] standard for representing quantum circuits. It also supports pulse level control of quantum systems via QiskitPulse standard.<ref>{{cite arXiv |eprint=1809.03452|title=Qiskit Backend Specifications for OpenQASM and OpenPulse Experiments|last1=McKay|first1=David C.|last2=Alexander|first2=Thomas|last3=Bello|first3=Luciano|last4=Biercuk|first4=Michael J.|last5=Bishop|first5=Lev|last6=Chen|first6=Jiayin|last7=Chow|first7=Jerry M.|last8=Córcoles|first8=Antonio D.|last9=Egger|first9=Daniel|last10=Filipp|first10=Stefan|last11=Gomez|first11=Juan|last12=Hush|first12=Michael|last13=Javadi-Abhari|first13=Ali|last14=Moreda|first14=Diego|last15=Nation|first15=Paul|last16=Paulovicks|first16=Brent|last17=Winston|first17=Erick|last18=Wood|first18=Christopher J.|last19=Wootton|first19=James|last20=Gambetta|first20=Jay M.|year=2018|class=quant-ph}}</ref>
==== Qibo ====
An [[open source]] full-stack API for quantum simulation, quantum hardware control and calibration developed by multiple research laboratories, including [[Technology Innovation Institute|QRC]], [[Centre for Quantum Technologies|CQT]] and [[Istituto Nazionale di Fisica Nucleare|INFN]]. [https://github.com/qiboteam/qibo Qibo] is a modular framework which includes multiple backends for quantum simulation and hardware control.<ref>{{Cite journal |last1=Efthymiou |first1=Stavros |last2=Ramos-Calderer |first2=Sergi |last3=Bravo-Prieto |first3=Carlos |last4=Pérez-Salinas |first4=Adrián |last5=García-Martín |first5=Diego |last6=Garcia-Saez |first6=Artur |last7=Latorre |first7=José Ignacio |last8=Carrazza |first8=Stefano |date=2022-01-01 |title=Qibo: a framework for quantum simulation with hardware acceleration |url=https://iopscience.iop.org/article/10.1088/2058-9565/ac39f5 |journal=Quantum Science and Technology |volume=7 |issue=1 |pages=015018 |doi=10.1088/2058-9565/ac39f5 |arxiv=2009.01845 |bibcode=2022QS&T....7a5018E |hdl=2434/887963 |s2cid=221507478 |issn=2058-9565}}</ref><ref>{{Cite journal |last1=Efthymiou |first1=Stavros |last2=Lazzarin |first2=Marco |last3=Pasquale |first3=Andrea |last4=Carrazza |first4=Stefano |date=2022-09-22 |title=Quantum simulation with just-in-time compilation |url=https://quantum-journal.org/papers/q-2022-09-22-814/ |journal=Quantum |language=en-GB |volume=6 |pages=814 |doi=10.22331/q-2022-09-22-814|arxiv=2203.08826 |bibcode=2022Quant...6..814E |s2cid=247518955 |doi-access=free }}</ref> This project aims at providing a platform agnostic quantum hardware control framework with drivers for multiple instruments<ref>{{Cite web|url=https://github.com/qiboteam/qibolab|title=Qibolab|date=November 2, 2022|via=GitHub}}</ref> and tools for quantum calibration, characterization and validation.<ref>{{Cite web|url=https://github.com/qiboteam/qibocal|title=Qibocal|date=November 1, 2022|via=GitHub}}</ref> 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.<ref>{{Cite web|url=https://grove-docs.readthedocs.io/en/latest/|title=Welcome to the Documentation for Grove! — Grove 1.7.0 documentation|website=grove-docs.readthedocs.io}}</ref> Forest is based on the [[Quil (instruction set architecture)|Quil]] instruction set.
==== t|ket> ====
==== Cirq ====
{{Main|Cirq}}
An [[Openopen Source]]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]],<ref name="auto"/> [[Rigetti Computing|Rigetti]], and [[Alpine Quantum Technologies]].<ref name="auto2"/>
== Quantum programming languages ==
|