What is an Embedded System?
I have always noticed a discontinuity in how people use the term embedded system. I commented on how the lack of distinction between application and embedded software might be driving us towards a skill and tools crisis because of material differences between the two types of development.
I also had to come to terms with the fact that the things I worked on as an embedded developer were invisible to the end user -- and everyone else for that matter.
Personally, I've always thought of an embedded system as "the computer you don't see".
It's there, hidden in all sorts of everyday objects, but you can't really see it for what it it. It sits quietly, just doing it's job, without requiring all the futzing necessary for "real" computers. It might not even have a display or require any input from you.
The other way I think of embedded systems is as "single-purpose" computers. Unlike our PCs (and, increasingly, PDAs, cell phones, tablets, and other mobile devices), an embedded system is usually designed to perform a specific task, and all of its parameters -- size, dimensions, memory, I/O, ruggedness, power -- are optimized to perform that limited bit of functionality at the lowest possible cost.
My experience is primarily with microcontrollers, and mostly on the lower end of the scale, at that, so I don't usually think of things like embedded computers running Linux or Windows as an "embedded system", but of course they are (or can be).
What picture forms in your mind when you hear the phrase "embedded system"?