I get the sense that the difference often stems from the nature of software as "words you can run" vs. hardware as "physical manifestation of words."
For quite a bit of software these days, the correct program and the description of the correct program are pretty similar artifacts.