views:

940

answers:

13

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.

+4  A: 

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

Alan Jackson
+7  A: 

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

Nick Allen - Tungle139
Every developer I have ever spoken too wants to be outside more. I have contemplated Belly Dancing myself (being a 6'7" guy has not deterred me ;-) Effectively, we all have soft programmer hands. The most Outside I want to be is coding on the beach with a wifi connection. :-D
Gineer
With "quantum" programming, if I'm not looking you may be outside and inside at the same time. Noone can tell.
Daniel Daranas
Gineer: And yet, (almost) no employer seems to ever do anything about it. Hmm...
Ken
With quantum computing, we could be both programmers and have outside jobs *at the same time*.
alpha123
+1  A: 

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.

Robert Harvey
Only if someone can come up with an algorithm. I'm not sure that this has been proved for all encryption algorithms nor can a quantum computer solve a general NP complete problem.
Aaron Digulla
They could factorize a large prime; but I don't think they could decrypt a cypher that's encrypted using a one-time pad, because I can't think of any way to test which of all possible decyphers is the correct one.
ChrisW
True one-time pad encryption cannot be broken, but it is only as good as the random number generator used to produce the pad.
meagar
+13  A: 

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.

Aaron Digulla
"Using the Windows Desktop" instead of "Hacking code in an IDE" OR"Hacking Code in Visual Studio" instead of "writing in Assembler"???
Gineer
grover's algorithm is a search algorithm, not a sort algorithm. and hypercubes are solid, convex polytopes, they do not have 'holes'.
Autoplectic
@Autoplectic: Fixed grover's. As for the holes, when you rotate it, you can get a configuration that looks like a rectangular frame when you project the result on a 2D surface (a computer screen). I've seen this once and I'm trying to find the animation again with little success so far.
Aaron Digulla
@Gineer: It will be more like starting a word processor to edit a book; i.e. very, very high level. People won't really understand what's going on, they will just be able to use it to some extend.
Aaron Digulla
@Aaron: if you did see a hole, it's an artifact of the projection method and does not reflect an actual property of the object.
Autoplectic
@Autoplectic: I see. Thanks for the info. Is that the same way a hypersphere turns into a torus? Is there a hole in the middle or do the "sides" intersect in a single point (-> singularity but no hole)?
Aaron Digulla
@Aaron: a hypersphere is a 4-d object defined by `r^2 = x_1^2 + x_2^2 + x_3^2 + x_4^2`, where x_i are your four spacial dimensions. a hypersphere is a single surface with constant curvature in all directions, no holes, no sigularities, etc. a torus is a 3-d object that's shaped like a donut. they're as different as a cube and a figure-8.
Autoplectic
"Only a handful of people understand the mathematics which are required to develop algorithms for QCs." - It's an honor then to have you post here. ;)
abc
+5  A: 

We wouln't have debates about cryptography any more.

Dario
This deserves more up-votes.
yc
+1  A: 

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

Carra
But they would migrate to quantum cryptography...
Daniel Brückner
Notice that quantum cryptography has got nothing to do with quantum computing. In particular, it wouldn't be a drop-in replacement for SSL or any other conventional encryption because not only does it need special client-side hardware, it also needs special transfer hardware.
Konrad Rudolph
You'd have to be rich to have quantum computer in the first place; these things ain't cheap. Either that, or everybody would have access to them, which is not what you meant... :)
Domchi
A: 

Not really a programming question.

andrewbadera
Not really a programming answer either. =) (this should be a comment)
gnovice
This is chance for you to get a "Peer Pressure" badge. [:-)]
TheMachineCharmer
+4  A: 

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.

Autoplectic
+46  A: 

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!

j_random_hacker
Made me laugh, so +1 to you.
CiscoIPPhone
This is gold :)
rama-jka toti
+8  A: 

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.

Captain Segfault
+1  A: 

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.

Fenugreek Femtosecond
A: 

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!

Nikkita
I'm so glad you have it all figured out and can lead us out of our stubborn ways.
meagar
I would care about what you where saying if you gave some sort of reason for it. What are you so scared about that we need this level of responsibility for? What is this responsibility you expect us to have? and where the hell do nukes fit into this?
thecoshman
+1  A: 

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.

Ken