I think that software should only be protected by copyright if the source code is placed in escrow and made available when the company goes belly-up or when the (strictly limited) copyright period expires.
I think that the patent system needs to be thoroughly reformed so as to do a better job of covering software, hardware, and a blend of the two. John Carmack's example is compelling but if patents were handled properly the odds of such a thing occurring would be as remote as the odds of doing the same thing in your backyard workshop with a lathe.
No. The difference is that PHYSICAL TANGIBLE things exist in the "analog" realm have infinite possibilities. Things that exist in the digital realm have a finite number of possibilities, and if you limit yourself to a particular subset of things you can even possibly do (such as those things which are implemented in computer programming languages), the odds go up greatly. If I tell someone to build a table leg on a lathe, there would probably be many variations between skilled builders. If I tell someone to make an efficient file store (or in patent speak "digital storage"), lots of people would probably come up with something similar...but that's patented: http://www.google.com/patents?q=digital+storage&btnG=Sea...
1. The length can be infinitely long, therefore the number of possibilities can be infinitely long.
2. For all practical purposes the space is so large it is infinite. How many possible permutations of 1s and 0s can you get in a 1024 KB program. Many.
3. If we go into the more practical example you raised I doubt there is much difference between the variance in resulting table legs and digital storage applications. If anything, I would say there would be more variation in the software, simply because the high cost of iteration and experimentation (and stricter physical constraints) have narrowed the design space of table legs, in a way which is much less apparent in software.