Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
survey
Open access

Quantum Software Components and Platforms: Overview and Quality Assessment

Published: 23 December 2022 Publication History

Abstract

Quantum computing is the latest revolution in computing and will probably come to be seen as an advance as important as the steam engine or the information society. In the last few decades, our understanding of quantum computers has expanded and multiple efforts have been made to create languages, libraries, tools, and environments to facilitate their programming. Nonetheless, quantum computers are complex systems at the bottom of a stack of layers that programmers need to understand. Hence, efforts towards creating quantum programming languages and computing environments that can abstract low-level technology details have become crucial steps to achieve a useful quantum computing technology. However, most of these environments still lack many of the features that would be desirable, such as those outlined in The Talavera Manifesto for Quantum Software Engineering and Programming. For advancing quantum computing, we will need to develop quantum software engineering techniques and tools to ensure the feasibility of this new type of quantum software. To contribute to this goal, this paper provides a review of the main quantum software components and platforms. We also propose a set of quality requirements for the development of quantum software platforms and the conduct of their quality assessment.

1 Introduction to Quantum Computing

In 1982, Nobel laureate Richard Feynman asked: “What kind of computer are we going to use to simulate physics?” [43], so introducing the idea of the quantum computer and launching the second quantum revolution. Over the last two decades, our understanding of “quantum computers” has expanded dramatically, as efforts to realize such an “exotic” computer have made steady but remarkable progress [88]. Quantum computers have the potential to solve tasks that classical computers can never solve in a practical amount of time. Indeed, quantum computers exponentially speed up solutions to problems that would otherwise require massive parallel computing, thus allowing us to simulate nature more efficiently and precisely than with classical platforms [19].
Quantum computers offer us completely new solutions in multiple business areas [67]: economics and financial services, chemistry, medicine and health, supply chain and logistics, energy, agriculture, and many more. Quantum computing is also having an impact in different areas of computer science, mainly in security [151], Artificial Intelligence [36, 45, 156] or Natural Language Processing [94]. Besides, several quantum algorithms have been created [4] since the seminal ones [33, 59, 134].
Many technologies have been developed to implement qubits: trapped ions qubits, superconducting qubits, semiconductor-based qubits, photonic qubits, valley qubits, and the like [125]. Several quantum computers are available, using either quantum annealing (e.g., D-Wave1) or gate-based quantum computing (e.g., IBM Quantum,2 Rigetti,3 Google,4 etc.) and, recently, their superiority (“supremacy”) over classical ones has been proven [12].
Nevertheless, for quantum computing to become a more effective reality, the mere existence of quantum computers and quantum computer science alone is not enough. As The Quantum Software Manifesto [119] states: “Given the recent rapid advances in quantum hardware, it is urgent that we step up our efforts in quantum software”. Indeed, the recent European Quantum Flagship’s Strategic Research Agenda [38] explicitly urges the investigation of the “development of software stacks to integrate quantum computing into current computing environments”.
A huge effort from both industry and academia has, nevertheless, produced several types of quantum software tools. These software tools, complemented by adequate quantum software engineering techniques, will most likely turn out to be the main driver for a new software engineering “golden age” during the 2020s [120] - just as occurred in previous advances [18].
This main contribution of this paper is twofold. First, it provides an extensive review and analysis of the quantum software technology, ranging from quantum programming languages to quantum tools and libraries. It also analyses the available quantum software simulators, optimizers, error correction tools, and the main vendors in the field. Its second contribution is the definition of the necessary software quality requirements for quantum software platforms, as well as their assessment.
The remainder of this paper is organized as follows: Section 2 presents an overview of quantum software, while Section 3 presents “a quantum technology review” of the quantum programming languages, simulators, optimizers, and so on. Section 4 discusses the functional and non-functional quality requirements proposed for quantum software development platforms. Section 5 presents the main implications for researchers and practitioners. Finally, Section 6 presents an evaluation of software quantum stacks. Lastly, some conclusions and future lines of research are detailed.

2 Quantum Software

This section introduces the role that quantum software plays in the quantum computing technology stack. Firstly, the quantum software layers are explained in Section 2.1. Then, hybrid classical-quantum software is introduced in Section 2.2, and finally, in order to clarify the information provided in the other two subsections, an example of how quantum software is developed is provided in Section 2.3.

2.1 Quantum Software Layers

Quantum computers are complex systems that should not be directly handled by quantum software programmers. Instead, to take advantage of the power of these devices, a stack of layers that approximates the quantum computer to the user have been usually implemented. Figure 1 shows a typical full stack of a quantum computer.
Fig. 1.
Fig. 1. Full quantum computer stack.
Generally, developers work in a user-friendly environment in which a quantum circuit is coded or designed in drag-and-drop environments. These quantum circuits are then converted to an equivalent, intermediate representation in a quantum programming language such as openQASM [28, 29] or pyQuil [136] in order to become a quantum application. Such quantum applications are not yet directly executable by the quantum device and must first be compiled to that system through a compiler that adapts and optimizes the quantum circuit to the quantum processor architecture and to their existing set of quantum gates and operators.
The quantum algorithm compiled for the target platform is enriched with instructions that prevent quantum errors due to decoherence and quantum noise, so that the system is optimized and resilient to errors. This step is usually known as “Quantum Error Correction” (QEC).
After this optimization, it is transferred to a hardware compiler that brings the quantum algorithm closer to the target quantum machine by specifying the quantum algorithm in the quantum firmware of the quantum computer. This quantum firmware is the lowest layer of the quantum computer stack and is the one that finally adapts the quantum algorithm to the physical qubits of the quantum processor. This mapping from logical qubits to physical qubits requires technology-dependent optimizations (see Figure 1).
This generic stack is adapted to the different commercial environments and existing quantum computers. These commercial stacks usually include the compilation, error correction, and optimization in the bottom layers (i.e., those closest to the physical device) and include intermediate layers that facilitate the developer's task by adding method libraries and optimized algorithms for various applications such as artificial intelligence, chemistry, or optimization.
All of this “software toolchain” (with the set of pertinent input–output transformations), of course, requires the appropriate software to translate and optimize both applications and abstraction layers [26].

2.2 Hybrid Classical-quantum Software

Quantum computing is not an all-in-one technology. Due to the intrinsic nature of quantum computing, it is suitable to address a particular kind of problem, but not every problem. Indeed, for some problems, quantum computers may suffer from the same limitations as classical ones [2], while at other times the task is quite simple - so there is no reason to use a more expensive technology to address what classical computers can still perform quite adequately.
Therefore, new software architecture will probably seek to integrate classic and quantum software into so-called “hybrid information systems” [115]. These are systems which support some business operations that are implemented with classical programming languages, but which perform calls to quantum algorithms. The classical software runs in classical computers (i.e., the controller or the driver part) while quantum software runs in quantum computers (the responder part) that are typically located in the cloud. Since the computation power of the today's quantum computers is still limited, one solution is to use several quantum machines in a distributed quantum computing architecture [42].
Furthermore, hybrid software still uses the classical controller part for supporting two important tasks: the cost function and the shots management [91]. The cost function refers to the part in which the quantum answer (based on qubits’ measures) is translated as a meaningful answer to a real-world problem. The term “shots management” refers to the estimation and control of how many executions of the quantum algorithm are needed to get a reliable answer, since it is based on a probabilistic search space. According to [90], hybrid software still faces obstacles in terms of code portability, tool integration, program validation, and the orchestration of workflow development. For example, concerning code portability, there are already some intermediate representations like QIR (Quantum Intermediate Representation) [50].

2.3 An Example of Quantum Software Development

In order to clarify the concepts stated in this section, we provide an example of how quantum software is developed and executed by following different steps (see Figure 2).
Fig. 2.
Fig. 2. Steps in quantum software development.
The chosen example for illustrating this process is well-known in quantum computing: the quantum entanglement of two qubits. This phenomenon produces an effect on quantum particles which makes the state of a qubit be determined by the state of another one to which it is entangled. There is no such an effect in que Classical Mechanics.
The following mathematical formulas represent the probability of two qubits of being in any of the four possible states when measured at the same time.
\begin{equation*} \left| {{\rm{\Psi }}\rangle = \alpha } \right|00\rangle + \beta \left| {01\rangle + \gamma |10\rangle + \delta } \right|11\rangle \qquad \hbox{with }{\left| \alpha \right|}^2 + {\left| \beta \right|}^2 + {\left| \gamma \right|}^2 + {\left| \delta \right|}^2 = 1 \end{equation*}
In fact, in the quantum entanglement problem, both β and γ are equal to 0, as the only possible states to be found are | \(00\rangle\) and | \(11\rangle\) , this is, those in which the state of both qubits is the same.
After the problem has been analyzed and properly understood, the following step is to design the corresponding quantum circuit, for which a circuit designer is typically used. Through such designer the different gates are set to construct the circuit (see Figure 3 – right). After the circuit has been designed, it could also be executed on a simulator which will provide the results in different formats, for instance, using histograms with the probabilities of measuring each of the possible states of the qubits (see Figure 3 – middle). To perform these operations, several tools can be used (cf. Section 3.2). Most of these tools can generate the source code of the circuit according to different quantum programming languages, which will be commented in Section 3.1. In the example (see Figure 3 – right), the circuit is transformed into the OpenQASM language.
Fig. 3.
Fig. 3. Qubits entanglement example: circuit representation (left); probability histogram (middle); OpenQASM code (right).
Once the source code is obtained, it is usually integrated into a classical software application which makes use of it. There are two main options for this: embedding the quantum source code on a program developed with a classical programming language (e.g., Python or C#) and use it as a functional part of it or directly execute it on actual quantum machines by using the different services that the vendors provide. In this second case, the most common option is sending the quantum software which is received and enqueued for execution on remote quantum machines. After the execution, a report with the results is sent back to the developers.

3 Overview of the Software Quantum Technology

This section provides a review of the quantum software technology by listing and classifying it in the following subsections: programming languages, simulators, optimizers, error correction tools, tools and libraries, main vendors, and development and run platforms.

3.1 Quantum Programming Languages

Quantum computer programming usually consists of defining a quantum circuit such as the one presented in Figure 4 so that it represents the operations being applied to each of the qubits in the quantum computer. This graphical notation is useful for small examples and for building prototypes, but as the circuit gets bigger it ceases to be practical. As a result, various quantum programming languages have been proposed to make it easier to specify quantum algorithms. These quantum algorithms are usually a translation of the quantum circuit into code, i.e., a sequence of textual programming statements.
Fig. 4.
Fig. 4. Example of quantum circuit.
Fig. 5.
Fig. 5. Quantum programming languages roadmap.
Several quantum programming languages have been proposed in recent years, some of them more oriented to quantum circuits (like the “classical” assembler), while others are closer to high-level languages. In Figure 5 we can see the roadmap of quantum languages as they have been developed through the years, and from which it is evident that in the last few years there has been an explosion of new languages and proposals.
In some of these cases, the new arrivals cannot really be considered as autonomous languages, but rather are libraries built over classical languages or embedded languages (similar to “classical” SQL embedded statements). These libraries can be invoked from general-purpose, classical programming languages such as Python.
Figure 6 provides some examples of quantum algorithms for (a) SILQ qubits superposition5 and (b) teleport in OpenQASM.6
Fig. 6.
Fig. 6. (a) Superposition algorithm in SILQ and (b) teleport algorithm in OpenQASM.
The mainstream quantum programming languages usually follow the imperative or functional paradigms. There are also other languages which are based on object-orientation, circuits, or are even multiparadigm. More information about these programming languages can be found in [46, 54].

3.1.1 Quantum Imperative Programming Languages.

Most of the languages proposed for quantum computing are imperative. Some of the proposals provide a language of their own, usually assembler-based proposals, although most of them are extensions to other general-purpose, classical programming languages, most notably Python.
Table 1 includes information on the various imperative quantum programming languages, including year of invention, name, the classical language on (or to) which the language is based on (or for which it is an extension), level of abstraction, and bibliographical reference(s). The table is based on the one included in [157] but it includes new languages and categories.
Table 1.
YearNameLanguageAbstractionReference(s)
1998QCLCLow[106]
2000qGCLPascalHigh[129, 161]
2003Q languageC++High[16]
2006LanQCLow[97, 98]
2008NDQJavaJavaHigh[154]
2009CoveC#High[123]
2012ScaffoldC (C++)Low/High[3, 70]
2013Chisel-QScalaHigh[86]
2016QASMAssembly languageLow[108]
2016FJQuantumFeather-weight JavaHigh[41]
2016ProjectQPythonHigh[60]
2016pyQuil (Quil)PythonHigh[136]
2017OpenQASMAssembly languageLow[28]
2017cQASMAssembly languageLow[76]
2017QuiskitPythonHigh[5]
2018IQuIdealized AlgolHigh[111]
2018Strawberry FieldsPythonHigh[78]
2018BalckbirdPythonHigh[78]
2018QuantumOptics.jlJuliaHigh[80]
2018CirqPythonHigh[55]
2018Q#C#High[141]
2018Q|SI>.Net languageHigh[85]
2020SilqPythonHigh[17]
2020JaqualAssembly languageLow[100]
2020OpenQLC++ / PythonHigh[77]
2022OpenQASM3Assembly languageLow[29]
Table 1. Quantum Imperative Programming Languages
Most low-level imperative languages are based on assembler, usually as an evolution or adaptation of OpenQASM, while among the high-level quantum languages there is more variety; nevertheless, the prevalence of Python is evident, whether as a programming language or as a language that incorporates quantum computing libraries. It should be noted, however, that there are multiple proposals associated with other programming languages and platforms, such as Julia, Scala, C++, or .Net framework languages.

3.1.2 Quantum Functional Programming Languages.

Although the mainstream quantum programming languages are generally imperative, there are several proposals which are based on functional programming. Some of these proposals are new languages - as is often the case with proposals based on the lambda calculus - but many others are designed as extensions of functional programming languages, such as Haskell or F#.
Table 2 presents the information of the main functional quantum programming languages, using the same headings as Table 1. Some programming languages support both imperative and functional programming.
Table 2.
YearNameLanguageAbstractionReference(s)
1996Quantum Lambda CalculiLambda calculusHigh[89]
2000λqLambda calculusHigh[11]
2004QFC (QPL)FlowchartHigh[131133]
2005QMLSimilar to HaskellHigh[7]
2005cQPLDenotationalHigh[87]
2013QuaFLHaskellHigh[82]
2013QuipperHaskellHigh[57, 58]
2013Chisel-QScalaHigh[86]
2014LIQUi|>F#High[152]
2015Proto-QuipperHaskellHigh[126]
2016ProjectQPythonHigh[60]
2016qPCFLambda calculusHigh[109, 111]
2017QuiskitPythonHigh[5]
2018Strawberry FieldsPythonHigh[78]
2018BalckbirdPythonHigh[78]
2018CirqPythonHigh[55]
2020SilqPythonHigh[17]
Table 2. Quantum Functional Programming Languages
Most of the languages for functional quantum programming are based on Haskell or lambda calculus, although there are also proposals based on Python, which was not originally a functional language, but which was then expanded so as to include extensions that make it a multi-paradigm language and allow functional quantum extensions.

3.1.3 Other Quantum Programming Languages.

One object-oriented quantum programming language is FJQuantum [41], which is an extension of Featherweight Java, but with the added characteristic of managing quantum data and operations.
There are also some quantum circuit languages, such as QuECT (Quantum Embeddable Circuit Technique) [24], that allow one to embed circuit designs in a host programming language like Java. A similar example is QWIRE [114], which can define quantum circuits that are embedded in the Coq formal proof management system.
In addition to Q#, which is discussed in Section 4, there are other multiparadigm quantum programming languages: Strawberry Fields [78], a programming architecture for photonic quantum computing, built upon Python; or QuantumOptics.jl [80], an open system developed using Julia language and based on quantum optics.
Table 3 follows the same format as previous tables and presents information about other quantum programming languages, including circuit-based, declarative, and other types.
Table 3.
YearNameLanguageAbstractionReference(s)
2004CQPProcess calculusHigh[4749]
2005QPAlgProcess calculusHigh[72, 81]
2011QuECTJavaHigh[24]
2017ForestPythonHigh[136]
2017QWIRECoq proof assistantHigh[114]
Table 3. Other Quantum Programming Languages

3.1.4 Quantum Programming Languages Landscape.

Figure 7 visually summarizes all the programming languages presented in this section according to the different dimensions studied. From this it can be observed that most of the proposals tend to raise the level of abstraction to make programming this new kind of computer progressively easier.
Fig. 7.
Fig. 7. Quantum programming languages landscape.
As we have seen throughout this section, the number of programming language proposals for the creation of quantum circuits and algorithms is quite large. These languages follow different paradigms, from those that simply describe a quantum circuit, to more academic languages that follow mathematical paradigms such as lambda calculus or process calculus, to languages similar to assembler (QASM), imperative languages, and functional and declarative languages. In addition, many of the proposals are extensions and libraries for general-purpose languages, among which Python stands out.
However, although the supply of quantum languages is high, most of them have not gone beyond the proposal stage and have not really been adopted in real conditions. The most widely accepted languages are those that have been proposed by the manufacturers of quantum computers (IBM, D'Wave, etc.), such as Qiskit, QASM, Cirq or Quatum LEAP or those that are being supported by generic quantum algorithm development platforms that are capable of deploying the algorithm on various computers. Among these last proposals we could find Microsoft's Q# or Python libraries such as Strawberry Fields or Pennylane (Xanadu).

3.2 Quantum Software Simulators and Design Environments

Due to the difficulty of building quantum computers and the limited access to the few real quantum computers currently available, a growing body of quantum simulators7 has emerged to assist in the tasks of designing and planning quantum algorithms and circuits. Quantum simulators have become a paramount concern due to the computation errors that still happen in quantum computers (cf. Section 3.4). Thus, when new quantum algorithms are being developed, it is advisable to conduct the initial proof-of-concept validation with a simulator. On the contrary, if a preliminary algorithm were to be executed in a real quantum computer and were it to fail, there would be no way to know if this was because of the algorithm design itself or was instead due to the fidelity of the quantum computer.
Most quantum simulators are mainly based on the management of arrays (due to the mathematics foundations of quantum computing) but a few of them are also based on graphs. In addition to LIQUi|>8 from Microsoft (discussed in Section 4), there are many different quantum simulators, the following list of which is based on, although not limited to, the list presented by [158]:
Amazon Braket9 is an AWS service providing access to quantum computing hardware as well as several quantum simulators.
Atom QASM Quantum Circuit Previewer10 is an Atom11 editor package that converts QASM (Quantum Assembly) code into a graphical representation of the quantum circuit in real time and provides additional information on the circuit, such as depth, number of instructions, and state vector visualizations.
cuQuantum SDK12 is a development platform for simulating quantum circuits on GPU-accelerated systems provided by Nvidia.
DDSIM [153] is part of the JKQ tools and provides a decision diagram-based quantum circuit simulator which allows one to simulate quantum circuits defined in a REAL or OpenQASM format, alongside parameterized Grover's and Shor's algorithms and QFT.
D'Wave13 provides a simulated environment in order to test locally the annealing algorithms.
Google Quantum AI Cirq14 is an open-source framework for programming quantum computers. Cirq provides a Python software library for writing, manipulating, and optimizing quantum circuits, and then running them on quantum computers and quantum simulators.
Intel-QS (Quantum Simulator) or QHIPSTER (The Quantum High Performance Software Testing Environment) [135] is a high-performance environment using parallel algorithms.
IBM Qiskit Simulators15 implements several simulation methods aimed at mimicking IBM's quantum computers.
Microsoft Q# Quantum Simulators16 provides different implementations of quantum primitives using Q# and dot.net as a platform.
PennyLane17 is designed to be hardware and device agnostic, allowing quantum functions to be easily dispatched to different quantum devices. A single computation can even include multiple quantum devices or simulators from different vendors.
ProjectQ [139] is an open-source simulator, started at the ETH Zurich, based on arrays, which can easily be extended by domain experts. The high-performance array-based simulator that it contains allows for the simulation of up to approximately 30 qubits on a desktop machine. It also contains an emulator which, by means of employing conventional shortcuts, is capable of determining, for instance, the results for Shor's algorithm faster than a simulator.
QCEC [21] is part of the JKQ toolset for quantum computing [153] which can be used for quantum circuit equivalence checking; it also has, as part of the toolset, some quantum mapping tools (QMAP).
QDENSITY/QCWAVE [142] is a Mathematica package for simulating a quantum computer.
Qibo [37] is an open-source software for fast evaluation of quantum circuits and adiabatic evolution which takes full advantage of hardware accelerators.
QuCirDET [122] is a design and simulation tool for quantum circuits.
Quirk18 is an open-source web-based simulator built upon JavaScript that can be executed inside the web browser. An example of this system can be seen in Figure 8.
Qulacs [140] is a fast simulator for quantum circuits intended for research purposes.
QuIDDPro [150] is a graph-based simulator, specialized only in the simulation of the Grover algorithm.
QuTe,19 is a Quantum Testbed which aims to provide a high-performance quantum computing simulation platform open to research teams worldwide.
QX [75] is a simulation platform based on arrays which parallelizes quantum gates for performance improvement.
Fig. 8.
Fig. 8. Quirk simulator overview.
As we can observe in the previous list, there is a plethora of options when dealing with quantum computer simulation. Nevertheless, most of the approaches are proofs of concept or have not enough community support in order to become a standard. In this way, the most useful and most used simulators are the ones provided by the main quantum computers manufacturers (like IBM or D'Wave) along with the creators of the main quantum development platforms like Microsoft, Pennylane, or Google. There are also other important alternatives such as those proposed by Amazon Braket or Microsoft Quantum Azure that provide quantum simulation platforms in their cloud services and the open-source online tool Quirk, made with Javascript, which can be run in the web browser and helps rapid prototyping of quantum circuits.

3.3 Quantum Software Optimizers

Figure 9 shows different topologies for various IBM's quantum computers. These serve to prevent certain combinations of quantum gates between the different qubits in the circuit which, although theoretically possible, are not available in the physical computer. For this reason, quantum optimizers are needed to adapt the theoretical quantum circuit to the actual quantum computer topology. In addition, through quantum optimization, reliability can also be improved, and the effects of quantum noise are reduced (cf. Section 3.4).
Fig. 9.
Fig. 9. IBM quantum computer topologies.20
The main quantum optimizers, besides the IBM QX previously described, are [8]:
Feynman [9], a framework for the formal specification and verification of quantum circuits which is based on the Feynman path integral.
IonQ's tool [102], for handling continuous gate parameters and optimizing large-scale quantum circuits.
Newsynth/Gridsynth [127], which optimizes arbitrary single-qubit z-rotations by ancilla-free Clifford+T circuits.
pQCS [34], which uses a method for quantum circuit synthesis involving deterministic walks.
RevKit [137], an open-source C++ framework and library that implements a large set of reversible synthesis, optimizations, and mapping algorithms.
TOpt [22], with optimal algorithm decomposition into a sequence of many T gates interleaved with Clifford gates.
VOQC [62], which uses SQIR programs for proving the correctness of the optimizations and any other transformation performed.
Quantum software optimizers depend especially on the architecture of the quantum computer, so although there are some interesting initiatives that aim to optimize quantum algorithms, these proposals are limited in scope. Therefore, the best alternatives in this field are to be found in the manufacturers of quantum computers such as the IBM optimizer.

3.4 Quantum Tools and Libraries

Table 4, based on [52], shows the main quantum software tools and libraries that have been developed, including information about each one's type, distribution license, user interface, its use of
Table 4.
NameTypeLicenseUser interfaceQ GatesOther capabilitiesLanguageReferences
BackupBrain21BothOpen sourceGUIYesAlgorithms, DiagramsJavascript 
Bloch SphereBothOpen sourceGUI, 3D, Drag & dropYesAlgorithms, DiagramsJava[66]
CHPLibraryOpen sourceCommand-lineYesAlgorithmsC[1]
CirqBothOpen sourceCommand-lineYesAllPython[107]
Drqubit22ToolkitOpen source, freewareCommand-lineYesParallelismMATLAB 
EqcsLibraryOpen sourceCommand-lineYesNoneC[20]
FeynmanBothOpen sourceGUI, Command-lineYesAlgorithms, ParallelismMaple[124]
HOQSTToolkitOpen sourceCommand-lineYesDiagramsJulia[25]
JsquisBothOpen sourceCommand-lineYesNoneJavascript[138]
LanQLibraryOpen sourceCommand-lineYesAlgorithms, ParallelismLanQ[97]
libquantumLibraryOpen sourceCommand-lineYesAlgorithms, ParallelismC, C++[31, 53]
Linerar AI23LibraryFreewareGUI, Command-lineYesAlgorithms, DiagramsMathematica 
M-funLibraryOpen sourceGUI, Command-lineYesNoneMATLAB/ Octave[146]
Mukai24LibraryCommercialCommand-lineNoAccelerators, DiagramsPython 
Open QubitLibraryOpen sourceCommand-lineYesAlgorithmsC++[130]
OpenQASMBothOpen sourceCommand-lineYesDiagramsQASM[28, 29, 93]
OpenQUACSBothOpen sourceGUI, Command-lineYesAlgorithms, ParallelismMaple[92]
ProjectQBothOpen sourceCommand-lineYesAllPython[139]
Q-golBothOpen sourceGUI, 3D, Drag & dropYesAlgorithmsCaML[23]
Q-KitToolkitFreewareGUI, Drag & dropYesAll [143]
Q++25LibraryOpen sourceCommand-lineYesAlgorithms, DiagramsC++ 
QCADToolkitFreewareGUI, 3D, Drag & dropYesDiagrams [104]
QCGPUBothOpen sourceCommand-lineYesParallelismRust & OpenCL[74]
Qchas26LibraryOpen sourceCommand-lineYesDiagramsHaskell 
QCircuitsBothOpen sourceCommand-lineYesAllPython[155]
QDENSITYBothOpen sourceGUI, Command-lineYesDiagramsMathematica[73]
Qi27BothOpen sourceCommand-lineYesNoneMathematica 
QinfBothOpen sourceNoneYesDiagramsMaxima[99]
QIOLibraryOpen sourceCommand-lineYesDiagramsQio + Haskell[6]
QiskitBothOpen sourceGUI, Command-lineYesAllPython[27]
QMDDLibraryOpen sourceCommand-lineNoDiagramsC++[95]
QOCS28BothOpen sourceCommand-lineYesAlgorithmsOCaML 
QrackBothOpen sourceCommand-lineNoNoneC++[101]
QsimsBothOpen source, commercialCommand-lineYesAlgorithms, ParallelismC++[15]
QSWalk.jl29BothOpen sourceGUI, Command-lineYesNoneJulia 
QUA30ToolkitCommercialCommand-lineNoOptimizationQUA 
QuantavoBothOpen sourceCommand-lineYesAlgorithms, ParallelismMaple[40]
QuantencomputerBothNoneCommand-lineYesAlgorithmsMATLAB[144]
Quantum31BothFreewareGUI, Command-lineYesAllMathematica 
Quantum CircuitBothOpen sourceCommand-lineYesAlgorithms, DiagramsJavascript[150]
Quantum FogBothOpen sourceGUI, Drag & dropYesAll [32]
Quantum Programming StudioToolkitOpen sourceDrag & dropYesAlgorithms, Parallelism, DiagramsJavascript[69]
Quantum User Interface32ToolkitOpen sourceGUI, Drag & dropYesNoneProtobuf 
Quantum.NET33BothOpen sourceCommand-lineYesNoneNET 
Quantum++BothOpen sourceCommand-lineNoNoneC++[51]
QuantumOptics. jlBothOpen sourceGUI, 3D, Command-lineNoAlgorithms, DiagramsJulia[80]
QuantumUtilsBothOpen sourceCommand-lineYesParallelism, DiagramsMathematica[63]
QuantumWalk. jl34BothOpen sourceGUI, Command-lineYesAlgorithmsJulia 
Qubit Workbench35ToolkitCommercialGUI, Drag & dropYesAlgorithms, Diagrams  
Qubit Workbench36ToolkitFreewareGUI, Drag & dropYesNone  
Qubit4MatlabLibraryOpen sourceCommand-lineYesAllMATLAB[147]
QuESTBothOpen sourceCommand-lineYesNoneC[71]
QuIDEToolkitOpen sourceGUI, Drag & dropYesAll.NET[112]
QX Simulator37BothOpen sourceCommand-lineNoParallelismQuantum Code 
Scaffold/ScaffCCBothOpen sourceCommand-lineNoAlgorithmsScaffold[70]
SimQubitBothOpen sourceGUI, Drag & dropYesAlgorithms, DiagramsC++[113]
StaqBothOpen sourceCommand-lineYesNoneC[10]
TequilaLibraryOpen sourceCommand-lineYesNonePython[79]
Table 4. Quantum Software Tools and Technologies
quantum gates, its simulation and other capabilities, the programming language it relies on, plus some references.
As for the existing libraries oriented to support the creation of quantum algorithms, we can observe that they are available for the currently most used general purpose programming languages such as C, C++, Java, JavaScript, Python, Julia, or MATLAB, however, we can observe a special preference for adapting the libraries to Python, which has become the de facto standard in the encapsulation of quantum algorithms within classical systems that invoke them.

3.5 Full Stack Software of Main Quantum Computing Vendors

In this section we present the principal full stack platforms used in the quantum software sold by the main vendors (see Figure 10) and summarize the most important characteristics of each stack. In [83] we can find a comparison between the last three of these.
Fig. 10.
Fig. 10. Main quantum full stack platforms.
D-Wave38 is a Canadian firm offering an adiabatic quantum computer, specialized in the performance of optimization problems and various machine learning tasks. Its machine language is called “QMASM”, above which is the open source qbsolv library, which can solve optimization problems by decompiling QUBO problems (Quadartic UNconstrained Binary Optimization).
Google39 has its own quantum platform, called “Quantum AI”, for working with quantum circuits on near-term quantum computers. This platform is based on Circ, which is a Python library “for writing, manipulating and optimizing quantum circuits and running them against quantum computers and simulators” [83]. On top of this quantum Python library other libraries can be run, such as OpenFermion (which focuses on simulating fermionic systems, including quantum chemistry) and TensorFlow Quantum (for hybrid quantum-classical machine learning).
Honeywell,40 a U.S. company based in Charlotte, North Carolina, centers its efforts on providing quantum computing based on Trapped-ion technology. Honeywell's quantum computers do not yet have open access, but the idea behind their development is that these computers will in the future be compatible with quantum algorithms that can run on other companies’ computers.
IBM41 provides several quantum computers on a cloud-based service. These are programmed through quantum circuits using a web quantum composer or by defining them in Open QASM language. These circuits are supplied to the quantum computer through the QISkit Terra library as a platform provider. On top of these circuits, we can find several libraries focused on specific domains such as QISKit Aqua for quantum application.
Rigetti42 is an American company, based in California, which provides access to its quantum processors via its new ASPEN-8 processors. Their software stack is composed of several software components, such as the PyQuil programming language (provided as a Python library) and Quilc, an optimizing compiler for gate-based quantum programs. They also have a Quantum Virtual Machine as an open-source implementation of a quantum computation simulator.
Xanadu43 bases its quantum computing on photonic technology, which provides scalability, robustness, and the practicality of being able to operate at room temperature. Its devices are accessed through the Xanadu quantum cloud and feature the Strawberry Fields programming language provided as a Python library. On top of this stack, various libraries such as TensorFlow can be used to carry out domain-oriented applications. In addition, Xanadu provides a Python library called “Penny Lane” that aims to program a quantum computer in the same way as a neural network is trained. This Penny Lane library can also be used on other quantum platforms such as IBM, Google, or Rigetti.
As can be seen, there are many different proposals and technologies aimed at a quantum computer with ample computational power. Most of the proposals offer access to quantum computers in the cloud, although most of them must be used through proprietary libraries or languages. Several of them already support as part of the upper layers of the quantum software stack the use of other libraries and tools such as TensorFlow that are oriented to the realization of real applications, particularly those which are based on machine learning.
However, most of the quantum computing vendor full stack software are conceived for a specific underlying hardware, so that each manufacturer brings its own solutions, architectures, and specific hardware–software dependencies [65].

3.6 Quantum Software Development and Run Platforms

Besides the full stack environments that we mentioned in the previous section, there are also some suites, listed below, that can design and run quantum applications and workflows in a unique environment. These platforms normally interact with different quantum computers, quantum simulators, and tools:
1QBit44 provides a hardware-agnostic platform and several services to solve intractable industry problems. These services include 1Qloud which is a powerful optimization platform enabled by classical and quantum computers.
Aliro45 is a quantum platform mainly oriented to the creation and optimization of quantum networks and Quantum-secure communications, providing its services as Entanglement as a Service (EaaS) so that it can be used by applications.
Braket46 is the proposal from Amazon with which the US company aims to facilitate quantum computing and give access to different quantum computers and simulators hosted on the AWS platform. It provides an SDK that can create quantum algorithms and can run them on any compatible quantum hardware (such as D-Wave, IONQ, or Rigetti) provided through the Amazon Braket service, and it can also be employed using hybrid approaches such as Penny Lane or with Jupyter notepads. It also has a repository with pre-designed algorithms and tutorials and provides a machine and user administration environment. Although Braket does not specifically support hybrid software, it does offer a Platform as a Service (PaaS) that makes integration with classical software easier.
Classiq Technologies47 is a platform for the design of quantum algorithms through automation and synthesis technologies. This platform aims to create such quantum algorithms from ideas without the need for coding at the quantum gate level; for this task, they provide a programming environment that organizes the entire quantum software stack and creates algorithms compatible with the main quantum programming environments (such as Qiskit, Cirq, or Q-sharp) and which are portable to the different types of quantum hardware.
isQ-Core48 is a new quantum computing programming software developed by the Chinese Academy of Sciences in 2022. There is not much information about it on the literature yet, but it is claimed to be an important step in the combination of domestic quantum computing software and hardware.
Orquestra from Zapata49 is a quantum programming environment based on the construction of quantum workflows. These facilitate working at the right level of abstraction but nonetheless allow the programmer to get close to the hardware when necessary. It allows deployment, scaling, and parallelization of workflows by submitting them to Orquesta Quantum Engine servers via REST API, enabling their execution on classical and quantum devices, including quantum gate-based computers, quantum annealers, and classical quantum-inspired devices. Among the devices supported by this platform are IBM, Rigetti, IonQ, and Honeywell. Therefore, Orquestra supports the execution of hybrid software.
QPath50 is a quantum software development and lifecycle application platform which implements a complete lifecycle pipeline to create professional quantum software solutions [64]. QPath makes it easy to use different quantum programming languages and platforms for coding new quantum algorithms, using a Quantum Software Engineering approach. It provides several connections to the main quantum platforms, so it is possible to run the quantum algorithms in quantum computers such as IBM, Rigetti, or D-Wave, among others. Thus, QPath can also be used to integrate classical and quantum software and can be used to build hybrid systems.
Strangeworks QC51 is a platform designed to serve as the central hub for all quantum hardware and software vendors, enterprises, academia, and other entities. Its aim is to facilitate the application of quantum computing to a wide range of problems and research. Its user interface requires no installation or configuration and supports all major quantum frameworks, as well as collaboration and code sharing.
t|ket⟩ from CQC (Cambridge Quantum Computing)52 is an architecture-agnostic quantum software stack with its own compiler. It can translate machine-independent algorithms into executable circuits, optimizing them for physical qubit layout while at the same time reducing the number of operations that is required. On top of its basic quantum layer, several libraries can be executed, including ones that are related to chemistry, machine learning, finance, and cybersecurity.
Most of these software integrated development environments are more intended for experiment and executing independent quantum algorithms/circuits than a real business development environment [65]. In fact, they neither support complete rigorous quantum software lifecycle [117], nor quality quantum software development [149]. Two other very difficult challenges for this kind of environment are to work with both gate-based and annealing approaches, and to facilitate the development of integrated quantum/classical hybrid software in a dynamic way [118].

3.7 Quantum Software Error Correction Tools

QEC is an essential aspect in current NISQ (Noisy Intermediate Scale Quantum) computers. QEC can be accomplished at firmware level, but also at software level. Some of the tools available in this category are Devkit, Black Opal, or Boulder Opal [13].
Commercial full platforms provide their own QEC tools as well as methods like Microsoft error correction libraries53 and other internal proprietary methods in quantum computing platforms such as IBM or D-Wave.
When developing quantum software (as high level as we can), quantum error and possible error correction tools are usually not taken into account, delegating this task to proprietary tools implemented in the firmware of quantum platforms.

4 Quality Assessment of Quantum Software Platforms

This section first introduces a quality model to assess quantum software platforms, which is based on existing reference model for classical software plus other specific quality characteristics (cf. Section 4.1). Then, the quality model is preliminarily applied to assess main quantum software platforms (cf. Section 4.2).

4.1 Quantum Quality Criteria

In “The Talavera Manifesto” [119], we define some principles for Quantum Software Engineering and Programming, most of which can be used for a quantum software platform in accordance with the following quality requirements:
R1. It must be agnostic regarding quantum programming languages and technologies.
R2. It must embrace the coexistence of classical and quantum computing.
R3. It must support the management of quantum software development projects.
R4. It must consider the evolution of quantum software.
R5. It must aim at delivering quantum programs, if at all possible, with zero defects.
R6. It must assure the quality of quantum software.
R7. It must promote quantum software reuse.
R8. It must cover the governance and management of software.
The ISO/IEC 25010 standard [68] can be also used as a reference model to frame specific quality requirements for quantum software platforms. Some of the quality characteristics should be the same as those that apply in the “classical” integrated development environments, i.e., functional suitability, usability, security, maintainability, or portability, among others. However, three such characteristics should be regarded as particularly crucial:
Compatibility. It is very important that the platform offers interoperability between the different quantum computers, quantum programming languages, etc. (see R9).
Performance efficiency, mainly resource utilization and capacity. This could be accomplished by a scalable architecture, with optimizers of quantum circuits and programs (see R10).
Reliability. High error rates in quantum computation are due to a combination of factors including decoherence, dephasing of the qubit states, calibration errors, and readout and gate infidelities. Hence, the platform should include QEC tools and other mechanisms to improve reliability (see R11).

4.2 Evaluation of Integrated Quantum Software Platforms

It is very difficult to conduct an accurate and fair evaluation of the different quantum software platforms because they are continuously changing and adding new features and, in some cases, they are still at a beta stage.
However, we think that it can be useful at least to characterize the platforms according to the requirements mentioned above. To this end we will evaluate the requirements as follows: a tick means that the platform fulfills the requirement, and no tick means either that we consider that it does not fully deal with the corresponding requirement or that we do not have enough information to reach a decision about a certain requirement.
As Tables 5 and 6 show, there exist several approaches for quantum computing, and their number is increasing every day. Although most of the stacks and platforms are designed to facilitate algorithm creation, some of the desirable characteristics for quantum algorithms are missing in the majority of the environments.
Table 5.
RequirementD-WaveGoogleHoneywellIBMMicrosoftRigettiXanadu
R1-agnostic      
R2-coexistence
R3-project management      
R4-evolution       
R5-zero defects       
R6-quality       
R7-reuse  
R8-software governance       
R9-compatibility      
R10-efficiency
R11-reliability
Table 5. Quantum Stacks Review (Full Stacks)
Table 6.
Requirement1QBitAliroAmazon BraketClassiq TechnologiesZapata OrchestraQpathSrangeworksT|ket>
R1-agnostic 
R2-coexistence  
R3-project management   
R4-evolution       
R5-zero defects       
R6-quality       
R7-reuse  
R8-software governance        
R9-compatibility 
R10-efficiency 
R11-reliability
Table 6. Quantum Stacks Review (Integrated Platforms)
Some interesting project management features (see R3 in Table 6) are absent from almost every system, and quantum software governance is ignored in all of them. Despite the increasing number of quantum systems and software platforms and their rapid evolution, a lot of work is still needed to achieve adequate quality levels in quantum software platforms.

5 Main Implications for Researchers and Practitioners

This section provides some recommendations for researchers and practitioners by means of some general guidelines explaining how to benefit from this review depending on their current work. First, Section 5.1 is oriented for researchers, while Section 5.2 is devoted for explaining practitioners’ expectations.

5.1 Open Issues for Researchers

This paper presented a review about quantum software platforms contextualized in its main, critical components, ranging from programming languages to simulators, optimizers, tools or libraries, among others. The results of this review suggest that quantum software technology ‘is still in its infancy’ [103], hence a big-bang approach has emerged in the last years with a vast variety of programming languages and development platforms. This means that probably further languages and tools will appear in a near future.
In this context, the main recommendation for researchers is that they should be eager to update results of this review in the coming years. In this sense, the following points highlight some key research directions for every software component discussed in Section 3.
Programming languages. As stated in Section 3.1, the trend in the most recent programming languages is the addition of more and more abstractions. The lack of higher abstraction mechanisms was in fact the problem of the first languages. Additionally, some control structures and operations that are very common in most of the classical programming languages will probably be incorporated. This is due to the fact that most of the current quantum programming languages still have deficiencies in comparison with classical ones [14], for example (i) lack of control structures that can manage traditional control in addition to the non-deterministic and probabilistic ones; (ii) a deficient derivation of quantum programs in a compositional manner; and (iii) the absence of formulation of interfaces and signatures based on parameters to be computed dynamically.
Simulators and design environments. Various simulators already exist for comprehending quantum computing fundamentals and help to develop quantum algorithms. However, the next abstraction level is needed with regards to design environments that are more focused on software design than on quantum circuits. We refer to the high-level design of whole hybrid software systems including some existing modelling languages like UML [116], or other domain specific languages.
Optimizers. This point is key for success of quantum computing, especially in a moment when quantum computers are scaled in number of qubits. However, it is not a core area of quantum software engineering since it is more a task of co-design [145] of quantum hardware and the firmware needed for optimizing programs for the specific topology and other constraints.
Tools and libraries. There exist plenty of tools and libraries that have been proposed, some of them integrated in the full-stack landscapes for main quantum software vendors. Libraries covering domains that come up with built-in solutions for well-known problems in specific sectors is a field of research to be developed. Also, the creation and integration of libraries achieving a good level of usability and portability is a pending research topic.
Software development and run platforms. In a similar way to the need for high-level design tools, integrated development environments (IDEs) for designing, coding, and running quantum programs need to be improved. The future IDEs must tend to add the common features that existing IDEs for classical software already have, e.g., supporting different quantum programming languages and being technology-agnostic. Another research challenge is building “BizDevOps” quantum environments and facilitating continuous engineering from business needs, through the development of quantum solutions, to their deployment and operation [118].
Error correction tools. Error correction is a field with intensive research efforts, since it is key to maximize the whole potential of quantum computers, and consequently the software applications that runs on those devices.

5.2 Benefits of this Review for Practitioners

This section presents the main implications and some recommendations for different practitioners: fully newbie people, profiles coming from the quantum computing & engineering fields who want to learn about how to develop quantum software in a better way, other professionals coming from the traditional software engineering field who want to learn about quantum computing technology and programming, as well as decision-makers or managers.
Newbie. Inexperienced newcomers to quantum computing can consider this review as a landscape of the quantum software technology. It is specifically important to become familiar with quantum simulators and design environments (cf. Section 3.2) to get a better understanding of quantum foundations. Then, some of the quantum software development and run platforms (cf. Section 3.6) could be used to play with some of the running examples that are already available in such environments for which there is no need for in-depth knowledge.
Physicists and mathematicians. These professionals that work in the quantum computing field usually design new quantum algorithms in theoretical basis. In this point, some of the simulators and design environments (cf. Section 3.2) could be useful for this task. Sometimes they also implement those algorithms in an ad hoc way in scientific environments (some of them depicted in this review). However, other programming languages mentioned in this review (cf. Section 3.1) which operates at higher abstraction level could be useful for these practitioners.
Quantum programmers. This kind of professional is a subset with people coming from previous roles but also from the software engineering field. For this kind of professional, the tools and libraries presented in Section 3.4 are useful since those can be used as libraries with many quantum software solutions ready to be integrated in more complex, larger systems. Also, they should consider the quantum software development and run platforms (cf. Section 3.6) since it could provide some hints on how to boost the quantum programming task. Checking the programming languages review in Section 3.1 might be valuable as well.
Software engineers. Experienced software engineers who must cope with quantum software for the first time could primarily benefit from simulators and design environments (cf. Section 3.2), which can help them to learn about quantum software foundations. After that, they should check the review about quantum programming languages (cf. Section 3.1) in order to assess the most appropriate one for a certain project. Other important sections from which these practitioners can benefit is the review of the different full-stack technology landscapes of the amin vendors as well as software development and run platforms (cf. Sections 3.5 and 3.6). These parts offer some ideas on how to improve the production of quantum software by applying best practices of software engineering. For example, how to develop quantum software in a technological agnostic way and orchestrate the execution of quantum programs in different devices; how to measure, control, and assure quantum circuits quality [30]; or how to test quantum programs [44], among other interesting open issues.
Decision-makers/Managers. In the current state of the art concerning quantum software technology, the decision-making process is risky. In every project of quantum software development, many variables have to be decided (the programming language, the development environment, the target quantum devices, etc.). This entire review can help managers to make such decisions, in which the main risk is the future deprecation or the rise of new, different alternatives. Other important aspects to be considered by this profile is the set of existing software libraries (cf. Section 3.4) specifically developed for some business sectors, which could help to solve specific enterprise problems.

6 Conclusions

We are witnessing in quantum computing what is undoubtedly a revolution in information technology. This revolution is comparable to the industrial revolution of the 19th century, which led to the birth of the machine age, or to the changes that took place in the 20th century's information age. Today, quantum computers are a reality and are forecast to be exponentially more powerful than even the classical supercomputers. Experts reiterate that the 21st century will be “the quantum era”.
To take full advantage of this enormous computing potential that can enable us to solve real problems that are intractable when addressed by classical computers, it is of fundamental importance to have good and reliable software platforms. The transition of the proof-of-concept devices to become useful computational systems is beset by a range of new technical challenges, from improving and expanding qubit hardware to developing control/operating systems, to innovations in algorithms and applications. The success or otherwise in pursuing the solutions to these technical challenges will define the demand for the new generation of hardware, software, and application engineers needed to create and sustain the nascent quantum computing industry [88]. There are major opportunities in store for most business sectors, with many promising applications to be delivered in the future.
Lately, we have observed an explosion of different quantum programming languages, either as new stand-alone languages or as libraries to support traditional languages such as Python. But it is not enough to create the most suitable programming languages for this task if we do not also have the necessary environments and platforms to help in the construction of quantum algorithms for these new applications. We hope that the proposed functional and non-functional requirements listed above could serve as a guide for quantum software technology vendors when they are constructing new frameworks and platforms (or developing existing ones). The main implication of this research for practitioners, we believe, is that software developers need to support the production and operation of quantum software in an industrial and controlled way.
In this research we have conducted an extensive review of the principal quantum languages, libraries, platforms, and tools and found that most of them lack important characteristics such as quantum project support, quantum software governance, or a due focus on quantum software quality or quantum software evolution.
We are convinced that quantum software engineering presents us with an essential and highly motivating challenge, since quantum computing will allow us to unlock the key to a unique opportunity, in the same way as the pioneers of software engineering experienced with their groundbreaking work in the 1960’s. To do so, it is essential that classical and quantum software engineers revise methods, techniques, and practices, and, most of all, that they incorporate the guiding principles of Quantum Software Engineering to an appropriate degree [119].

Acknowledgments

We would like to thank all the aQuantum members, especially Guido Peterssen and Pepe Hevia, for their invaluable help and support.

Footnotes

References

[1]
Scott Aaronson and B. Toth. 2003. Simulation and Synthesis of Stabilizer Quantum Circuits.
[2]
Scott Aaronson. 2008. The limits of quantum. J. Scientific American 298, 3 (2008), 62–69.
[3]
Ali J. Abhari, Arvin Faruque, Mohammad J. Dousti, Lukas Svec, Oana Catu, Amlan Chakrabati, Chen-Fu Chiang, Seth Vanderwilt, John Black, and Fred Chong. 2012. Scaffold: Quantum programming language. Princeton Univ. NJ Dept. of Computer Science.
[4]
J. Abhijith, Adetokunbo Adedoyin, John Ambrosiano, Petr Anisimov, Andreas Bärtschi, William Casper, Gopinath Chennupati, Carleton Coffrin, Hristo Djidjev, David Gunter, Satish Karra, Nathan Lemons, Shizeng Lin, Alexander Malyzhenkov, David Mascarenas, Susan Mniszewski, Balu Nadiga, Daniel O'Malley, Diane Oyen, Scott Pakin, Lakshman Prasad, Randy Roberts, Phillip Romero, Nandakishore Santhi, Nikolai Sinitsyn, Pieter J. Swart, James G. Wendelberger, Boram Yoon, Richard Zamora, Wei Zhu, Stephan Eidenbenz, Patrick J. Coles, Marc Vuffray, and Andrey Y. Lokhov. 2018. Quantum algorithm implementations for beginners. arXiv e-prints, arXiv:1804.03719v2.
[5]
Gadi Aleksandrowicz, Thomas Alexander, Panagiotis Barkoutsos, Luciano Bello, Yael Ben-Haim, D. Bucher, F. J. Cabrera-Hernández, J. Carballo-Franquis, A. Chen, C.-F. Chen, J. M. Chow, A. D. Córcoles-Gonzales, A. J. Cross, A. Cross, J. Cruz-Benito, C. Culver, S. D. L. P. González, E. D. L. Torre, D. Ding, E. Dumitrescu, I. Duran, P. Eendebak, M. Everitt, I. F. Sertage, A. Frisch, A. Fuhrer, J. Gambetta, B. G. Gago, J. Gomez-Mosquera, D. Greenberg, I. Hamamura, V. Havlicek, J. Hellmers, Ł. Herok, H. Horii, S. Hu, T. Imamichi, T. Itoko, A. Javadi-Abhari, N. Kanazawa, A. Karazeev, K. Krsulich, P. Liu, Y. Luh, Y. Maeng, M. Marques, F. J. Martín-Fernández, D. T. McClure, D. McKay, S. Meesala, A. Mezzacapo, N. Moll, D. M. Rodŕıguez, G. Nannicini, P. Nation, P. Ollitrault, L. J. O'Riordan, H. Paik, J. Pérez, A. Phan, M. Pistoia, V. Prutyanov, M. Reuter, J. Rice, A. R. Davila, R. H. P. Rudy, M. Ryu, N. Sathaye, C. Schnabel, E. Schoute, K. Setia, Y. Shi, A. Silva, Y. Siraichi, S. Sivarajah, J. A. Smolin, M. Soeken, H. Takahashi, I. Tavernelli, C. Taylor, P. Taylour, K. Trabing, M. Treinish, W. Turner, D. Vogt-Lee, C. Vuillot, J. A. Wildstrom, J. Wilson, E. Winston, C. Wood, S. Wood, S. Wörner, I. Y. Akhalwaya, and C. Zoufal. 2019. Qiskit: An open-source framework for quantum computing.
[6]
Thorsten Altenkirch and Alexander S. Green. 2010. The quantum IO monad. Semantic Techniques in Quantum Computation. 173–205.
[7]
Thorsten Altenkirch and J. Grattage. 2005. A functional quantum programming language. In 20th Annual IEEE Symposium on Logic in Computer Science (LICS’05). IEEE, 249–258.
[8]
Matthew Amy. 2018a. Tools for Quantum Optimization. Michele Mosca, Martin Roetteler, and Peter Selinger (eds.). Quantum Programming Languages. Report from Dagstuhl Seminar 18381.
[9]
Matthew Amy. 2018b. Towards large-scale functional verification of universal quantum circuits. Proceedings QPL 2018, EPTCS 287, (2019), 1–21. arXiv:1901.09476.
[10]
Matthew Amy and Vlad Gheorghiu. 2020. staq-A full-stack quantum processing toolkit. Quantum Science and Technology.
[11]
André Van Tonder. 2004. A lambda calculus for quantum computation. SIAM J. Comput. 33, 5 (2004), 1109–1135.
[12]
Frank Arute, Kunal Arya, Ryan Babbush, Dave Bacon, Joseph C. Bardin, Rami Barends, Rupak Biswas, Sergio Boixo, Fernando G. S. L. Brandao, David A. Buell, Brian Burkett, Yu Chen, Zijun Chen, Ben Chiaro, Roberto Collins, William Courtney, Andrew Dunsworth, Edward Farhi, Brooks Foxen, Austin Fowler, Craig Gidney, Marissa Giustina, Rob Graff, Keith Guerin, Steve Habegger, Matthew P. Harrigan, Michael J. Hartmann, Alan Ho, Markus Hoffmann, Trent Huang, Travis S. Humble, Sergei V. Isakov, Evan Jeffrey, Zhang Jiang, Dvir Kafri, Kostyantyn Kechedzhi, Julian Kelly, Paul V. Klimov, Sergey Knysh, Alexander Korotkov, Fedor Kostritsa, David Landhuis, Mike Lindmark, Erik Lucero, Dmitry Lyakh, Salvatore Mandrà, Jarrod R. McClean, Matthew McEwen, Anthony Megrant, Xiao Mi, Kristel Michielsen, Masoud Mohseni, Josh Mutus, Ofer Naaman, Matthew Neeley, Charles Neill, Murphy Yuezhen Niu, Eric Ostby, Andre Petukhov, John C. Platt, Chris Quintana, Eleanor G. Rieffel, Pedram Roushan, Nicholas C. Rubin, Daniel Sank, Kevin J. Satzinger, Vadim Smelyanskiy, Kevin J. Sung, Matthew D. Trevithick, Amit Vainsencher, Benjamin Villalonga, Theodore White, Z. Jamie Yao, Ping Yeh, Adam Zalcman, Hartmut Neven, and John M. Martinis. 2019. Quantum supremacy using a programmable superconducting processor. Nature 574, 7779 (2019), 505–510.
[13]
Harrison Ball, Michael Biercuk, Andre Carvalho, Jiayin Chen, Michael R. Hush, Leonardo A. de Castro, Li Li, Per J. Liebermann, Harry Slatyer, and Claire Edmunds. 2021. Software tools for quantum control: Improving quantum computer performance through noise and error suppression. Quantum Science and Technology.
[14]
L. S. Barbosa. 2020. Software engineering for ‘quantum advantage’. Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops. Seoul, Republic of Korea, Association for Computing Machinery: 427–429.
[15]
Travis R. Beals. 2008. Quantum Communication and Information Processing. University of California, Berkeley.
[16]
Stefano Bettelli, Tommaso Calarco, and Luciano Serafini. 2003. Toward an architecture for quantum programming. The European Physical Journal D-Atomic, Molecular, Optical and Plasma Physics 25, 2 (2003), 181–200.
[17]
Benjamin Bichsel, Maximilian Baader, Timon Gehr, and Martin Vechev. 2020. Silq: A high-level quantum language with safe uncomputation and intuitive semantics. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation. 286–300.
[18]
Grady Booch. 2018. The history of software engineering. IEEE Software 35, 5 (2018), 108–114.
[19]
Mehdi Bozzo-Rey, John Longbotton, and Hausi A. Müller. 2019. Quantum computing: Challenges and opportunities. Proc. CASCON 19, November 2019, Toronto, Canada, 393–394.
[20]
Johan A. Brandhorst-Satzkorn. 2012. A Review of Freely Available Quantum Computer Simulation Software.
[21]
Lukas Burgholzer and Robert Wille. 2021. QCEC: A JKQ tool for quantum circuit equivalence checking. Software Impacts 7, 100051.
[22]
Earl T. Campbell and Mark Howard. 2017. Unified framework for magic state distillation and multiqubit gate synthesis with reduced resource cost. Physical Review A 95, 2 (2017), 022316.
[23]
Simona Caraiman, Alexandru Archip, and Vasile Manta. 2009. A grid enabled quantum computer simulator. In 2009 11th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing. IEEE, 189–196.
[24]
Arnab Chakraborty. 2011. QuECT: A new quantum programming paradigm. arXiv preprint arXiv:1104.0497.
[25]
Huo Chen and Daniel A. Lidar. 2020. HOQST: Hamiltonian open quantum system toolkit. arXiv preprint arXiv:2011.14046.
[26]
Frederic T. Chong, Diana Franklin, and Margaret Martonosi. 2017. Programming languages and compiler design for realistic quantum hardware. Nature 180 (2017), 549.
[27]
Andrew W. Cross. 2018. The IBM Q experience and QISKit open-source quantum computing software. In APS March Meeting Abstracts 2018, L58–003.
[28]
Andrew W. Cross, Lev S. Bishop, John A. Smolin, and Jay M. Gambetta. 2017. Open quantum assembly language. arXiv preprint arXiv:1707.03429.
[29]
Andrew W. Cross, Ali Javadi-Abhari, Thomas Alexander, Niel de Beaudrap, Lev S. Bishop, Steven Heidel, Colm Ryan, John Smolin, Jay M. Gambetta, and Blake R. Johnson. 2022. OpenQASM 3: A broader and deeper quantum assembly language. arXiv:2104.14722v1.
[30]
José A. Cruz-Lemus, Luis A. Marcelo, and Mario Piattini. 2021. Towards a set of metrics for quantum circuits understandability. In QUATIC 2021, CCIS, A. C. R. Paiva, A. R. Cavalli, P. Ventura Martins, and R. Pérez-Castillo (eds.). Springer, 1439 (2021), 239–249
[31]
Samuel da Silva Feitosa and Joao A. da Silva Bueno. 2016. Simulating quantum parallelism in CPU and GPU using the LibQuantum library. Communications and Innovations Gazette Magazine 1, 2 (2016), 26–36.
[32]
Henning Dekant, Henry Tregillus, Robert Tucci, and Tao Yin. 2019. artiste-qb-net/quantum-fog: Python tools for analyzing both classical 29 and quantum Bayesian Networks [Electronic resource]. https://github.com/artiste-qb-net/quantum-fog.
[33]
David Deutsch and Richard Jozsa. 1992. Rapid solutions of problems by quantum computation. Proceedings of the Royal Society of London A. 439 (1907), 553–558
[34]
Olivia Di Matteo and Michele Mosca. 2016. Parallelizing quantum circuit synthesis. Quantum Science and Technology 1, 1 (2016), 015003.
[35]
David P. DiVincenzo. 2000. The physical implementation of quantum computation. Fortschritte der Physik: Progress of Physics 48, 9-11 (2000), 771–783.
[36]
Vedran Dunjko and Hans J. Briegel. 2018. Machine learning & artificial intelligence in the quantum domain: A review of recent progress. Reports on Progress in Physics 81, 7 (2018), 074001.
[37]
Stavros Efthymiou, Sergi Ramos-Calderer, Carlos Bravo-Prieto, Adrián Pérez-Salinas, Diego García-Martín, Artur Garcia-Saez, José Ignacio Latorre, and Stefano Carrazza. 2020. Qibo: A framework for quantum simulation with hardware acceleration. arXiv preprint arXiv:2009.01845.
[38]
EQF - European Quantum Flagship. 2020. Strategic research agenda. (February 2020).
[39]
Alexander Erhard, Joel J. Wallman, Lukas Postler, Michael Meth, Roman Stricker, Esteban A. Martinez, Phillip Schindler, Thomas Monz, Joseph Emerson, and Rainer Blatt. 2019. Characterizing large-scale quantum computers via cycle benchmarking. Nature Communications 10, 1 (2019), 1–7.
[40]
Alvaro Feito. 2008. Quantavo: A maple toolbox for linear quantum optics. arXiv preprint arXiv:0806.2171.
[41]
Samuel S. Feitosa, Juliana K. Vizzotto, Eduardo K. Piveta, and Andre R. Du Bois. 2016. FJQuantum–A quantum object oriented language. Electronic Notes in Theoretical Computer Science 324 (2016), 67–77.
[42]
Davide Ferrari, Angela S. Cacciapuoti, Michele Amoretti, and Marcello Caleffi. 2021. Compiler design for distributed quantum computing. IEEE Transactions on Quantum Engineering 2 (2021), 1–20.
[43]
Richard P. Feynman. 1982. Simulating physics with computers. Int. J. Theor. Phys. 21, 6/7 (1982).
[44]
Antonio García de la Barrera, M. Polo, I. García-Rodriguez de Guzmán, and M. Piattini. 2022. Quantum Software Testing – state of the art. Journal of Software: Evolution and Process of Wiley, in Press. DOI:
[45]
Siddhant Garg and Goutham Ramakrishnan. 2020. Advances in quantum deep learning: An overview. arXiv preprint arXiv:2005.04316.
[46]
Sunita Garhwal, Maryam Ghorani, and Amir Ahmad. 2019. Quantum programming language: A systematic review of research topic and top cited languages. Archives of Computational Methods in Engineering. 1–22.
[47]
Simon J. Gay and Rajagopal Nagarajan. 2004. Communicating quantum processes. Proceedings of the 2nd International Workshop on Quantum Programming Languages (2004), 91–107.
[48]
Simon J. Gay and Rajagopal Nagarajan. 2005. Communicating quantum processes. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. 145–157.
[49]
Simon J. Gay. 2006. Quantum programming languages: Survey and bibliography. Mathematical Structures in Computer Science 16, 4 (2006), 581–600.
[50]
Alan Geller. 2020. Introducing quantum intermediate representation (QIR). Retrieved 03/22/2021, from https://devblogs.microsoft.com/qsharp/introducing-quantum-intermediate-representation-qir/.
[51]
Vlad Gheorghiu. 2014. Quantum++: A modern C++ quantum computing library. arXiv preprint arXiv:1412.4704.
[52]
S. Sukhpal, S. S. Gill, A. Kumar, H. Singh, M. Singh, K. Kaur, M. Usman, and R. Buyya. 2022. Quantum computing: A taxonomy, systematic review and future directions 52, 1 (2022), 66–114. DOI:
[53]
Ian Glendinning and Bernhard Ömer. 2003. Parallelization of the QC-lib quantum computer simulator library. In International Conference on Parallel Processing and Applied Mathematics. Springer, Berlin, 461–468.
[54]
Sabine Glesner. 2018. Wine cellar discussion on quantum programming languages. Dagstuhl Seminar 18381 on Quantum Programming Languages (2018).
[55]
Google AI Quantum Team. 2018. Cirq. https://github.com/quantumlib/Cirq.
[56]
Johnathan Grattage. 2006. QML: A Functional Quantum Programming Language. Doctoral dissertation, Ph.D. Thesis, The University of Nottingham.
[57]
Alexander S. Green, Peter L. Lumsdaine, Neil J. Ross, Peter Selinger, and Beno Valiron. 2013. An introduction to quantum programming in Quipper. In International Conference on Reversible Computation. Springer, Berlin, 110–124.
[58]
Alexander S. Green, Peter L. Lumsdaine, Neil J. Ross, Peter Selinger, and Beno Valiron 2013. Quipper: A scalable quantum programming language. ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’13. Seattle, WA, USA, (June 16-19, 2013), 333–342.
[59]
Lov K. Grover. 1996. A fast quantum mechanical algorithm for database search. Proceedings, 28th Annual ACM Symposium on the Theory of Computing (STOC). 212–219.
[60]
Thomas Häner, Damian S. Steiger, Mikhail Smelyanskiy, and Matthias Troyer. 2016. High performance emulation of quantum circuits. In SC'16: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis. IEEE, 866–874.
[61]
Jeff Heckey, Shruti Patil, Ali JavadiAbhari, Adam Holmes, Daniel Kudrow, Kenneth R. Brown, Diana Franklin, Frederic T. Chong, and Margaret Martonosi. 2015. Compiler management of communication and parallelism for quantum computation. Proceedings of the Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS’15. Istanbul, Turkey, ACM, (March 14-18, 2015), 445–456.
[62]
Kesha Hietala, Robert Rand, Shih-Han Hung, Xiaodi Wu, and Michael Hicks. 2020. A verified optimizer for quantum circuits. ACM on Programming Languages 5 (2020), 1–29.
[63]
N. Hincks, C. E. Granade, Troy Borneman, and David G. Cory. 2015. Controlling quantum devices with nonlinear hardware. Physical Review Applied 4, 2 (2015), 024012.
[64]
J. L. Hevia, G. Peterssen, and M. Piattini. 2021a. Software practice experience quantumpath: A quantum software development platform.
[65]
Jose Luis Hevia, Guido Peterssen, Christof Ebert, and Mario Piattini. 2021b. Quantum computing. IEEE Softw. 38, 5 (2021b), 7–15
[66]
Changming Huo. 2009. A Bloch Sphere Animation Software Using a Three Dimensional Java Simulator. Doctoral dissertation, University of Cincinnati.
[67]
IDB Interamerican Development Bank. 2019. Quantum technologies. Digital transformation, social impact, and cross-sector disruption.
[68]
ISO 2011. ISO/IEC 25010:2011. Systems and Software Engineering — Systems and Software Quality Requirements and Evaluation (SQuaRE) — System and software quality models. ISO.
[69]
Olga Ivancova, Vladimir Korenkov, Olga Tyatyushkina, Sergey Ulyanov, and Toshio Fukuda. 2020. Quantum supremacy in end-to-end intelligent IT. Pt. I: Quantum software engineering-quantum gate level applied models simulators. Systems Analysis in Science and Education 1 (2020), 52–84.
[70]
Ali JavadiAbhari, Shruti Patil, Daniel Kudrow, Jeff Heckey, Alexey Lvov, Frederic T. Chong, and Margaret Martonosi. 2015. ScaffCC: Scalable compilation and analysis of quantum programs. Parallel Computing 45 (2015), 2–17.
[71]
Tyson Jones, Anna Brown, Ian Bush, and Simon C. Benjamin. 2019. QuEST and high performance simulation of quantum computers. Scientific Reports 9, 1 (2019), 1–11.
[72]
Philippe Jorrand and Marie Lalire. 2004. From quantum physics to programming languages: A process algebraic approach. In International Workshop on Unconventional Programming Paradigms. Springer, Berlin, 1–16.
[73]
Bruno Juliá-Díaz, Joseph M. Burdis, and Frank Tabakin. 2006. QDENSITY—a Mathematica quantum computer simulation. Computer Physics Communications 174, 11 (2006), 914–934.
[74]
Adam Kelly. 2018. Simulating quantum computers using OpenCL. arXiv preprint arXiv:1805.00988.
[75]
Nader Khammassi, Imran Ashraf, Xiang Fu, Carmen G. Almudever, and Koen Bertels. 2017. QX: A high-performance quantum computer simulation platform. Proc. Design Autom. Test Europe, (2017), 464–469.
[76]
Nader Khammassi, Gian G. Guerreschi, Imran Ashraf, J. W. Hogaboam, Carmen G. Almudever, and Koen Bertels. 2018. cQASM v1.0: Towards a common quantum assembly language. arXiv:1805.09607v1.
[77]
Nader Khammassi, I. Ashraf, J. von Someren, R. Nane, A. M. Krol, M. A. Rol, L. Lao, K. Bertels, and C. G. Almudever. 2020. OpenQL: A portable quantum programming framework for quantum accelerators. arXiv:2005.13283v1.
[78]
Nathan Killoran, Josh Izaac, Nicolás Quesada, Ville Bergholm, Matthew Amy, and Christian Weedbrook. 2019. Strawberry Fields: A software platform for photonic quantum computing. Quantum 3 (2019), 129.
[79]
Jakob S. Kottmann, Sumner Alperin-Lea, Teresa Tamayo-Mendoza, Alba Cervera-Lierta, Cyrille Lavigne, Tzu-Ching Yen, Vladyslav Verteletskyi, Philipp Schleich, Abhinav Anand, Matthias Degroote, Skylar Chaney, Maha Kesibi, Naomi Grace Curnow, Brandon Solo, Georgios Tsilimigkounakis, Claudia Zendejas-Morales, Artur F. Izmaylov, and Alán Aspuru-Guzik. 2020. TEQUILA: A platform for rapid development of quantum algorithms. arXiv:2011.03057v1.
[80]
Sebastian Krämer, David Plankensteiner, Laurin Ostermann, and Helmut Ritsch. 2018. QuantumOptics. jl: A Julia framework for simulating open quantum systems. Computer Physics Communications 227 (2018), 109–116.
[81]
Marie Lalire and Phillipe Jorrand. 2004. A process algebraic approach to concurrent and distributed quantum computation: Operational semantics. arXiv preprint quant-ph/0407005.
[82]
Andrei Lapets, Marcus P. da Silva, Mike Thome, Aaron Adler, Jacob Beal, and Martin Roetteler. 2013. QuaFL: A typed DSL for quantum programming. In Proceedings of 1st Annual Workshop on Functional Programming Concepts in Domain-specific Language (FPCDS’13). 19–26.
[83]
Ryan LaRose. 2019. Overview and comparison of gate level quantum software platforms. Quantum 3 (2019), 130.
[84]
Ang Li and Sriram Krishnamoorthy. 2020. QASMBench: A low-level QASM benchmark suite for NISQ evaluation and simulation. arXiv:2005.13018v1.
[85]
Shusen Liu, Xin Wang, Li Zhou, Ji Guan, Yinan Li, Yang He, Runyao Duan, and Mingsheng Ying. 2018. Q |SI ⟩: A quantum programming environment. In Symposium on Real-Time and Hybrid Systems. Springer, 133–164.
[86]
Xiao Liu and John Kubiatowicz. 2013. Chisel-Q: Designing quantum circuits with a Scala embedded language. In 2013 IEEE 31st International Conference on Computer Design (ICCD). IEEE, 427–434.
[87]
Wolfgang Mauerer. 2005. Semantics and simulation of communication in quantum programming. arXiv preprint quant-ph/0511145.
[88]
Dimitri Maslov, Yunseong Nam, and Jungsang Kim. 2019. An outlook for quantum computing [Point of View]. Proceedings of the IEEE 107, 1 (2019), 5–10.
[89]
Philip Maymin. 1996. Extending the lambda calculus to express randomized and quantumized algorithms. arXiv preprint quant-ph/9612052.
[90]
Alexander McCaskey, Eugene Dumitrescu, Dimitri Liakh, and Travis Humble. 2018. Hybrid programming for near-term quantum computing systems. 2018 IEEE International Conference on Rebooting Computing (ICRC).
[91]
Jarrod R. McClean, Jonathan Romero, Ryan Babbush, and Alán Aspuru-Guzik. 2016. The theory of variational hybrid quantum-classical algorithms. New Journal of Physics 18, 2 (2016), 023023.
[92]
Christopher B. McCubbin. 2000. Openquacs, An Open-Source Quantum Computation Simulator in Maple. Doctoral dissertation, University of Maryland, Baltimore County.
[93]
David C. McKay, Thomas Alexander, Luciano Bello, Michael J. Biercuk, Lev Bishop, Jiayin Chen, Jerry M. Chow, Antonio D. Córcoles, Daniel Egger, Stefan Filipp, Juan Gomez, Michael Hush, Ali Javadi-Abhari, Diego Moreda, Paul Nation, Brent Paulovicks, Erick Winston, Christopher J. Wood, James Wootton, and Jay M. Gambetta. 2018. Qiskit backend specifications for OpenQASM and OpenPulse experiments. arXiv preprint arXiv:1809.03452.
[94]
Konstantinos Meichanetzidis, Stefano Gogioso, Giovanni De Felice, Nicolò Chiappori, Alexis Toumi, and Bob Coecke. 2020. Quantum natural language processing on near-term quantum computers. Submitted to Quantum Physics and Logic (QPL), (2020). arXiv:2005.04147v1.
[95]
Michael D. Miller and Mitchell A. Thornton. 2006. QMDD: A decision diagram structure for reversible and quantum circuits. In 36th International Symposium on Multiple-Valued Logic (ISMVL'06). IEEE, 30–30.
[96]
Daniel Mills, Seyon Sivarajah, Travis L. Scholten, and Ross Duncan. 2021. Application-motivated, holistic benchmarking of a full quantum computing stack. Quantum 5 (2021), 415.
[97]
Hynek Mlnarik. 2007. Operational semantics and type soundness of quantum programming language LanQ. arXiv preprint arXiv:0708.0890.
[98]
Hynek Mlnarik. 2008. Semantics of quantum programming language LanQ. International Journal of Quantum Information 6, supp01 (2008), 733–738.
[99]
Christine C. Moran. 2016. Quintuple: A Python 5-qubit quantum computer simulator to facilitate cloud quantum computing. arXiv preprint arXiv:1606.09225.
[100]
Benjamin C. Morrison, Andrew J. Landahl, Daniel S. Lobser, Kennet M. Rudinger, Antonio E. Russo, Jay W. Van Der Wall, and Peter Maunz. 2020. Just another quantum assembly language (Jaqal). In 2020 IEEE International Conference on Quantum Computing and Engineering (QCE). IEEE, 402–408.
[101]
Waleed Naeem and Yousaf Chuhdhry. 2019. Q-Studio. Doctoral dissertation, Department of Computer Science, COMSATS University Islamabad, Lahore campus.
[102]
Yunseong Nam, Neil J. Ross, Yuan Su, Andrew M. Childs, and Dimitri Maslov. 2018. Automated optimization of large quantum circuits with continuous parameters. npj Quantum Information 4, 1 (2018), 1–12.
[103]
Y. Naveh. (June 23, 2021). Quantum software development is still in its infancy. Retrieved from https://www.forbes.com/sites/forbestechcouncil/2021/06/23/quantum-software-development-is-still-in-its-infancy.
[104]
Erik Nielsen, Xujiao Gao, Irina Kalashnikova, Richard P. Muller, Andrew G. Salinger, and Ralph W. Young. 2013. QCAD simulation and optimization of semiconductor double quantum dots. Tech. Rep., Sandia National Laboratories.
[105]
Bernhard Ömer. 1998. A Procedural Formalism for Quantum Computing. Master's thesis. Department of Theoretical Physics, Technical University of Vienna.
[106]
Bernhard Ömer. 2005. Classical concepts in quantum programming. International Journal of Theoretical Physics 44, 7 (2005), 943–955.
[107]
Victory Omole, Akhilesh Tyagi, Calista Carey, A. J. Hanus, Andrew Hancock, Austin Garcia, and Jake Shedenhelm. 2020. Cirq: A Python framework for creating, editing, and invoking quantum circuits. http://sdmay20-08.sd.ece.iastate.edu/docs/Design-Document-v2.pdf.
[108]
Scott Pakin. 2016. A quantum macro assembler. In 2016 IEEE High Performance Extreme Computing Conference (HPEC). IEEE, 1–8.
[109]
Luca Paolini and Margherita Zorzi. 2017. qPCF: A language for quantum circuit computations. In International Conference on Theory and Applications of Models of Computation. Springer, Cham, 455–469.
[110]
Luca Paolini, Luca Roversi, and Margherita Zorzi. 2018. Quantum programming made easy. In 2018 Joint International Workshop on Linearity and Trends in Linear Logic and Applications, Linearity-TLLA 2018, 292 (2018). 133–147.
[111]
Luca Paolini, Mauro Piccolo, and Margherita Zorzi. 2019. QPCF: Higher-order languages and quantum circuits. Journal of Automated Reasoning 63, 4 (2019), 941–966.
[112]
Joanna Patrzyk. 2014. Graphical and Programming Support for Simulations of Quantum Computations. Master of Science thesis supervised by Katarzyna Rycerz.
[113]
Joanna Patrzyk, Bartolomej Patrzyk, Katarzyna Rycerz, and Marian Bubak. 2015. Towards a novel environment for simulation of quantum computing. Computer Science 16, 1 (2015), 103–129.
[114]
Jennifer Paykin, Robert Rand, and Steve Zdancewic. 2017. QWIRE: A core language for quantum circuits. Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, ACM, (January 18-20, 2017), 846–858.
[115]
Ricardo Pérez-Castillo, Manuel A. Serrano, and Mario Piattini 2021. Software modernization to embrace quantum technology. Advances in Engineering Software 151 (2021), 102933.
[116]
Ricardo Pérez-Castillo, Luis Jiménez-Navajas, and Mario Piattini. 2021b. Modelling quantum circuits with UML. Paper presented at the 43rd ACM/IEEE International Conference on Software Engineering Workshops. 2021 IEEE/ACM 2nd International Workshop on Quantum Software Engineering (Q-SE), Virtual (originally in Madrid, Spain).
[117]
Ricardo Pérez-Castillo, Manuel A. Serrano, José A. Cruz-Lemus, and Mario Piattini. 2022. Guidelines to Use the Incremental Commitment Spiral Model for Developing Quantum-Classical Software. In press. 2022
[118]
G. Peterssen, M. Piattini, and J. L. Hevia. 2022. Practical quantum computing: Challenges of quantum software development. QuantumPath Blog. https://www.quantumpath.es/2022/01/31/practical-quantum-computing-challenges-of-quantum-software-development/.
[119]
Mario Piattini, Guido Peterssen, Ricardo Pérez-Castillo, José L. Hevia, Manuel A. Serrano, Guillermo Hernández, Ignacio García Rodríguez de Guzmán, Claudo A. Paradela, Macario Polo, Ezequiel Murina, Luis Jiménez, Juan C. Marqueño, Ramsés Gallego, Jordi Tura, Frank Phillipson, Juan M. Murillo, Alfonso Niño, and Moisés Rodríguez. 2020a. The Talavera Manifesto for Quantum Software Engineering and Programming. http://ceur-ws.org/Vol-2561/paper0.pdf.
[120]
Mario Piattini, Guido Peterssen, and Ricardo Pérez-Castillo. 2020b. Quantum computing: A new software engineering golden age. ACM SIGSOFT Software Engineering Notes 45, 3 (2020b), 12–14.
[121]
Mario Piattini, Manuel A. Serrano, Ricardo Pérez-Castillo, Guido Peterssen, and José L. Hevia. 2021. Towards a quantum software engineering. IT Professional 23, 1 (1 Jan.-Feb. 2021), 62–66. DOI:
[122]
Konstantinos Prousalis and Nikos Konofaos. 2016. QuCirDET: A design and simulation tool for quantum circuits. In 2016 5th International Conference on Modern Circuits and Systems Technologies (MOCAST). IEEE, 1–4.
[123]
Matt Purkeypile. 2009. Cove: A Practical Quantum Computer Programming Framework. Ph.D. dissertation. Colorado Technical University. https://arxiv.org/abs/0911.2423.
[124]
T. Radtke and Stephan Fritzsche. 2005. Simulation of n-qubit quantum systems. I. Quantum registers and quantum gates. Computer Physics Communications 173, 1-2 (2005), 91–113.
[125]
Salonik Resch and Ulya R. Karpuzcu. 2019. Quantum computing: An overview across the system stack. arXiv:1905.07240v1.
[126]
Francisco Rios and Peter Selinger. 2017. A categorical model for a quantum circuit description language. In Proceedings 14th International Conference on Quantum Physics and Logic (QPL 2017). 164–178.
[127]
Neil J. Ross and Peter Selinger. 2016. Optimal ancilla-free Clifford+T approximation of z-rotations. Quantum Information and Computation 16 (11-12), 901–953. arXiv:1403.2975v3.
[128]
Mehdi Saeedi and Igor L. Markov. 2013. Synthesis and optimization of reversible circuits - a survey. ACM Computing Surveys 45, 2 (2013), 21:1–21:34.
[129]
Jeff W. Sanders and Paolo Zuliani. 2000. Quantum programming. In International Conference on Mathematics of Program Construction. Springer, 80–99.
[130]
Scott D. Schneider. 2000. Quantum Systems Simulator. Doctoral dissertation, Massachusetts Institute of Technology.
[131]
Peter Selinger. 2004a. Towards a quantum programming language. Math Struct. Computer Science 14, 4 (2004a), 527–586.
[132]
Peter Selinger. 2004b. Towards a semantics for higher-order quantum computation. In Proceedings of the 2nd International Workshop on Quantum Programming Languages. TUCS General Publication No, 33, 127–143.
[133]
Peter Selinger and Beno Valiron. 2006. A lambda calculus for quantum computation with classical control. Mathematical Structures in Computer Science 16, 3 (2006), 527.
[134]
Peter W. Shor. 1994. Algorithms for quantum computation: Discrete logarithms and factoring. Proceedings 35th Annual Symposium on Foundations of Computer Science. IEEE Computer Society. Press, 124–134.
[135]
Mikhail Smelyanskiy, Nicolas P. Sawaya, and Alán Aspuru-Guzik. 2016. qHiPSTER: The quantum high performance software testing environment. arXiv preprint arXiv:1601.07195.
[136]
Robert S. Smith, Michael J. Curtis, and William J. Zeng. 2016. A practical quantum instruction set architecture. arXiv: 1608.03355.
[137]
Mathias Soeken, Stefan Frehse, Robert Wille, and Rolf Drechsler. 2012. RevKit: A toolkit for reversible circuit design. Multiple-Valued Logic and Soft Computing 18, 1 (2012), 55–65.
[138]
Rupesh Srivastava, Iris Choi, Tim Cook, and NQIT User Engagement Team. 2016. The commercial prospects for quantum computing. Networked Quantum Information Technologies.
[139]
Damian S. Steiger, Thomas Häner, and Matthias Troyer. 2018. ProjectQ: An open source software framework for quantum computing. Quantum 2, 49.
[140]
Yasunari Suzuki, Yoshiaki Kawase, Yuya Masumura, Yuria Hiraga, Masahiro Nakadai, Jiabao Chen, Ken M. Nakanishi, Kosuke Mitarai, Ryosuke Imai, Shiro Tamiya, Takahiro Yamamoto, Tennin Yan, Toru Kawakubo, Yuya O. Nakagawa, Yohei Ibe, Youyuan Zhang, Hirotsugu Yamashita, Hikaru Yoshimura, Akihiro Hayashi, and Keisuke Fujii. 2020. Qulacs: A fast and versatile quantum circuit simulator for research purpose. arXiv:2011.13524v1.
[141]
Krysta Svore, Alan Geller, Matthias Troyer, John Azariah, Christopher Granade, Bettina Heim, Vadym Kliuchnikov, Mariia Mykhailova, Andres Paz, and Martin Roetteler. 2018. Q# enabling scalable quantum computing and development with a high-levelDSL. In Proceedings of the Real World Domain Specific Languages Workshop (2018). 1–10.
[142]
Frank Tabakin and Bruno Juliá-Díaz. 2011. QCWAVE–a Mathematica quantum computer simulation update. Computer Physics Communications 182, 8 (2011), 1693–1707.
[143]
Archana Tankasala and Hesameddin Ilatikhameneh. 2019. Quantum-Kit: Simulating Shor's Factorization of 24-Bit Number on Desktop. arXiv preprint arXiv:1908.07187.
[144]
Michael Terörde. 2019. Registry-Spuren verursacht durch die Quantenprogrammiersprache Q.
[145]
Teague Tomesh and Margaret Martonosi. 2021. Quantum codesign. IEEE Micro. 41, 5 (2021), 33–40. DOI:
[146]
A. S. Tolba, M. Z. Rashad, and Mohammed A. El-Dosuky. 2013. Q#, a quantum computation package for the .NET platform. arXiv preprint arXiv:1302.5133.
[147]
Géza Tóth. 2008. QUBIT4MATLAB V3. 0: A program package for quantum information science and quantum optics for MATLAB. Computer Physics Communications 179, 6 (2008), 430–437.
[148]
Beno Valiron, Neil J. Ross, Peter Selinger, D. S. Alexander, and Jonathan M. Smith. 2015. Programming the quantum future. CACM 58, 8 (2015).
[149]
Javier Verdugo, Moisés Rodríguez, and Mario Piattini. 2021. Software quality issues in quantum information systems. Q-SET@QCE 2021, 54–59.
[150]
George F. Viamontes, Igor L. Markov, and John P. Hayes 2009. Quantum Circuit Simulation. Springer Verlag, (2009).
[151]
Petros Wallden and Elhan Kashefi. 2019. Cyber security in the quantum era. Communications of the ACM 62, 4 (April 2019), 120–129.
[152]
Dave Wecker and Krysta M. Svore. 2014. LIQUi|>: A software design architecture and domain-specific language for quantum computing. arXiv:1402.4467.
[153]
Robert Wille, Stefan Hillmich, and Lukas Burgholzer. 2020. JKQ: JKU tools for quantum computing. In 2020 IEEE/ACM International Conference on Computer Aided Design (ICCAD). IEEE, 1–5.
[154]
Jia-Fu Xu, Fang-Min Song, Shi-Jun Qian, Jing-An Dai, and Yun-Jie Zhang. 2008. Quantum programming language NDQJava. Journal of Software 19, 1 (2008), 1–8.
[155]
P. V. Zagorodko. 2020. Research of Possibilities of Quantum Programming for Realization of Tasks of Machine Learning. Doctoral dissertation.
[156]
Yao Zhang and Qiang Ni. 2020. Recent advances in quantum machine learning. Quantum Engineering 2, 1 (2020), e34.
[157]
Jianjun Zhao. 2020. Quantum Software Engineering: Landscapes and Horizons. arXiv preprint arXiv:2007.07047.
[158]
Alwin Zulehner and Robert Wille. 2019. Advanced simulation of quantum computations. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 38, 5 (2019), 848–863.
[159]
Alwin Zulehner, Alexandru Paler, and Robert Wille. 2017. An efficient methodology for mapping quantum circuits to the IBM QX architectures. arXiv:1712.04722v3.
[160]
Paolo Zuliani. 2001. Quantum Programming. PhD thesis, Oxford University Computing Laboratory. http://www.comlab.ox.ac.uk. Accessed 8 Apr. 2019.
[161]
Paolo Zuliani. 2004. Non-deterministic quantum programming. 2nd International Workshop on Quantum Programming Languages, P. Selinger (ed.), 179–195.

Cited By

View all
  • (2025)Architecture decisions in quantum software systems: An empirical study on Stack Exchange and GitHubInformation and Software Technology10.1016/j.infsof.2024.107587177(107587)Online publication date: Jan-2025
  • (2024)The impact of quantum computing on the development of algorithms and softwareData and Metadata10.56294/dm2024.2423Online publication date: 3-Oct-2024
  • (2024)A Model-Driven Framework for Composition-Based Quantum Circuit DesignACM Transactions on Quantum Computing10.1145/36888565:4(1-36)Online publication date: 21-Aug-2024
  • Show More Cited By

Index Terms

  1. Quantum Software Components and Platforms: Overview and Quality Assessment

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM Computing Surveys
      ACM Computing Surveys  Volume 55, Issue 8
      August 2023
      789 pages
      ISSN:0360-0300
      EISSN:1557-7341
      DOI:10.1145/3567473
      Issue’s Table of Contents

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 23 December 2022
      Online AM: 18 July 2022
      Accepted: 04 July 2022
      Revision received: 18 April 2022
      Received: 07 June 2021
      Published in CSUR Volume 55, Issue 8

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. Quantum computing
      2. quantum software
      3. quantum platforms
      4. Quantum Software Engineering

      Qualifiers

      • Survey
      • Refereed

      Funding Sources

      • QHealth: Quantum Pharmacogenomics Applied to Aging
      • 2020 CDTI Missions Program (Center for the Development of Industrial Technology of the Ministry of Science and Innovation of Spain)
      • SMOQUIN
      • QSERV-UCLM
      • Spanish Ministry of Science and Innovation (MICINN) and UE

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)3,662
      • Downloads (Last 6 weeks)394
      Reflects downloads up to 10 Oct 2024

      Other Metrics

      Citations

      Cited By

      View all
      • (2025)Architecture decisions in quantum software systems: An empirical study on Stack Exchange and GitHubInformation and Software Technology10.1016/j.infsof.2024.107587177(107587)Online publication date: Jan-2025
      • (2024)The impact of quantum computing on the development of algorithms and softwareData and Metadata10.56294/dm2024.2423Online publication date: 3-Oct-2024
      • (2024)A Model-Driven Framework for Composition-Based Quantum Circuit DesignACM Transactions on Quantum Computing10.1145/36888565:4(1-36)Online publication date: 21-Aug-2024
      • (2024)Quff: A Dynamically Typed Hybrid Quantum-Classical Programming LanguageProceedings of the 21st ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3679007.3685063(65-81)Online publication date: 13-Sep-2024
      • (2024)A Quantum Annealing Instance Selection Approach for Efficient and Effective Transformer Fine-TuningProceedings of the 2024 ACM SIGIR International Conference on Theory of Information Retrieval10.1145/3664190.3672515(205-214)Online publication date: 2-Aug-2024
      • (2024)Using and Evaluating Quantum Computing for Information Retrieval and Recommender SystemsProceedings of the 47th International ACM SIGIR Conference on Research and Development in Information Retrieval10.1145/3626772.3661378(3017-3020)Online publication date: 10-Jul-2024
      • (2024)A Taxonomic View of the Fundamental Concepts of Quantum Computing–A Software Engineering PerspectiveProgramming and Computing Software10.1134/S036176882308010849:8(682-704)Online publication date: 24-Jan-2024
      • (2024)Quantum computing with oscillatory quantaQuantum Computing, Communication, and Simulation IV10.1117/12.3000438(38)Online publication date: 13-Mar-2024
      • (2024)From Quantum Software Handcrafting to Quantum Software Engineering2024 IEEE International Conference on Software Analysis, Evolution and Reengineering - Companion (SANER-C)10.1109/SANER-C62648.2024.00026(149-150)Online publication date: 12-Mar-2024
      • (2024)Generic Quantum Blockchain-Envisioned Security Framework for IoT Environment: Architecture, Security Benefits and Future ResearchIEEE Open Journal of the Computer Society10.1109/OJCS.2024.33973075(248-267)Online publication date: 2024
      • Show More Cited By

      View Options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      HTML Format

      View this article in HTML Format.

      HTML Format

      Get Access

      Login options

      Full Access

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media