No matter what the mismatch is between practice and theory, of course practice is what matters in the end. If theory doesn't match practice, that's usually because practice is messy and complex, and theory needs to be reduced to a level of complexity that actually helps us think.
@clacke I've always subscribed to the notion of "If theory doesn't match practice, then it's because it doesn't match, but there is a right theory that does match"
@kiri Ah, but is that theory helpful? Maybe we don't use it because it's unwieldy. A 100% accurate theory basically comes down to emulating every particle and force in the universe.
When we say "it works in theory, but it'll never work in practice", that suggests that the theory is leaving something out, something significant. That's kind of obvious.
The more interesting case is when it doesn't work in theory.
Sometimes people misunderstand this statement, but for people used to thinking in the abstract and formulate models, it means basically this: "there is an unavoidable tradeoff that any solution needs to make, but success requires that we don't make that tradeoff, that we can have both A and B"
If it doesn't even work in theory, it has no chance, none, of working in practice. You can't just do it harder, better, faster or stronger, because you're running into some unbreakable limit.
Sometimes this is said, and then someone goes and does it in practice anyway. Usually that means they redefined "it". The problem statement was simplified or too strict, and it turns out that something that the actual thing we needed in practice *was* possible.
You can't solve an NP problem in polynomial time, in theory or in practice, but maybe you turned around and solved a different problem, usually by replacing the "correct" answer, which required an NP-complex solution, with a good enough answer, which you could get with a P-complex heuristic.
Or, you know, again, just like when the theory said it was possible, but in practice it wasn't, the theory was just incomplete and failed to include some dimension.
It is not "possible" for one process to rewrite the memory of another process, but using the RowHammer exploit, which doesn't exist in the usual memory and process model, but exists in the practical CPU, you can do it.
This is an interesting case, because unlike a natural science model that tries to calculate reality and fails, like the Newtonian model failing to predict Mercury's motions, here the model comes first, and it is the hardware.that fails to implement it in practice.
Maybe you just get angry at the CPU manufacturer for failing to implement the model cleanly ... but if that CPU is all you have and you want your process isolation to work, you'd better include that flaw in your model.
@clacke It can also mean that something is possible but very difficult. Like riding a unicycle on a slack rope. A few people can do it, but if it's the only option for crossing a river, most of us are better off not trying.