Introduction to Quantum Programming
Jaroslaw Miszczak IITiS PAN
April 27, 2018 QIPLSIGML—Machine Learning meets Quantum Computation
Introduction to Quantum Programming 1/40 Our goals
Quantum programming
Manipulation of quantum gates
Programming QRAM
High-level programming
What next?
Q?
Introduction to Quantum Programming 2/40 I Introduce various approaches to quantum programming. I Write some code.
Our goals
I Understand the difference between quantum and classical programming.
Introduction to Quantum Programming 3/40 I Write some code.
Our goals
I Understand the difference between quantum and classical programming. I Introduce various approaches to quantum programming.
Introduction to Quantum Programming 3/40 Our goals
I Understand the difference between quantum and classical programming. I Introduce various approaches to quantum programming. I Write some code.
Introduction to Quantum Programming 3/40 Our goals
I Understand the difference between quantum and classical programming. I Introduce various approaches to quantum programming. I Write some code. ( Talk is cheap. Show me the quantum code.) ≡
Introduction to Quantum Programming 3/40 Quantum programming
Introduction to Quantum Programming 4/40 Quantum programming What is quantum programming?
Quantum programming is a process that leads from an original formulation of a computing problem to executable quantum computer programs.
Introduction to Quantum Programming 5/40 I The process of preparing programs for a quantum computer is especially attractive because it not only can be economically and scientifically rewarding, it can also be an aesthetic experience much like composing poetry or music. I Only the modern quantum computer has made quantum programming both challenging and relevant.
Quantum programming What is quantum programming?
I The only way to learn a new quantum programming language is by writing programs in it.
Introduction to Quantum Programming 6/40 I Only the modern quantum computer has made quantum programming both challenging and relevant.
Quantum programming What is quantum programming?
I The only way to learn a new quantum programming language is by writing programs in it. I The process of preparing programs for a quantum computer is especially attractive because it not only can be economically and scientifically rewarding, it can also be an aesthetic experience much like composing poetry or music.
Introduction to Quantum Programming 6/40 Quantum programming What is quantum programming?
I The only way to learn a new quantum programming language is by writing programs in it. I The process of preparing programs for a quantum computer is especially attractive because it not only can be economically and scientifically rewarding, it can also be an aesthetic experience much like composing poetry or music. I Only the modern quantum computer has made quantum programming both challenging and relevant.
Introduction to Quantum Programming 6/40 I Play with quantum mechanics. I Stretch your imagination by creating a new programming language with quantum elements... I ...or a language for describing quantum mechanics.
Quantum programming Why bother?
I Use real quantum computers.
Introduction to Quantum Programming 7/40 I Stretch your imagination by creating a new programming language with quantum elements... I ...or a language for describing quantum mechanics.
Quantum programming Why bother?
I Use real quantum computers. I Play with quantum mechanics.
Introduction to Quantum Programming 7/40 I ...or a language for describing quantum mechanics.
Quantum programming Why bother?
I Use real quantum computers. I Play with quantum mechanics. I Stretch your imagination by creating a new programming language with quantum elements...
Introduction to Quantum Programming 7/40 Quantum programming Why bother?
I Use real quantum computers. I Play with quantum mechanics. I Stretch your imagination by creating a new programming language with quantum elements... I ...or a language for describing quantum mechanics.
Introduction to Quantum Programming 7/40 I Level 1: Programming QRAM. I Level 2: High-level programming.
Quantum programming How to do quantum programming?
I Level 0: Manipulation of quantum gates.
Introduction to Quantum Programming 8/40 I Level 2: High-level programming.
Quantum programming How to do quantum programming?
I Level 0: Manipulation of quantum gates. I Level 1: Programming QRAM.
Introduction to Quantum Programming 8/40 Quantum programming How to do quantum programming?
I Level 0: Manipulation of quantum gates. I Level 1: Programming QRAM. I Level 2: High-level programming.
Introduction to Quantum Programming 8/40 Manipulation of quantum gates
Introduction to Quantum Programming 9/40 Manipulation of quantum gates
Level 0 Direct usage of quantum gates.
I Visual manipulation of gates and circuits. I Multiplication of matrices and vectors.
Introduction to Quantum Programming 10/40 Manipulation of quantum gates Visual manipulation of gates and circuits
https://quantumexperience.ng.bluemix.net/qx/editor
Introduction to Quantum Programming 11/40 Manipulation of quantum gates Visual manipulation of gates and circuits
http://www.quide.eu/ and https://bitbucket.org/quide/
Introduction to Quantum Programming 12/40 I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits. I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!
Manipulation of quantum gates Visual manipulation of gates and circuits
I Direct manipulation of quantum gates, measurement.
Introduction to Quantum Programming 13/40 I Useful for testing small circuits. I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!
Manipulation of quantum gates Visual manipulation of gates and circuits
I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE).
Introduction to Quantum Programming 13/40 I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!
Manipulation of quantum gates Visual manipulation of gates and circuits
I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits.
Introduction to Quantum Programming 13/40 I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!
Manipulation of quantum gates Visual manipulation of gates and circuits
I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits. I Not so much for real algorithms.
Introduction to Quantum Programming 13/40 I But you can use a real quantum computer!
Manipulation of quantum gates Visual manipulation of gates and circuits
I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits. I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q).
Introduction to Quantum Programming 13/40 Manipulation of quantum gates Visual manipulation of gates and circuits
I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits. I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!
Introduction to Quantum Programming 13/40 I ...quantum gates are just matrices (at most 4 4, and don’t mention the decoherence)... × I ...only the final step is somehow strange. I Real Programmers do Quantum Computing in FORTRAN.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
You already know that I quantum states are just vectors (at least we would like them to be)
Introduction to Quantum Programming 14/40 I ...only the final step is somehow strange. I Real Programmers do Quantum Computing in FORTRAN.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
You already know that I quantum states are just vectors (at least we would like them to be) I ...quantum gates are just matrices (at most 4 4, and don’t mention the decoherence)... ×
Introduction to Quantum Programming 14/40 I Real Programmers do Quantum Computing in FORTRAN.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
You already know that I quantum states are just vectors (at least we would like them to be) I ...quantum gates are just matrices (at most 4 4, and don’t mention the decoherence)... × I ...only the final step is somehow strange.
Introduction to Quantum Programming 14/40 Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
You already know that I quantum states are just vectors (at least we would like them to be) I ...quantum gates are just matrices (at most 4 4, and don’t mention the decoherence)... × I ...only the final step is somehow strange. I Real Programmers do Quantum Computing in FORTRAN.
Introduction to Quantum Programming 14/40 Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
For example, in Julia...
Introduction to Quantum Programming 15/40 Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
For example, in Julia...
Examples in Wolfram can be found in the GitHub repo
Introduction to Quantum Programming 15/40 I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence.
I Because...
I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
I Actually this is almost as good as it gets!
Introduction to Quantum Programming 16/40 I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
I Actually this is almost as good as it gets! I Because...
Introduction to Quantum Programming 16/40 I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
I Actually this is almost as good as it gets! I Because... I ...you already know the language.
Introduction to Quantum Programming 16/40 I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
I Actually this is almost as good as it gets! I Because... I ...you already know the language. I ...it is very easy to implement classical control.
Introduction to Quantum Programming 16/40 I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
I Actually this is almost as good as it gets! I Because... I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence.
Introduction to Quantum Programming 16/40 I And in most cases you don’t need all the power/libraries/etc coming with the host language.
Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
I Actually this is almost as good as it gets! I Because... I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management.
Introduction to Quantum Programming 16/40 Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices
I Actually this is almost as good as it gets! I Because... I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.
Introduction to Quantum Programming 16/40 I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave I QuTiP (Python library): http://qutip.org/
I Packages/matrix manipulation libraries:
I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators
Manipulation of quantum gates Where to go next?
I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor
Introduction to Quantum Programming 17/40 I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave I QuTiP (Python library): http://qutip.org/ I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators
Manipulation of quantum gates Where to go next?
I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor I Packages/matrix manipulation libraries:
Introduction to Quantum Programming 17/40 I QuTiP (Python library): http://qutip.org/ I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators
Manipulation of quantum gates Where to go next?
I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor I Packages/matrix manipulation libraries: I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave
Introduction to Quantum Programming 17/40 I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators
Manipulation of quantum gates Where to go next?
I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor I Packages/matrix manipulation libraries: I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave I QuTiP (Python library): http://qutip.org/
Introduction to Quantum Programming 17/40 Manipulation of quantum gates Where to go next?
I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor I Packages/matrix manipulation libraries: I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave I QuTiP (Python library): http://qutip.org/ I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators
Introduction to Quantum Programming 17/40 Programming QRAM
Introduction to Quantum Programming 18/40 Programming QRAM What is QRAM?
QRAM Quantum Random Access Machine ≡
the sequence of elementary gates the description of algorithm in abstract model
QCL Quantum Computation Language (32 qubits, seed 1156322590) [0/32] 1 |0> qcl> qureg a[10]; qcl> H(a);[10/32] 0.03125 |0> + ... + 0.03125 |1023> (1024 terms) qcl> CNot(a[2],a[5]);[10/32] 0.03125 |0> + ... + 0.03125 |1023> (1024 terms) qcl> list a; : global a = <0,1,2,3,4,5,6,7,8,9> qureg a[10] qcl> dump a[1]; qcl> : SPECTRUM a[1]: <1>0.5 |0>, 0.5 |1>qcl>
Quantium III
probability distribution classical controlling device quantum memory for further analysis the outcome of measurement
Introduction to Quantum Programming 19/40 I compound quantum operations
I classical control of quantum operations
Programming QRAM Advantages of QRAM
I data abstraction
Introduction to Quantum Programming 20/40 I compound quantum operations
I classical control of quantum operations
Programming QRAM Advantages of QRAM
I data abstraction allocation of quantum memory ≡
Introduction to Quantum Programming 20/40 I classical control of quantum operations
Programming QRAM Advantages of QRAM
I data abstraction allocation of quantum memory ≡ I compound quantum operations
Introduction to Quantum Programming 20/40 I classical control of quantum operations
Programming QRAM Advantages of QRAM
I data abstraction allocation of quantum memory ≡ I compound quantum operations functions encapsulating sequence of quantum gates or quantum≡ primitives
Introduction to Quantum Programming 20/40 Programming QRAM Advantages of QRAM
I data abstraction allocation of quantum memory ≡ I compound quantum operations functions encapsulating sequence of quantum gates or quantum≡ primitives I classical control of quantum operations
Introduction to Quantum Programming 20/40 Programming QRAM Advantages of QRAM
I data abstraction allocation of quantum memory ≡ I compound quantum operations functions encapsulating sequence of quantum gates or quantum≡ primitives I classical control of quantum operations loops, ifs etc. mixed with quantum code ≡
Introduction to Quantum Programming 20/40 Programming QRAM Software architecture
(embeded) intermediate low-level QIR control pulses DSL representation
gate pyQuil Quil 19Q Acorn library
Introduction to Quantum Programming 21/40 I data abstraction allocation of classical and quantum registers based on→ qu(b d)its | I quantum functions custom elementary gates defined by matrices or compound→ statements I classical control of quantum memory by using host language →
Programming QRAM Quantum middleware
I embedded domain specific language C/Python/Wolfram/Haskell with library→ of functions
Introduction to Quantum Programming 22/40 I quantum functions custom elementary gates defined by matrices or compound→ statements I classical control of quantum memory by using host language →
Programming QRAM Quantum middleware
I embedded domain specific language C/Python/Wolfram/Haskell with library→ of functions I data abstraction allocation of classical and quantum registers based on→ qu(b d)its |
Introduction to Quantum Programming 22/40 I classical control of quantum memory by using host language →
Programming QRAM Quantum middleware
I embedded domain specific language C/Python/Wolfram/Haskell with library→ of functions I data abstraction allocation of classical and quantum registers based on→ qu(b d)its | I quantum functions custom elementary gates defined by matrices or compound→ statements
Introduction to Quantum Programming 22/40 Programming QRAM Quantum middleware
I embedded domain specific language C/Python/Wolfram/Haskell with library→ of functions I data abstraction allocation of classical and quantum registers based on→ qu(b d)its | I quantum functions custom elementary gates defined by matrices or compound→ statements I classical control of quantum memory by using host language →
Introduction to Quantum Programming 22/40 I auto-magic quantum memory management I integration with classical machine
Programming QRAM ...its advantages...
I easy to learn and use
Introduction to Quantum Programming 23/40 I integration with classical machine
Programming QRAM ...its advantages...
I easy to learn and use I auto-magic quantum memory management
Introduction to Quantum Programming 23/40 Programming QRAM ...its advantages...
I easy to learn and use I auto-magic quantum memory management I integration with classical machine
Introduction to Quantum Programming 23/40 I lack of expressibility
Programming QRAM ...and its disadvantages
I very similar to low-level code
Introduction to Quantum Programming 24/40 Programming QRAM ...and its disadvantages
I very similar to low-level code I lack of expressibility
Introduction to Quantum Programming 24/40 Programming QRAM Example 1: ProjectQ
I Python library developed by ETH (https://projectq.ch/) I offers various targets I hardware (IBM Q Experience) I resource counter (???) I graphical circuit representation
Introduction to Quantum Programming 25/40 Programming QRAM Example 1: ProjectQ
Introduction to Quantum Programming 26/40 Programming QRAM Example 1: ProjectQ
Nice features I Natural (for physicist) syntax for executing quantum gates. I Meta instructions for quantum-controlled quantum operations and support for reverse call
Introduction to Quantum Programming 27/40 Programming QRAM Example 1: ProjectQ
Some examples...
Introduction to Quantum Programming 28/40 Programming QRAM Example 1: ProjectQ
Metainstruction Control Execution of the code is based on the state of quantum register.
0 H | i
0 H | i
0 | i
Introduction to Quantum Programming 29/40 Programming QRAM Example 1: ProjectQ
Metainstruction Dagger Reverse execution of the quantum code.
0 H H | i
0 | i
Introduction to Quantum Programming 30/40 I pyQuil Python library for manipulating quantum programmes≡ in Quill. I Access to Rigetti 19Q-Acorn quantum computer! I More during the third day: Adam Szady, Quantum programming with (Py)Quil.
Programming QRAM Example 2: Rigetti Forest and pyQuil
I Quil quantum assembly language. ≡
Introduction to Quantum Programming 31/40 I Access to Rigetti 19Q-Acorn quantum computer! I More during the third day: Adam Szady, Quantum programming with (Py)Quil.
Programming QRAM Example 2: Rigetti Forest and pyQuil
I Quil quantum assembly language. ≡ I pyQuil Python library for manipulating quantum programmes≡ in Quill.
Introduction to Quantum Programming 31/40 I More during the third day: Adam Szady, Quantum programming with (Py)Quil.
Programming QRAM Example 2: Rigetti Forest and pyQuil
I Quil quantum assembly language. ≡ I pyQuil Python library for manipulating quantum programmes≡ in Quill. I Access to Rigetti 19Q-Acorn quantum computer!
Introduction to Quantum Programming 31/40 Programming QRAM Example 2: Rigetti Forest and pyQuil
I Quil quantum assembly language. ≡ I pyQuil Python library for manipulating quantum programmes≡ in Quill. I Access to Rigetti 19Q-Acorn quantum computer! I More during the third day: Adam Szady, Quantum programming with (Py)Quil.
Introduction to Quantum Programming 31/40 High-level programming Domain specific languages
Level 2 Domain specific language with data and function abstraction.
I QCL (http://tph.tuwien.ac.at/~oemer/qcl.html) I LanQ (http://lanq.sourceforge.net/) I QPL anc cQPL (https://arxiv.org/abs/quant-ph/0511145) I Scaffold (https://github.com/epiqc/ScaffCC)
Introduction to Quantum Programming 32/40 I Architecture independent programming language for quantum computers.
High-level programming Example 1: QCL – focus on quantum computing
I First release in 1998, last in 2014 (http://tph.tuwien.ac.at/~oemer/qcl.html).
Introduction to Quantum Programming 33/40 High-level programming Example 1: QCL – focus on quantum computing
I First release in 1998, last in 2014 (http://tph.tuwien.ac.at/~oemer/qcl.html). I Architecture independent programming language for quantum computers.
Introduction to Quantum Programming 33/40 I Different types of quantum memory for better optimization. I Quantum conditions — quantum-controlled execution (generalization of controlled gates). I Various types of compound statements (related with memory management): quantum operators, quantum functions, procedures.
High-level programming Example 1: QCL – focus on quantum computing
Features I Syntax for reversibility (uncomputing).
Introduction to Quantum Programming 34/40 I Quantum conditions — quantum-controlled execution (generalization of controlled gates). I Various types of compound statements (related with memory management): quantum operators, quantum functions, procedures.
High-level programming Example 1: QCL – focus on quantum computing
Features I Syntax for reversibility (uncomputing). I Different types of quantum memory for better optimization.
Introduction to Quantum Programming 34/40 I Various types of compound statements (related with memory management): quantum operators, quantum functions, procedures.
High-level programming Example 1: QCL – focus on quantum computing
Features I Syntax for reversibility (uncomputing). I Different types of quantum memory for better optimization. I Quantum conditions — quantum-controlled execution (generalization of controlled gates).
Introduction to Quantum Programming 34/40 High-level programming Example 1: QCL – focus on quantum computing
Features I Syntax for reversibility (uncomputing). I Different types of quantum memory for better optimization. I Quantum conditions — quantum-controlled execution (generalization of controlled gates). I Various types of compound statements (related with memory management): quantum operators, quantum functions, procedures.
Introduction to Quantum Programming 34/40 I quconst — cannot be modified, I quvoid — has to be empty before the call, I quscratch — has to be empty before and after the call.
High-level programming Example 1: QCL – focus on quantum computing
Advanced quantum memory management using types: I qureg — basic type for quantum registers,
Introduction to Quantum Programming 35/40 I quvoid — has to be empty before the call, I quscratch — has to be empty before and after the call.
High-level programming Example 1: QCL – focus on quantum computing
Advanced quantum memory management using types: I qureg — basic type for quantum registers, I quconst — cannot be modified,
Introduction to Quantum Programming 35/40 I quscratch — has to be empty before and after the call.
High-level programming Example 1: QCL – focus on quantum computing
Advanced quantum memory management using types: I qureg — basic type for quantum registers, I quconst — cannot be modified, I quvoid — has to be empty before the call,
Introduction to Quantum Programming 35/40 High-level programming Example 1: QCL – focus on quantum computing
Advanced quantum memory management using types: I qureg — basic type for quantum registers, I quconst — cannot be modified, I quvoid — has to be empty before the call, I quscratch — has to be empty before and after the call.
Introduction to Quantum Programming 35/40 I qufunct — used to implement irreversible functions, I operator — compound quantum operation.
High-level programming Example 1: QCL – focus on quantum computing
Types of quantum functions: I procedure — classically controlled quantum computation,
Introduction to Quantum Programming 36/40 I operator — compound quantum operation.
High-level programming Example 1: QCL – focus on quantum computing
Types of quantum functions: I procedure — classically controlled quantum computation, I qufunct — used to implement irreversible functions,
Introduction to Quantum Programming 36/40 High-level programming Example 1: QCL – focus on quantum computing
Types of quantum functions: I procedure — classically controlled quantum computation, I qufunct — used to implement irreversible functions, I operator — compound quantum operation.
Introduction to Quantum Programming 36/40 High-level programming Example 1: QCL – focus on quantum computing
Some examples...
Introduction to Quantum Programming 37/40 I Functional paradigm. I No publicly available implementation. I Syntax for creating quantum communication channels by sharing (entangled) qubits.
High-level programming Example 2: cQPL – focus on quantum communication
I QPL (formal specification) and cQPL (implementation of QPL, https://arxiv.org/abs/quant-ph/0511145)
Introduction to Quantum Programming 38/40 I No publicly available implementation. I Syntax for creating quantum communication channels by sharing (entangled) qubits.
High-level programming Example 2: cQPL – focus on quantum communication
I QPL (formal specification) and cQPL (implementation of QPL, https://arxiv.org/abs/quant-ph/0511145) I Functional paradigm.
Introduction to Quantum Programming 38/40 I Syntax for creating quantum communication channels by sharing (entangled) qubits.
High-level programming Example 2: cQPL – focus on quantum communication
I QPL (formal specification) and cQPL (implementation of QPL, https://arxiv.org/abs/quant-ph/0511145) I Functional paradigm. I No publicly available implementation.
Introduction to Quantum Programming 38/40 High-level programming Example 2: cQPL – focus on quantum communication
I QPL (formal specification) and cQPL (implementation of QPL, https://arxiv.org/abs/quant-ph/0511145) I Functional paradigm. I No publicly available implementation. I Syntax for creating quantum communication channels by sharing (entangled) qubits.
Introduction to Quantum Programming 38/40 What next?
I IF D-Wave GOTO Andy Mason and Sheir Yarkoni, Tutorial on programming the D-Wave system I IF IBM GOTO Ram Duˇsi´cHren, IBM Q Experience: Hands-on workshop I IF Rigetti GOTO Adam Szady, Quantum programming with (Py)Quil
Introduction to Quantum Programming 39/40 Q?
Q? https://github.com/jmiszczak/qprog-tutorial
Introduction to Quantum Programming 40/40