Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼

Al Williams

Dr. Dobb's Bloggers

Overthinking Embedded Systems

February 26, 2011

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.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.