>
The thing is, just like a car can travel on any road...I don't disagree with your comment as a whole, but this stood out to me as a classic example of why car::computer analogies always suck. No, not every car can travel on every road. Send your typical Camry or Accord down a fire road and it will be lucky to make it half a mile. Without some modifications, my 4x4 Bronco II would have issues with some trails.
Now, if you were limiting your scope to paved roads, I can kind of see your point, but there again there are certain roads that would give issues to the average car, particularly in places like Detroit where the road itself can be so deteriorated due to municipal neglect that it will destroy a car's suspension. Or, San Francisco where the hills can be so steep that driving a manual transmission car daily requires skill beyond that of the average driver to avoid rollback accidents, not to mention the extra wear on the clutch.
> ...a computing device can execute any software.
Not quite true. A microcontroller is a computing device; it executes code written in a human-readable language that has been compiled into a machine language, just like a full-blown consumer computer. However, you can't just throw any software on the microcontroller's storage medium and expect it to run. First you must be able to recompile it, which means you need access to the source code. Second, if said source code is not in whatever human-readable language the microcontroller's IDE expects, you'll have to spend the time porting it over to that language before even attempting to compile it. Even then, the microcontroller may not be powerful enough or have the right features to run the software the way you intended.