You're mistaken. Every algorithm used in software can be created as a specific integrated circuit. Software is a means of controlling a general processor that performs sets of operations based on instructions it receives. No matter what level of programming you are doing (from interpreted web dev down to assembly) it gets translated and passed to the processor the same way. The problem isn't that it's too difficult to be specific enough in the patents due to the complexity. The problem is that there isn't a REQUIREMENT to be that specific in software patents.
My personal opinion is that if the patents required a pseudocode implementation using a common-standard language to represent the components and operations, it would be much easier to determine patentability, would prevent generic, wide-sweeping software patents and require the investment of actual invention rather than just an investment of dreaming to be patented. Physical device patents are required to be specific enough that it can be used to create the device using only the patent and references in the patent. The same should be applied to software patents, with the translation from the pseudocode components to whatever language or platform be the same as physically constructing the components of a machine.
I think we're talking past each other in that I'm focusing on the macro level of an entire system with N (where N is large) algorithms whereas you're focusing on the concept of an individual one.
My thesis is that even if I grant you a sane patent regime the macro level scales so fast and big that that changes the game and makes the concept impossible in practice.
We have our common ground in that the current system is broken. My example of a single algorithm was based on the premise that for any algorithm, others can(are) incorporated into it (the algorithm can become synonymous with a cog, which would itself be patentable as well). Therefore, by my viewpoint, the macro level is identical to the micro level. The level of detail in patent applications for physical devices are mindnumbing. A key method of overcoming this problem is by using references to other patents. In this way, you could hold patents X, Y and Z and apply for a third patent A that combined the patents into a macro system without having to detail X, Y and Z all over again. My opinions on how to fix it are based on a blank slate system, all software patents should be of this level of detail, etc. rather than a just "going forward they should be". With that level of detail in a patent, resolving unintentional infringement is trivial while still providing the same output by simply referring to the patent and adjusting your implementation accordingly. This also means that prior art is easier to assess. The difficult part would be obviousness, but given the proper staff and training can be dealt with.
EDIT: Reading your recent response to another commenter below, I don't want to give off the impression that I think any current software patents should be maintained. I think they should be all completely removed (or required to be resubmitted fitting new requirements that include specific details on implementation). My ideas are in the "dream world" where the rigor was applied since the first software patent was applied for.
My personal opinion is that if the patents required a pseudocode implementation using a common-standard language to represent the components and operations, it would be much easier to determine patentability, would prevent generic, wide-sweeping software patents and require the investment of actual invention rather than just an investment of dreaming to be patented. Physical device patents are required to be specific enough that it can be used to create the device using only the patent and references in the patent. The same should be applied to software patents, with the translation from the pseudocode components to whatever language or platform be the same as physically constructing the components of a machine.