The latest Embedded Systems Design features an overview of their annual comprehensive programmer’s survey. ESD (an unfortunate acronym for a hardware journal) has offered the same survey for the past few years to engineers and programmers in both the USA and Europe, seeking info on their current and anticipated needs, projects, tools, and the like (N>1000 for the past three surveys). There are many useful tidbits in here but one in particular caught my eye, and that’s the trend in development languages used.
Embedded programming is considerably different from the more typical desktop application programming familiar to the average CS major. What we’re talking about here are those myriad microprocessor/microcontroller based systems that tend to be invisible in our lives such as the guts of cell phones, MP3 players, and so forth. Although an awful lot of code may be required for these applications, obviously, these devices cannot be developed and programmed in the same way as, say, a word processor. Due to cost constraints (and thus memory and computation constraints) on the chips used, embedded work tends to be “closer to the metal” and is often done by graduates of electrical engineering and technology programs than by classic computer science grads. For example, it wasn’t that long ago that a majority of development was done in assembly language.
So what are the recent trends? The ESD survey compares results over the past three years. First, assembly language has been fairly stable at 7 to 8 percent of projects. BASIC has managed to garner 1 to 2 percent (although the article doesn’t mention it specifically, I assume that this is from items such as the BASIC Stamp microcontrollers from Parallax), and all other languages with the exception of C/C++ cover less than a few percent each (such as XML, MatLab, LabView). Even Java is in this category, slipping from 3 percent in 2005 and 2006 to just 1 percent in this year’s survey.
The lion’s share of development is in C and C++. No surprise there, but the interesting thing is that C++ is actually losing ground. 2005/6/7 saw C++ at 26, 30 and now 22 percent, while C has grown from 51 percent in 2005/6 to 63 percent for 2007. I find this particularly interesting. As an old hand at C, I was never overly enthused with C++ (I agree that there are certain advantages but I have maintained for several years that C remains superior for embedded use). The folks at ESD offer a few ideas why this trend has occurred including the possibility of a larger number of projects being outsourced, but maybe some of it has to do with finding the right tool for the job versus listening to marketing types.