Old hardware clerks have learned the hard way that nothing in a hardware store ever gets bought for its nominal purpose.
Do we need to write code that protects itself against being moved into a new problem domain?
Perhaps it depends -- it's a business decision. Is it a medical device? You have a lot of legal incentive to prevent other-than-intended use. Is it a game? Someone hacked ps and kill into Doom under Unix so you can see your processes and shoot them. Can it bring your system down? Sure. Does it matter enough for the game maker to prevent it? No.
How does it protect itself, anyway? Name one plausible mechanism besides obfuscating it...
With medical devices, your goal is to limit your legal liability. Sure, you can't stop a determined, clever person from doing whatever they want with your defibrilator. But if you can show the jury that the person had to work at it, you can reduce the odds of the fool winning in court (and thereby limit the amount you have to offer in settlement).
I suppose what I really meant was code that protects the scavengers. Hey, that defibrilator logic would be perfect for my waffle iron controller. Zot
Perhaps we should be encouraging ScavengerProgramming as a way to promote ReUse?. Just because someone sees an alternative use for your code doesn't mean it's wrong. It's up to the scavenger to ensure that the code works correctly in their new domain - not yours. In an open society, we should be sharing as much as we can, and allowing people to scavenge code is one way to do this. -- SimonMedley