Yes, obviously one can design software specifically to evolve under directed mutation, and this has been done and is useful -- but unless we design *everything* that way (including OSes), we'll never get a machine analogue of evolution, and even software designed to evolve under directed mutation isn't going to evolve in the same way under random bit-flips, because the virtual machine that executes that is a) almost certainly much larger than what it's executing and b) not implemented in this fashion, so the first bitflip there and you're probably toast.