programming a quantum computer without understanding how it works

I can write a program for my PC without understanding any of the physics behind its circuts. I’ve read about quantum computers (which perhaps have yet to be built), and am wondering if it is possible to program one without understanding anything about quantum mechanics.

Quantum computers don’t yet exist. When they do, programming will be the same as programming a digital (classical) computer in the sense that you won’t need to understand quantum physics to write programs. However, there will be a totally different set of operations which are fast on a quantum computer, so a new understanding of the logic will be required.

Giraffe (and others), references please. Or support your claims in your reply. If you could point out a book that discusses programming a quantum computer without mentioning any of the physics (or where you could skip those chapters), I’d be interested in reading it.

I don’t think that the technology of quantum computing, if it ever takes off, will be so radically revolutionary that you couldn’t, say, write a C compiler for it. Chances are, the human interface of a quantum computer won’t be too different from what we have now. In other words, yes.

That’s one of the interesting things about computers: they’re all basically equivalent, no matter how different the physical manifestations may be. You could store and run the Straight Dope on vacuum tubes, although it would be even slower than it is now (and it would be gigantic).

Writing a program for a quantum computer won’t be that bad, but you’ll have some new operations to learn. Writing an optimizing compiler for a quantum computer, on the other hand, may present some interesting challenges.

preguntas, quantum computers do not exist. There are no manuals for quantum computers because there is 0 demand for them.

If your question is really “is it possible to program one without understanding anything about quantum mechanics,” then the answer is “no.” You can’t program on nonexistent architecture.

Ultrafilter, what will be the new operations?

I suppose it all depends on what your definition of “exists” is, as well as what actually constitutes a quantum computer. This from New Scientist magazine:

As far back as 2001, IBM built a quantum computer that successfully factored 15.
http://www.wired.com/news/technology/0,1282,49268,00.html

And this web site has much more on quantum computing.

The website that ** Exapno Mapcase** linked to looks like a better source than me. Check it out.

I’m going to back up Exapno here, and recommend the link.
BTW, there is not 0 demand for these, since (IIRC) factorization becomes a trivial operation in quantum computing. There are lots of crypologists who’d love to get one of these things, as they make breaking old codes easier, as well as making new ones theoretically impossible to tap.

Another thing I recall is that for/while loops become amazinly expensive on quantum machines, so my guess is that the only programming to be done on them will be done by physicists.

Real time programming is very different from normal programming.
Parallel programming is very different from normal programming.
Quantum programming is…well, it barely exists yet.

I would doubt the opinions of anyone who is trained in current models of programming, e.g. VB, C++, C. Anyone who got their training in programming before the year 2002 is a dinosaur when it comes to quantum computing. Their mindset may be obsolete, especially if they think they understand the full scope of the issues in quantum computing without having an advanced degree in physics.

Cause of course, once you’ve learned one paradigm, you’re stuck in it forever. Excuse me if I :rolleyes: a little.

That aside, real-time and parallel programming do add in additional considerations, but above and beyond that, you’re still writing the same kind of code. Quantum programs will be a lot like that: you’ll have some new operations that let you do some things very quickly, and you’ll write code that looks a lot like modern C/Java/VB/etc.

And while you may need a phd in physics to fully understand all of the issues involved, you don’t need one to understand how programs will work.

the only thing they will add is a real foreach() command. one that does them all at once, not one at a time, which is very helpful… but not magic, basicly we already have parallel processors, quantum computers are parallel memory.

preguntas - sorry, I shouldn’t have tried to answer your question without doing any research.

Programming on quantum computers will not be the same as programming on a conventional computer. The fundamental operations will be fundamentally different.

Peter Shor seems to be the man.

http://www.research.att.com/~shor/papers/index.html#quantum

The first paper under ‘Quantum Computing’ is about efficient factoring of integers with quantum computers, which is certainly not something we know how to do with our computers now.

Moreover, apparently precision is an important resource when it comes to quantum computing, a concept that is rather alien to digital computing (at least on digital computers that are built properly ;)), and which seems to be closely related to the Uncertainty Principle. I would think this requires a greater closeness between programmer and hardware than conventional computing does.

Hope that helps!

I’ll restate that. Anyone who got their computer training before, oh, say, 2020 is a dinosaur when it comes to quantum computing. I can assure you, that the current crop of CS students is not being trained on quantum computers.

As for programming them, will it be identical to current programming? Assuredly not. You’ll have new operations available, and you’ll have to use the old ones in different ways. But I can’t imagine that there won’t be some sort of front end built for them, such that the user won’t need to know the guts.

Quantum programming will be just like programming in Turtle, but faster!

Here’s the reasoning behind my statements.

If you study computer science at the graduate level (I took a couple grad CS classes during my undergrad days), you’ll study something called a non-deterministic computer. Roughly speaking, it can do any finite number of operations at once. Of course, there’s no working model, but we’re mathematicians, and we can handle that. A quantum computer is basically a non-deterministic computer with finite memory.

At the most basic level, designing a non-deterministic program is basically the same as designing a deterministic program, with a couple new operations, that we can call branch and collapse. branch lets you split into any finite number of computation paths (deterministic programs), and collapse lets you go back to one path–you’d use this after you got an answer for each computation path to get down to one. And that’s pretty much all there is to it.

Now, a quantum computer is similar, but it’s not exactly the same. There will be optimizations based on its architecture, but they’re not going to fundamentally change the paradigm. I think the analogy with parallel programming is pretty good–it’s an extension of traditional programming, but it doesn’t replace it.

How would that alter the fundamentals of computing?

This is insulting to the entire field of Computer Science. I last tooks classes in CS a long time ago. Yet I teach the latest and greatest in C++/OOP and so on even though I never took a class in such matters. I am a Sun Java Certified Programmer. Not only do I have no problem with understanding the material in any undergraduate CS text, my own research results appear in such texts.

The purpose of a college education is not to teach you the state of the art. The purpose is to teach you how to learn the state of the art.

My goal in teaching CS students has never been to help them get a job after graduation. The goal is to help them have a job 30 years after graduation.

To suggest that (a) people don’t learn after college and (b) that college educations don’t help you “learn how to learn” is ridiculous.

I pretty much agree with Ultrafilter. While quantum computers may make it possible to perform certain massively parallel computations in a time period that’s measured in something less than geological eras, the computations themselves aren’t particularly novel. People have been considering architectures for massively parallel computing for a long time now (oh, look at the Connection Machine for an example). Now some algorithms map really nicely into certain architectures and some don’t. So you don’t want a machine whose architecture is based solely on the kinds of computations that can be done on a quantum computer because certain control constructs such as loops and even sequential ordering of instructions might be terribly hard to implement. So the quantum computer will probably be used something like a floating point unit – you’ll set up data in the form that suitable for it (e.g. factor this enormous prime), send it to the quantum computer unit, get a result back, and then process that result. The person that writes the compiler and low-level firmware that interfaces with QCU will have to understand it. The programmer will just have to understand what it does, and when to use it.