Quantum programming

Last updated

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.

Contents

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 ]

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.

Blackbird

Blackbird [3] [4] 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.

cQASM

cQASM, [5] 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.

OpenQASM

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

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. [7] Many quantum algorithms (including quantum teleportation, quantum error correction, simulation, [8] [9] and optimization algorithms [10] ) require a shared memory architecture.

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.

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, [12] Rigetti, and Alpine Quantum Technologies. [13]

Classiq

A cloud-based quantum IDE developed by Classiq, uses a high-level quantum language, Qmod, to generate scalable and efficient quantum circuits with a hardware-aware synthesis engine, that can be deployed across a wide range of QPUs. The platform includes a large library of quantum algorithms.

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. [14] Forest is based on the Quil instruction set.

MindQuantum

MindQuantum is a quantum computing framework based on MindSpore, focusing on the implementation of NISQ algorithms [15] [16] [17] .

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 QProg1-Refreshed.png
A sample code using projectq with Python

PennyLane

An open-source Python library developed by Xanadu Quantum Technologies for differentiable programming of quantum computers. [18] [19] [20] [21] 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 [22] and Alpine Quantum Technologies. [13] [23]

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. [24] [25]

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. [26] Results are obtained either using a simulator, or by sending jobs to IBM quantum devices.

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. [27] [28] This project aims at providing a platform agnostic quantum hardware control framework with drivers for multiple instruments [29] and tools for quantum calibration, characterization and validation. [30] This framework focuses on self-hosted quantum devices by simplifying the software development required in labs.

Qiskit

An open source project developed by IBM. [31] 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. [32] Qiskit is based on the OpenQASM standard for representing quantum circuits. It also supports pulse level control of quantum systems via QiskitPulse standard. [33]

Qrisp

Qrisp [34] is an open source project coordinated by the Eclipse Foundation [35] and developed in Python programming by Fraunhofer FOKUS [36] 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.

Quantum Development Kit

A project developed by Microsoft [37] 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, [38] and run on quantum computers from Quantinuum, [22] IonQ, and Pasqal. [12]

Strawberry Fields

An open-source Python library developed by Xanadu Quantum Technologies for designing, simulating, and optimizing continuous variable (CV) quantum optical circuits. [39] [40] Three simulators are provided - one in the Fock basis, one using the Gaussian formulation of quantum optics, [41] and one using the TensorFlow machine learning library. Strawberry Fields is also the library for executing programs on Xanadu's quantum photonic hardware. [42] [43]

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. [44]

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, [45] LanQ [46] and Q|SI>. [47]

Ket

Ket [48] 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, [49] 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:

fromketimport*a,b=quant(2)# Allocate two quantum bitsH(a)# Put qubit `a` in a superpositioncnot(a,b)# Entangle the two qubits in the Bell statem_a=measure(a)# Measure qubit `a`, collapsing qubit `b` as wellm_b=measure(b)# Measure qubit `b`# Assert that the measurement of both qubits will always be equalassertm_a.value==m_b.value

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. [50] [51]

Q language

Q Language is the second implemented imperative quantum programming language. [52] 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.

Qregx1;// 1-qubit quantum register with initial value 0Qregx2(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.

Q#

A language developed by Microsoft to be used with the Quantum Development Kit. [53]

QCL

Quantum Computation Language (QCL) is one of the first implemented quantum programming languages. [54] 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.

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. [55]

Qmod

Quantum Modeling (Qmod) language is a high-level language that abstracts away the gate-level qubit operation, providing a functional approach to the implementation of quantum algorithms on quantum registers. The language is part of the Classiq platform and can be used directly with its native syntax, through a Python SDK, or with a visual editor, all methods can take advantage of the larger library of algorithms and the efficient circuit optimization.

Q|SI>

Q|SI> is a platform embedded in .Net language supporting quantum programming in a quantum extension of while-language. [47] [56] This platform includes a compiler of the quantum while-language [57] and a chain of tools for the simulation of quantum computation, optimisation of quantum circuits, termination analysis of quantum programs, [58] and verification of quantum programs. [59] [60]

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).

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. [61] [62]

Silq

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

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, [65] and the Haskell-like language QML by Altenkirch and Grattage. [66] [67] Higher-order quantum programming languages, based on lambda calculus, have been proposed by van Tonder, [68] Selinger and Valiron [69] and by Arrighi and Dowek. [70]

LIQUi|>

LIQUi|> (pronounced liquid) is a quantum simulation extension on the F# programming language. [71] It is currently being developed by the Quantum Architectures and Computation Group (QuArC) [72] 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. [73]

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. [74]


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. [75] [66] 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 to , 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. [76]

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. [77] 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. [78]

In 2004, Selinger and Valiron defined a strongly typed lambda calculus for quantum computation with a type system based on linear logic. [79]

Quipper

Quipper was published in 2013. [80] [81] It is implemented as an embedded language, using Haskell as the host language. [82] 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

importQuipperspos::Bool->CircQubitsposb=doq<-qinitbr<-hadamardqreturnr

Related Research Articles

<span class="mw-page-title-main">Computing</span> Activity involving calculations or computing machinery

Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and the development of both hardware and software. Computing has scientific, engineering, mathematical, technological, and social aspects. Major computing disciplines include computer engineering, computer science, cybersecurity, data science, information systems, information technology, and software engineering.

<span class="mw-page-title-main">Quantum computing</span> Technology that uses quantum mechanics

A quantum computer is a computer that exploits quantum mechanical phenomena. On small scales, physical matter exhibits properties of both particles and waves, and quantum computing leverages this behavior using specialized hardware. Classical physics cannot explain the operation of these quantum devices, and a scalable quantum computer could perform some calculations exponentially faster than any modern "classical" computer. In particular, a large-scale quantum computer could break widely used encryption schemes and aid physicists in performing physical simulations; however, the current state of the art is largely experimental and impractical, with several obstacles to useful applications.

In quantum computing, a quantum algorithm is an algorithm that runs on a realistic model of quantum computation, the most commonly used model being the quantum circuit model of computation. A classical algorithm is a finite sequence of instructions, or a step-by-step procedure for solving a problem, where each step or instruction can be performed on a classical computer. Similarly, a quantum algorithm is a step-by-step procedure, where each of the steps can be performed on a quantum computer. Although all classical algorithms can also be performed on a quantum computer, the term quantum algorithm is generally reserved for algorithms that seem inherently quantum, or use some essential feature of quantum computation such as quantum superposition or quantum entanglement.

Quantum information science is a field that combines the principles of quantum mechanics with information theory to study the processing, analysis, and transmission of information. It covers both theoretical and experimental aspects of quantum physics, including the limits of what can be achieved with quantum information. The term quantum information theory is sometimes used, but it does not include experimental research and can be confused with a subfield of quantum information science that deals with the processing of quantum information.

<span class="mw-page-title-main">Quantum circuit</span> Model of quantum computing

In quantum information theory, a quantum circuit is a model for quantum computation, similar to classical circuits, in which a computation is a sequence of quantum gates, measurements, initializations of qubits to known values, and possibly other actions. The minimum set of actions that a circuit needs to be able to perform on the qubits to enable quantum computation is known as DiVincenzo's criteria.

<span class="mw-page-title-main">Quantum logic gate</span> Basic circuit in quantum computing

In quantum computing and specifically the quantum circuit model of computation, a quantum logic gate is a basic quantum circuit operating on a small number of qubits. Quantum logic gates are the building blocks of quantum circuits, like classical logic gates are for conventional digital circuits.

In quantum computing, the Gottesman–Knill theorem is a theoretical result by Daniel Gottesman and Emanuel Knill that states that stabilizer circuits, circuits that only consist of gates from the normalizer of the qubit Pauli group, also called Clifford group, can be perfectly simulated in polynomial time on a probabilistic classical computer. The Clifford group can be generated solely by using CNOT, Hadamard, and phase gate S; and therefore stabilizer circuits can be constructed using only these gates.

<span class="mw-page-title-main">One-way quantum computer</span> Method of quantum computing

The one-way or measurement-based quantum computer (MBQC) is a method of quantum computing that first prepares an entangled resource state, usually a cluster state or graph state, then performs single qubit measurements on it. It is "one-way" because the resource state is destroyed by the measurements.

Quantum optimization algorithms are quantum algorithms that are used to solve optimization problems. Mathematical optimization deals with finding the best solution to a problem from a set of possible solutions. Mostly, the optimization problem is formulated as a minimization problem, where one tries to minimize an error which depends on the solution: the optimal solution has the minimal error. Different optimization techniques are applied in various fields such as mechanics, economics and engineering, and as the complexity and amount of data involved rise, more efficient ways of solving optimization problems are needed. Quantum computing may allow problems which are not practically feasible on classical computers to be solved, or suggest a considerable speed up with respect to the best known classical algorithm.

IBM Quantum Platform is an online platform allowing public and premium access to cloud-based quantum computing services provided by IBM. This includes access to a set of IBM's prototype quantum processors, a set of tutorials on quantum computation, and access to an interactive textbook. As of February 2021, there are over 20 devices on the service, six of which are freely available for the public. This service can be used to run algorithms and experiments, and explore tutorials and simulations around what might be possible with quantum computing.

Cloud-based quantum computing is the invocation of quantum emulators, simulators or processors through the cloud. Increasingly, cloud services are being looked on as the method for providing access to quantum processing. Quantum computers achieve their massive computing power by initiating quantum physics into processing power and when users are allowed access to these quantum-powered computers through the internet it is known as quantum computing within the cloud.

In quantum computing, quantum supremacy or quantum advantage is the goal of demonstrating that a programmable quantum computer can solve a problem that no classical computer can solve in any feasible amount of time, irrespective of the usefulness of the problem. The term was coined by John Preskill in 2012, but the concept dates to Yuri Manin's 1980 and Richard Feynman's 1981 proposals of quantum computing.

Open Quantum Assembly Language is a programming language designed for describing quantum circuits and algorithms for execution on quantum computers. It is designed to be an intermediate representation that can be used by higher-level compilers to communicate with quantum hardware, and allows for the description of a wide range of quantum operations, as well as classical feed-forward flow control based on measurement outcomes.

Quil is a quantum instruction set architecture 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 require a shared memory architecture. Quil is being developed for the superconducting quantum processors developed by Rigetti Computing through the Forest quantum programming API. A Python library called pyQuil was introduced to develop Quil programs with higher level constructs. A Quil backend is also supported by other quantum programming environments.

In quantum computing, a qubit is a unit of information analogous to a bit in classical computing, but it is affected by quantum mechanical properties such as superposition and entanglement which allow qubits to be in some ways more powerful than classical bits for some tasks. Qubits are used in quantum circuits and quantum algorithms composed of quantum logic gates to solve computational problems, where they are used for input/output and intermediate computations.

Quantum volume is a metric that measures the capabilities and error rates of a quantum computer. It expresses the maximum size of square quantum circuits that can be implemented successfully by the computer. The form of the circuits is independent from the quantum computer architecture, but compiler can transform and optimize it to take advantage of the computer's features. Thus, quantum volumes for different architectures can be compared.

<span class="mw-page-title-main">Qiskit</span> Open-source software development kit

Qiskit is an open-source software development kit (SDK) for working with quantum computers at the level of circuits, pulses, and algorithms. It provides tools for creating and manipulating quantum programs and running them on prototype quantum devices on IBM Quantum Platform or on simulators on a local computer. It follows the circuit model for universal quantum computation, and can be used for any quantum hardware that follows this model.

This glossary of quantum computing is a list of definitions of terms and concepts used in quantum computing, its sub-disciplines, and related fields.

References

  1. Jarosław Adam Miszczak (2012). High-level Structures in Quantum Computing. Morgan & Claypool Publishers. ISBN   9781608458516.
  2. "Comprehensive list of quantum open-source projects". Github. Retrieved January 27, 2022.
  3. "Blackbird Quantum Assembly Language — Blackbird 0.2.0 documentation". quantum-blackbird.readthedocs.io. Retrieved June 24, 2019.
  4. Weedbrook, Christian; Amy, Matthew; Bergholm, Ville; Quesada, Nicolás; Izaac, Josh; Killoran, Nathan (March 11, 2019). "Strawberry Fields: A Software Platform for Photonic Quantum Computing". Quantum. 3: 129. arXiv: 1804.03159 . Bibcode:2019Quant...3..129K. doi:10.22331/q-2019-03-11-129. S2CID   54763305.
  5. Bertels, K.; Almudever, C. G.; Hogaboam, J. W.; Ashraf, I.; Guerreschi, G. G.; Khammassi, N. (May 24, 2018). "cQASM v1.0: Towards a Common Quantum Assembly Language". arXiv: 1805.09607v1 [quant-ph].
  6. qiskit-openqasm: OpenQASM specification, International Business Machines, July 4, 2017, retrieved July 6, 2017
  7. Smith, Robert S.; Curtis, Michael J.; Zeng, William J. (2016). "A Practical Quantum Instruction Set Architecture". arXiv: 1608.03355 [quant-ph].
  8. McClean, Jarrod R.; Romero, Jonathan; Babbush, Ryan; Aspuru-Guzik, Alán (February 4, 2016). "The theory of variational hybrid quantum-classical algorithms". New Journal of Physics. 18 (2): 023023. arXiv: 1509.04279 . Bibcode:2016NJPh...18b3023M. doi:10.1088/1367-2630/18/2/023023. ISSN   1367-2630. S2CID   92988541.
  9. 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].
  10. Farhi, Edward; Goldstone, Jeffrey; Gutmann, Sam (2014). "A Quantum Approximate Optimization Algorithm". arXiv: 1411.4028 [quant-ph].
  11. Häner, Thomas; Steiger, Damian S.; Svore, Krysta; Troyer, Matthias (2018). "A software methodology for compiling quantum programs". Quantum Science and Technology. 3 (2): 020501. arXiv: 1604.01401 . Bibcode:2018QS&T....3b0501H. doi:10.1088/2058-9565/aaa5cc. ISSN   2058-9565. S2CID   1922315.
  12. 1 2 "PASQAL". PASQAL.
  13. 1 2 "Home". AQT | ALPINE QUANTUM TECHNOLOGIES.
  14. "Welcome to the Documentation for Grove! — Grove 1.7.0 documentation". grove-docs.readthedocs.io.
  15. "MindSpore Quantum Documentation". www.mindspore.cn/mindquantum.
  16. Xu, Xusheng; et al. (2024). "MindSpore Quantum: A User-Friendly, High-Performance, and AI-Compatible Quantum Computing Framework". arXiv: 2406.17248 [quant-ph].
  17. "mindquantum". github.com.
  18. "PennyLane Documentation — PennyLane 0.14.1 documentation". pennylane.readthedocs.io. Retrieved March 26, 2021.
  19. "AWS joins PennyLane, an open-source framework that melds machine learning with quantum computing". SiliconANGLE. February 17, 2021. Retrieved March 26, 2021.
  20. "SD Times Open-Source Project of the Week: PennyLane". SD Times. February 26, 2021. Retrieved March 26, 2021.
  21. Salamone, Salvatore (December 13, 2020). "Real-time Analytics News Roundup for Week Ending December 12". RTInsights. Retrieved March 26, 2021.
  22. 1 2 "Accelerating Quantum Computing". www.quantinuum.com.
  23. "Plugins and ecosystem — PennyLane". pennylane.ai. Retrieved March 26, 2021.
  24. "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.
  25. Heurtel, Nicolas; Fyrillas, Andreas; de Gliniasty, Grégoire; Le Bihan, Raphaël; Malherbe, Sébastien; Pailhas, Marceau; Bertasi, Eric; Bourdoncle, Boris; Emeriau, Pierre-Emmanuel; Mezher, Rawad; Music, Luka; Belabas, Nadia; Valiron, Benoît; Senellart, Pascale; Mansfield, Shane; Senellart, Jean (February 21, 2023). "Perceval: A Software Platform for Discrete Variable Photonic Quantum Computing". Quantum. 7: 931. arXiv: 2204.00602 . Bibcode:2023Quant...7..931H. doi:10.22331/q-2023-02-21-931. S2CID   247922568.
  26. "Home".
  27. 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 (January 1, 2022). "Qibo: a framework for quantum simulation with hardware acceleration". Quantum Science and Technology. 7 (1): 015018. arXiv: 2009.01845 . Bibcode:2022QS&T....7a5018E. doi:10.1088/2058-9565/ac39f5. hdl:2434/887963. ISSN   2058-9565. S2CID   221507478.
  28. Efthymiou, Stavros; Lazzarin, Marco; Pasquale, Andrea; Carrazza, Stefano (September 22, 2022). "Quantum simulation with just-in-time compilation". Quantum. 6: 814. arXiv: 2203.08826 . Bibcode:2022Quant...6..814E. doi: 10.22331/q-2022-09-22-814 . S2CID   247518955.
  29. "Qibolab". November 2, 2022 via GitHub.
  30. "Qibocal". November 1, 2022 via GitHub.
  31. "qiskit.org". qiskit.org.
  32. "Qiskit Overview" . Retrieved February 10, 2021.
  33. 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].
  34. "Qrisp official website".
  35. "Eclipse Foundation (website)".
  36. "Fraunhofer FOKUS (website)".
  37. "Azure Quantum documentation, QDK & Q# API reference - Azure Quantum". learn.microsoft.com.
  38. "What is Azure Quantum? - Azure Quantum". learn.microsoft.com. January 11, 2023.
  39. "Strawberry Fields — Strawberry Fields 0.8.0 documentation". strawberryfields.readthedocs.io. Retrieved September 25, 2018.
  40. Killoran, Nathan; Izaac, Josh; Quesada, Nicolás; Bergholm, Ville; Amy, Matthew; Weedbrook, Christian (2019). "Strawberry Fields: A Software Platform for Photonic Quantum Computing". Quantum. 3: 129. arXiv: 1804.03159 . Bibcode:2019Quant...3..129K. doi:10.22331/q-2019-03-11-129. S2CID   54763305.
  41. Weedbrook, Christian; Pirandola, Stefano; García-Patrón, Raúl; Cerf, Nicolas J.; Ralph, Timothy C.; Shapiro, Jeffrey H.; Lloyd, Seth (May 1, 2012). "Gaussian quantum information". Reviews of Modern Physics. 84 (2): 621–669. arXiv: 1110.3234 . Bibcode:2012RvMP...84..621W. doi:10.1103/RevModPhys.84.621. S2CID   119250535.
  42. "Hardware — Strawberry Fields". strawberryfields.ai. Retrieved March 26, 2021.
  43. "In the Race to Hundreds of Qubits, Photons May Have "Quantum Advantage"". IEEE Spectrum: Technology, Engineering, and Science News. March 5, 2021. Retrieved March 26, 2021.
  44. "pytket". GitHub . January 22, 2022.
  45. Bernhard Omer. "The QCL Programming Language".
  46. Hynek Mlnařík. "LanQ – a quantum imperative programming language".
  47. 1 2 Liu, Shusen; Zhou, li; Guan, Ji; He, Yang; Duan, Runyao; Ying, Mingsheng (May 9, 2017). "Q|SI>: A Quantum Programming Language". Scientia Sinica Informationis. 47 (10): 1300. arXiv: 1710.09500 . doi:10.1360/N112017-00095. S2CID   9163705.
  48. Da Rosa, Evandro Chagas Ribeiro; De Santiago, Rafael (January 31, 2022). "Ket Quantum Programming". ACM Journal on Emerging Technologies in Computing Systems. 18 (1): 1–25. doi:10.1145/3474224. ISSN   1550-4832.
  49. "Ket Quantum Programming". quantumket.org. Retrieved May 18, 2023.
  50. A. Baltag and S. Smets, "LQP: The Dynamic Logic of Quantum Information", Mathematical Structures in Computer Science 16(3):491-525, 2006.
  51. Baltag, Alexandru; Bergfeld, Jort; Kishida, Kohei; Sack, Joshua; Smets, Sonja; Zhong, Shengyang (2014). "PLQP & Company: Decidable Logics for Quantum Algorithms". International Journal of Theoretical Physics. 53 (10): 3628–3647. Bibcode:2014IJTP...53.3628B. doi:10.1007/s10773-013-1987-3. S2CID   254573992.
  52. "Software for the Q language". November 23, 2001. Archived from the original on June 20, 2009. Retrieved July 20, 2017.
  53. "Introduction to Q# & Quantum Development Kit - Azure Quantum". learn.microsoft.com. March 30, 2023.
  54. "QCL - A Programming Language for Quantum Computers". tuwien.ac.at. Retrieved July 20, 2017.
  55. Scott Pakin, "A Quantum Macro Assembler", Proceedings of the 20th Annual IEEE High Performance Extreme Computing Conference 2016
  56. Ying, Mingsheng (January 2012). "Floyd–hoare Logic for Quantum Programs". ACM Trans. Program. Lang. Syst. 33 (6): 19:1–19:49. doi: 10.1145/2049706.2049708 . ISSN   0164-0925. S2CID   416960.
  57. Ying, Mingsheng; Feng, Yuan (2010). "A Flowchart Language for Quantum Programming". IEEE Transactions on Software Engineering. 37 (4): 466–485. doi:10.1109/TSE.2010.94. ISSN   0098-5589. S2CID   5879273.
  58. Ying, Mingsheng; Yu, Nengkun; Feng, Yuan; Duan, Runyao (2013). "Verification of quantum programs". Science of Computer Programming. 78 (9): 1679–1700. arXiv: 1106.4063 . doi:10.1016/j.scico.2013.03.016. S2CID   18913620.
  59. Ying, Mingsheng; Ying, Shenggang; Wu, Xiaodi (2017), "Invariants of quantum programs: Characterisations and generation", ACM SIGPLAN Notices, 52: 818–832, doi:10.1145/3093333.3009840, hdl: 10453/127333
  60. Liu, Tao; Li, Yangjia; Wang, Shuling; Ying, Mingsheng; Zhan, Naijun (2016). "A Theorem Prover for Quantum Hoare Logic and its Applications". arXiv: 1601.03835 [cs.LO].
  61. Javadi-Abhari, Ali. "Scaffold: Quantum Programming Language". Princeton University-Department of Computer Science. Princeton University. Retrieved September 22, 2020.
  62. Litteken, Andrew (May 28, 2020). "An updated LLVM-based quantum research compiler with further OpenQASM support". Quantum Science and Technology. 5 (3): 034013. Bibcode:2020QS&T....5c4013L. doi: 10.1088/2058-9565/ab8c2c . OSTI   1803951. S2CID   219101628.
  63. "What is Silq?". silq.ethz.ch. Retrieved June 21, 2020.
  64. Bichsel, Benjamin; Baader, Maximilian; Gehr, Timon; Vechev, Martin (June 11, 2020). "Silq: A high-level quantum language with safe uncomputation and intuitive semantics". 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. S2CID   219397029.
  65. Peter Selinger, "Towards a quantum programming language", Mathematical Structures in Computer Science 14(4):527-586, 2004.
  66. 1 2 Jonathan Grattage: QML Research (website)
  67. T. Altenkirch, V. Belavkin, J. Grattage, A. Green, A. Sabry, J. K. Vizzotto, QML: A Functional Quantum Programming Language Archived 2006-07-10 at the Wayback Machine (website)
  68. 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
  69. 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.
  70. Pablo Arrighi, Gilles Dowek, "Linear-algebraic lambda-calculus: higher-order, encodings and confluence", 2006
  71. "The Language Integrated Quantum Operations Simulator". github.io. Retrieved July 20, 2017.
  72. Quantum Architectures and Computation Group (QuArC), https://www.microsoft.com/en-us/research/group/quantum-architectures-and-computation-group-quarc/, 2011
  73. "StationQ". microsoft.com. Retrieved July 20, 2017.
  74. "Language-Integrated Quantum Operations: LIQUi|>". Microsoft . 2016.
  75. "QML: A Functional Quantum Programming Language". September 26, 2007. Archived from the original on September 26, 2007.
  76. Jonathan Grattage, QML: A Functional Quantum Programming Language (compiler) Archived 2016-03-05 at the Wayback Machine , 2005–2008
  77. Philip Maymin, "Extending the Lambda Calculus to Express Randomized and Quantumized Algorithms", 1996
  78. André van Tonder. "A lambda calculus for quantum computation (website)". Archived from the original on March 5, 2016. Retrieved October 2, 2007.
  79. Peter Selinger, Benoˆıt Valiron, "Quantum Lambda Calculus"
  80. "The Quipper Language".
  81. Alexander S. Green; Peter LeFanu Lumsdaine; Neil J. Ross; Peter Selinger; Benoît Valiron. "The Quipper Language (website)".
  82. 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. Vol. 7948. pp. 110–124. arXiv: 1304.5485 . doi:10.1007/978-3-642-38986-3_10. ISBN   978-3-642-38985-6. S2CID   9135905.

Further reading