QCL – A Programming Language for Quantum Computers
itp.tuwien.ac.at
itp.tuwien.ac.at
As discussed in a recent paper [1][2], it's pragmatic to think of quantum computation in a coprocessor model. QCL takes a different approach: a high-level language that has a quantum datatype in the midst of the traditional classical datatypes along with their plethora of classical operations. I think that cordoning off the quantum computation as much as possible into a separate processing unit will make eventual adoption much easier. It also makes integration with existing languages much easier. QCL doesn't preclude this idea, but having a quantum coprocessor model implicitly manifest in QCL makes its implementation very difficult.
A very rough analogy, I suppose, would be "let's make Haskell more accessible by doing away with monads and referential transparency". At that point, you've departed from the paradigm Haskell puts forth, and you actually haven't made Haskell any bit accessible.
Your second point about "prototype in Python, rewrite slow bits in C". There isn't, as far as I'm concerned, that sort of problem with quantum programming at the moment. Maybe in a decade or two. It is difficult enough to even get an algorithm working altogether, let alone reasoning about speeding it up. To reason about speedups, you need a framework in which you can reason about performance on some machine model. One such machine model is described in the aforementioned reference.
https://www.youtube.com/watch?v=GO6TsdwxcwM
I wish he had the people and support to help make animations and present the formulas in the correct notations. It starts to make sense though.
I want to get into quantum computing, especially since IBM has one you can play with on-line (your program queues up like old fashion punch cards):
https://quantumexperience.ng.bluemix.net/
..but to really use it, you need to know how these super weird quantum gates work. From what I can tell with QCL, everything a quantum computer can do, we can do with traditional computers. It's just that simulating 100 qbits takes an ungodly amount of memory and processing power. Quantum computers can't replace traditional computers, they're for a very specific problem space that can be defined with these quantum gate concepts.
My simulator, Quirk [2], is a bit easier to experiment with than IBM's. But it still assumes you know the basics.
Similar to how the connection machines were programmed in *Lisp.
Unless there are good alternatives to this, a quantum computer will never execute anything more complicated than an algorithm.
Actually I remember tuwien.ac.at from the times where I was downloading software sources from FTP mirrors in the early 90s, so that's a good nostalgic fit :-)
A suggestion for other researchers: start with a git repository and documentation written as .md files. Then write your thesis with LaTeX and export a PDF if you feel like, but for all the developers the source of truth will be the repository and the mds.
int Fibonacci(int n) { // calculate the n-th
int i; // Fibonacci number
int f; // by iteration
for i = 1 to n {
f = 2*f+i;
}
return f;
}With this sequence of numbers 1,1,2,3,5,8 it seems to be calculating
f=0 as 2 * 0+1=1 ; f=1 as 2 * 1+1=3 ; f=2 as 2 * 2+1=5 ; f=3 as 2 * 3+2=8 ;
then f=4 should be 2*5+3=13
I'm not sure how 2 is calculated unless i=0, but this is why I'm not even a novice.
Optical computers will be drop in replacements for our current ones won't they?