16

I am interested in quantum computing, but have not studied it in depth. Things like Shor's algorithm intrigue me.

My question is: If quantum computing took off in a big way (i.e. functional quantum home computers were available) how would it affect us programmers and software developers?

  • Would we have to learn how to make use of superposition and entanglement - would it change how we write algorithms?
  • Would more mathematical programmers be required/would we need new skills?
  • Would it change nothing at all from our perspective (i.e. would it be abstracted)?

Your opinion is welcome.

47

We will have access to dramatically more powerful bugs.

  • High-dimensional off-by-one errors.
  • Superpositions of dangling pointers.
  • Makefiles that build every incorrect permutation of software dependencies at the same time.

The possibilities are endless!

13 accepted

If quantum computers would really catch on, we'd use frameworks to work with them. Only a handful of people understand the mathematics which are required to develop algorithms for QCs. As an example, check out the QC search algorithm. Basically, it creates a superposition which contains all possible results and then "rotates" the wrong ones "out".

If you need to sort N elements, it will create a N-dimensional space and rotate around an N-dimensional axis. Rotating around 2 and 3 dimensions is pretty simple, but things become really complex to understand with 4 and more dimensions. See here for a rotating hypercube (applet based stereoscopic version).

So basically any commercial QC would be a black box and you'd get a set of fixed algorithms (which would still be very flexible in terms of which parameters they'd accept) and then you could play with that. Think "Using the Windows Desktop" instead of "Hacking code in an IDE" here.

8

To be clear, almost certainly, QBP!=NP! You definitely can not just "look at everything in parallel". There may possibly be some clever trick that works on a quantum computer but not on a classical computer, but it would be much more complicated -- at the very least, there is no reason to believe a quantum computer can even break arbitrary cryptography, much less find satisfying inputs to circuits.

A quantum computer can efficiently break all currently well-established asymmetric cryptosystems. This is because they are generally based on the hardness of either factoring or discrete log (possibly on elliptic curves) which are all easy in QBP. There are candidates for replacements; this is an area of active research.

A quantum computer can get a quadratic speedup for brute-force-search problems. (not exponential!) If you had a quantum computer, searching an unsorted array of size N would only take O(\sqrt{N}) steps! This means that key sizes would need to double: If you are searching for a 128 bit key by brute force, you would only need 2^64 operations, which is distinctly feasible. However, if you are searching for a 256 bit key by brute force, you would still need 2^128 operations, which is not feasible under reasonable assumptions.

The big thing is quantum simulation -- we could efficiently simulate small systems, which would be really useful for nanotechnology and the like.

7

I would have to find a new line of work, I'd probably go for something that lets me be outside more

5

We wouln't have debates about cryptography any more.

4

We would have to get physics degrees instead of computer science degrees :)

4

It wouldn't really affect programming all that much. In academic circles there are already quantum programming languages. The only real differences are that you'd use more linear algebra and less discrete algebra (since you'll treat your registers as actual hamming vectors rather than just a series of bits), and you'll write bounded probabilistic algorithms more often than with classical computers.

1

We would most certainly think about performance differently. Think of a 16 bit quantum computer as a machine that has the answer to every 16 bit multiplication problem simultaneously and instantaneously.

Quantum computers would render all existing encryption algorithms obsolete.

1

Being able to crack all the SSL encryptions used for banking should make me one rich programmer :)

1

SkyNet! Beware! Quantum computers will bring us SkyNet! How will it affect us? The machines will not need us any more, and will kill us.

1

It would change almost nothing at all for me, and probably a lot of other programmers.

First, true, because a lot of it would be abstracted away. Quantum computers will catch on in the marketplace at exactly the same time somebody releases an x86-compatible quantum computer. Yeah, it's going to be the biggest collective facepalm in computing history, but you know it's going to be true.

Second, because the kinds of things that most programmers work on, are not the kind of things that have anything to do with the problems that quantum computing can solve. Just look at the questions on SO right now, and imagine how many of them would be made any better by quantum computers. Regular expression not working? Need help with XML schemas? Trouble getting your CSS to work in IE6? (Well, if your users aren't upgrading from IE6, they sure ain't gonna upgrade to a quantum computer! You could serve up that CSS file from a quantum computer, but I can already buy a web server that's fast enough for any number of users I'll ever see, for pretty cheap.)

Me, I've got Excel spreadsheets to parse, I've got HTML and CSS to generate, I've got unit tests to improve. I'm no expert on quantum computing, but nothing I've seen has led me to believe that quantum computing will make people organize their spreadsheets better, or upgrade their web browsers more frequently. The web is today's big platform, but I think the effect of its simplicity is not so much that it's fast for computers to parse, but rather that it's simple and universal enough that people can grok it. I don't see a way to make it significantly better that would require what only QC can provide.

Finally, other technologies which promise big changes in performance for certain tasks remain niche, even after years. My database servers aren't doing GPGPU. My web server isn't running on an SSD. Lots of people have figured out independently that it's a lot cheaper and easier to string together last year's technology (in parallel, if you need the performance/reliability) than it is to adopt the latest and greatest new paradigms right when they're introduced. Most companies would rather keep old systems running on COBOL and FORTRAN than port them to something new, even if it's radically better.

-3

Would be the worst mistake in human history to release something like this. There are some things that just should not be released until the rest of the world shows some responsibility.

but what do i care. a stubborn race that wants to advance but does not want to take on the responsibility. yay for ww3 and worldwide nuclear firestorms!

-5

Not really a programming question.