Overthinking Embedded Systems
I often say, there are two things that are really simple: Things that are really simple (of course) and things that are really complex. If you are floating down a river on a log, that's pretty simple. A modern ship can navigate anywhere with a click of a mouse. But taking the helm of an 18th century sailing ship was anything but simple.
I wonder sometimes if we are making things too complex. This is especially important in embedded systems where code size and execution size still matter. The trend has always been to get further away from the hardware, of course. People lamented the introduction of C and then C++ into embedded systems. I myself have railed against using Java as a one-size-fits-all solution. Yet even with these, its often not the tool itself, but bad use of the tool that is the real problem.
But it does seem to be getting worse. Linux and Unix have long been bastions of combining simple things into beautiful and possibly complex forms. But the community is moving away from that. I use a KDE desktop every day. But the idea that adding metadata tags to my files requires two separate database servers an indexing engine that seems to gobble memory with no constraint and software to manage the ontologies seems a bit much. Worse, its all poorly documented and just kind of "black magic." To me that was always an advantage of Linux and Unix over more mainstream operating systems was the transparency of what they do, but this isn't a good example of that being true.
I have seen more people lining up to incorporate XML into embedded devices. I won't go as far as saying this is never a good idea. But even on the desktop I see a lot of XML being used in ways that stun me. A colleague pointed out to me that there is a lot of work on making "binary XML" that would be more suitable for embedded systems. Again, maybe appropriate in some cases, but it is hard for me to imagine that I need to store XML in any form inside my mouse, for example.
I can't decide why this happens. Is it because more people who are used to doing "big programming" are moving towards embedded systems? Or is it just our desire to use simpler tools and being spoiled by ever growing hardware? Or am I just turning into a curmudgeon who won't accept the latest and greatest thing? I like to think I'm pretty progressive, but maybe its the first sign.
What do you think? Do many embedded systems need XML? What about relational databases? Or message brokering systems? Especially highly embedded systems that don't interact with, say, Web services over the Internet. Or is it just a symptom of the times that we are bloating embedded software with desktop-like tools in the name of faster development? And yes, I know that some "embedded" systems today are more or less desktop computers. But there are still a lot of CPUs toiling away in automobiles, white goods, and dedicated consumer products that -- I say -- don't need any of this bloat. Leave a comment and let me know what you think.