“Quantum software is, in fact, the key to success.” [1]

“Quantum software is essential for quantum networks and computing.” [2]

For a (universal) computer to work properly, not only does one needs working hardware, but one also needs a means to instruct each component of the hardware what to do to achieve one’s goal. This is the function of computer programmes or software. The process of developing software is what we call programming. Similar to those in classical computer, several quantum programming languages as well as Software Development Kit (SDK) for quantum programming are created in order to help programmers to write quantum programmes efficiently. However, since there are currently only few running quantum computers, only some of these can actually be implemented on the existing machines. The rest of them still work with simulators on classical computers only.

Quantum programming languageBelow are a list of existing quantum programming languages with some detail:– Blackbird: Developed to be used with photonic continuous variable system or qumode (instead of qubit) by Xanadu, a quantum photonic company based in Toronto, Canada.https://strawberryfields.readthedocs.io/en/latest/tutorials/blackbird.html

– Cirq: An open source Python framework developed by Google. It was announced in the First International Workshop on Quantum Software and Quantum Machine Learning (QSML) in July 2018 and is designed to work with Noisy Intermediate-Scale Quantum hardware.https://ai.googleblog.com/2018/07/announcing-cirq-open-source-framework.html

– CQC and t|ket>: CQC is a C-like language designed to be used with t|ket>, a quantum programming environment, both of which are developed by Cambridge Quantum Computing Limited. They are planned to be used by the ion trap based platform of the Networked Quantum Information Technologies Hub (NQIT), part of the United Kingdom National Quantum Technology Programme, as well as the superconducting platform developing by Oxford Quantum Circuits.https://cambridgequantum.com/cqcwp/wp-content/uploads/2018/01/t_ket_.pdf

– Forest: A Software Development Kit developed by Rigetti, one of the companies that provides an open access to their quantum computer via cloud. The language is implemented in Python.https://www.rigetti.com/forest

– LanQ: developed by MLNAŘÍK Hynek from Faculty of Informatics, Masaryk University. It is a C-like programming language and is designed to allow combination of classical and quantum computation.http://lanq.sourceforge.net/

– Q#: A domain-specific quantum programming language released in December 2017, developed by Microsoft. It is designed for programming quantum subroutines which is to work with classical main programme. The lastest version is Q# 0.3– Qibo: developed by Qilimanjaro. It is designed to support other platforms developed by IBM, Rigetti, Microsoft, and D-Wave. The language is based on Python.https://medium.com/@qilimanjaro/qibo-alpha-is-coming-now-f2494ad7ab9c

Disclaimer: There is a high chance that some languages are missing from this list.

So far, IBM [IBM Q or Qiskit] and Regetti [Rigetti website] are the only two companies that provide the public with the access to programme and run on their quantum computers by cloud services.

With quantum programming available, quantum software are developing as well, even though most of them can still be run on a simulator on classical computer only. An example of a quantum software called Qbsolv, which is designed for finding a minimum of a large quadratic unconstrained binary optimisation, is developed by D-Wave to be used on their D-Wave.https://www.dwavesys.com/press-releases/d-wave-initiates-open-quantum-software-environment Surprisingly, some people start to write games using quantum programming!https://github.com/msohaibalam/Link_to_Quantum_gamehttps://hackernoon.com/an-interactive-tutorial-on-quantum-programming-327da388f859https://medium.com/qiskit/how-to-program-a-quantum-computer-982a9329ed02

In order to achieve the goal of developing quantum software to be used by quantum computers, quantum programming languages as well as quantum algorithms are currently developing by many groups, both from academic and private sectors around the world. However, there are only two companies so far, IBM and Regetti, that provide cloud service access for the public to try programming and running the programmes on their actual quantum machines, which still have quite limited functionality. The current lack of efficient hardware hinders the development of sophisticated quantum software and leads to the idea of Noisy Intermediate-Scale Quantum [3] algorithm and software, where both the algorithm and the software are designed to be used with the limited hardware available, with the hope that they can still lead to some results that are beyond what the classical algorithm and software can provide (quantum supremacy).

Quantum information theory is the theory that underlies the applications of quantum phenomena to information and computing technology. In quantum information theory, bizarre nature of quantum systems is exploited to develop more efficient information processing. On the other hand, nature of quantum systems are studied from the information-theoretic point of view by analysing how quantum information corresponding to systems changes and how quantum physical phenomena can be described in terms of information processing. One of the main concepts in quantum information theory is “quantum bit” or “qubit” which is the most fundamental unit of quantum information, similar to the usual bit in its classical counterpart. A qubit is made of a two-level quantum state. Due to the superposition property, a qubit can be 0 and 1 simultaneously, as opposed to the normal bit that can only be either 0 or 1 at a time. Superposition can also apply to several qubits together, which gives rise to another concept called quantum entanglement. These quantum features allow more efficient and secure encoding and help accelerate some information processing beyond what existing classical methods can offer.

[1] http://www.qusoft.org/software/

[2] https://qutech.nl/quantumsoftware/https://quantum-journal.org/views/qv-2018-06-14-4/#knill96

[3] https://quantum-journal.org/papers/q-2018-08-06-79/