Also, PageRank clearly doesn't need a patent. Google's done just fine against competitors that have ripped off their technique.
How do you do that?
The first person to think of the concept of "self-driving car" gets the patent? That will just lead to a flood of patents on things that don't exist yet -- basically a patent troll's dream.
Perhaps the first company to build a working prototype? What happens to all the other companies that almost have a working prototype -- do they now have to sit on the sidelines for 10 years?
How do you even know what a "working prototype" is in that scenario? Is it acceptable if it is just capable of driving on straight roads during sunny days with no other cars or people around?
I think patents on specific, narrow pieces can make sense: for example a laser-based 3D vision system, or a specific algorithm that identifies people about to walk in front of the car (even that is tough, because there's a thousands of very distinct approaches to that problem).
Patenting the entire system (the "self-driving car") makes about as much sense as say, Herman Miller patenting the concept of a wheeled office chair. They can patent elements of their lift mechanism, specific wheel designs, or arm adjustments, but not the concept of combining wheels and a place to sit.
Copyrights are sufficient. You shouldn't be able to tell someone they can't use a certain software algorithm in their own program, in a different language, in a different domain. That stifles innovation.
Thankfully, software patents are unenforcable in most of the world and willfully ignored by large parts of it.
If a physical machine is not under patent protection you can strait up copy it and start manufacturing your own version. With software you have to go through an extra "clean room" step to get around copyright. In practice the clean room reverse engineering process is rarely utilized because it is expensive and fraught with the risk of a lawsuit from the copyright owner.
That means that copyrights can be exerted in very menacing ways, like requiring users to bypass a copy protection mechanism in order to do required maintenance, as John Deere has done. That enables John Deere to pursue anyone who doesn't use an official dealer for maintenance under the DMCA's measures criminalizing the circumvention of copy protections.
Disclaimer: Not a lawyer, probably wrong.
The scope of a patent is much broader than a single coded implementation. The copyright doesn't protect the functional aspects of the code, it only protects it as a written work. However, companies have managed to twist the concept of infringement via reproduction, and bypassing of copy protection.
Accessing a copy of code stored in memory is now considered creation of an unauthorized reproduction, bypassing copy protection under DMCA, and/or the like.
This type of protection shouldn't exist apart from preventing partial and wholesale copying and redistribution, paralleling the treatment of novels, etc. If I own a novel, I can do whatever I want to do with that book. I can write on it, annotate the margins, remove pages, make photocopies of parts of the book for personal use, etc.
With code, I can't do this? Why?
In cyberspace, many things that should be considered "inventions" for IP purposes, and thus subject to the much more limited extent of patent protection and for which each individual unit is an unprotected entity, are instead considered "new copies" of a copyrighted work, under which substantially more aggressive licensing restrictions are typical, and under which the definition of things like "infringement" and "derivative" are much more restrictive.
A software program should be an invention under patent law, and its copies should be considered discrete physical units. The code itself may be copyrighted, just as the plans for an invention may be, but the produced binaries probably should not be. Rather, they are units of the invention regulated as normal goods.
This has become even harder as we have gone to mostly-digital software distribution. You used to be able to easily resell software if you had a CD. Now you can't even do that (which, by the way, is no small motive for the companies; it completely obliterates the secondary market for software).
IANAL