The patent lawyers have figured out that requiring that software patents make sense and reveal actual new engineering knowledge would make them useless for extracting cash for lawyers from actual working programmers.
[0] http://caselaw.findlaw.com/us-federal-circuit/1229938.html
However, it has a fundamental problem. Patents do not protect abstract ideas; they protect concrete inventions. I cannot patent "a means of traveling backwards in time" because that is an idea. As far as we know it's also impossible. You can't get a patent on "A surface that has zero friction" unless you also create that surface and explain how to do so. The idea that any physicist who is "skilled in the art" could figure out how to create such a surface from the laws of physics (which it surely must follow) is silly.
On the other hand, software patents are exactly like that. I can patent "A method whereby clicking a button solves P=NP" and simply claim that the solution is produced somehow. I have to give no example implementation or even very specific details. This is highly at odds with other industries.
I do understand the legality of it, but it's still significantly different than other fields and leads to inane results.
In other fields, such as mechanical engineering, patents are required to describe an invention in enough detail that a person "skilled in the art" could reproduce it.
In the field of software, the patent merely has to describe the invention (software) well enough that it can be identified, not written. To match other fields, where it's common to require essentially full bluprints, it would make sense to require working source code (if only a reference implementation) for any software patent.
As is, the patenter "gifts" the public with the knowledge of an idea which is rarely in itself useful; the source code could at least be potentially useful.