A friend that has a degree in engineering and law who works as a patent lawyer had this to say.
Interesting physical real world problems are NP hard. That's why we have patents. Software? You can work backwards from the requirements to multiple solutions almost always. Which is why patents on software are stupid.
Copyrights are originally to protect authors because an author might create a few dozen works over a lifetime. Of which a few mich actually be worth anything. Copyrights were to protect his income and allow him to leave an inheritance behind.
Copyrights for software is stupid because most of it is mechanically generated and it goes old like last weeks fish. Quote: The source code for Windows 3.1 who cares.