Content deleted Content added
Added page about the quantum programming language QCL |
No edit summary |
||
(24 intermediate revisions by 13 users not shown) | |||
Line 1:
{{refimprove|date=March 2018}}
'''Quantum Computation Language''' (QCL) is one of the first implemented quantum [[programming languages]].<ref>{{cite web|url=http://tph.tuwien.ac.at/~oemer/qcl.html |title=QCL - A Programming Language for Quantum Computers |website=tuwien.ac.at |date= |accessdate=2017-07-20}}</ref> The most important feature of QCL is the support for user-defined operators and functions. Its [[syntax]] resembles the syntax of the [[C programming language]] and its classical [[data type]]s are similar to primitive data types in C. One can combine classical code and quantum code in the same program. ▼
▲'''Quantum Computation Language''' ('''QCL''') is one of the first implemented [[quantum programming]] [[programming languages|languages]].<ref>{{cite web|url=http://tph.tuwien.ac.at/~oemer/qcl.html |title=QCL - A Programming Language for Quantum Computers |website=tuwien.ac.at |access-date
The QCL standard library provides standard quantum operators used in quantum algorithms such as:▼
The language was created before there were multi-qubit quantum computers and the only implementation of QCL uses an interpreter with a built-in classically simulated quantum computer.
* controlled-not with many target qubits,▼
QCL was created to explore programming concepts for quantum computers.<ref>{{cite thesis|last=Ömer |first=Bernhard |date=2000-01-20 |title=Quantum Programming in QCL|publisher=Institute for Theoretical Physics, Vienna University of Technology|url=http://tph.tuwien.ac.at/~oemer/doc/quprog.pdf |access-date=2021-05-24}}</ref><ref>{{cite journal|last=Ömer|first=Bernhard|title=Classical Concepts in Quantum Programming|journal=International Journal of Theoretical Physics|date=29 Apr 2003|volume=44|issue=7|pages=943–955|doi=10.1007/s10773-005-7071-x|arxiv=quant-ph/0211100|s2cid=119373370}}</ref><ref>{{cite web|title=Structured Quantum Programming|last=Ömer|first=Bernhard|url=http://tph.tuwien.ac.at/~oemer/doc/structquprog.pdf|date=2 September 2009|publisher=Institute for Theoretical Physics, Vienna University of Technology}}</ref>
▲The QCL
* [[Hadamard operation]] on many qubits,
*
* Quantum algorithms for addition, multiplication and exponentiation with binary constants (all modulus n)
* The [[Quantum Fourier transform|quantum fourier transform]]
== Syntax ==
Line 12 ⟶ 20:
**Classical - int, real, complex, boolean, string, vector, matrix, tensor
*Function types
**qufunct - Pseudo-classic operators. Can only change the permutation of
**operator - General unitary operators. Can change the amplitude.
**procedure - Can call measure, print, and dump inside this function. This function is non-invertible.
Line 27 ⟶ 35:
The basic built-in quantum data type in QCL is the qureg (quantum register). It can be interpreted as an array of qubits (quantum bits).
<syntaxhighlight lang="cpp">
</syntaxhighlight>
Since the qcl interpreter uses qlib simulation library, it is possible to observe the internal state of the quantum machine during execution of the quantum program.
<syntaxhighlight lang="text">
</syntaxhighlight>
Note that the dump operation is different from measurement, since it does not influence the state of the quantum machine and can be realized only using a simulator.
Like in modern programming languages, it is possible to define new operations which can be used to manipulate quantum data. For example:
<syntaxhighlight lang="cpp">
}
</syntaxhighlight>
defines inverse about the mean operator used in [[Grover's algorithm]] (it is sometimes called ''Grover's diffusion operator''). This allows one to define algorithms on a higher level of abstraction and extend the library of functions available for programmers.
== References ==
{{reflist}}
[[Category:Programming languages]]
[[Category:Quantum programming]]
|