Software implementations require trade-offs. An implementation of an algorithm can be memory-hard or memory-efficient, single-threaded or multi-threaded, generic or optimized for a particular processor, constant-time or low-latency. But no implementation can be all of those at the same time.
To create a solution within the constraints given is what engineering is all about, and requires expert domain knowledge and creative thought. Software isn't just math, it operates on real processors with real limitations. I'm not arguing that software patents should be valid, but the "software is just math" argument is too weak to carry much weight.
To create a solution within the constraints given is what engineering is all about, and requires expert domain knowledge and creative thought. Software isn't just math, it operates on real processors with real limitations. I'm not arguing that software patents should be valid, but the "software is just math" argument is too weak to carry much weight.