Commercial operating systems
Looking at commercial operating systems in general, there's a pronounced drop in their use (Figure 5). But surprisingly, this drop isn't balanced by an increase in the use of commercial distribution of open-source operating systems. That's potentially bad news for the operating-systems vendors.
Barr reasons that this drop is because "for operating-system technology, the cat is out of the bag. Fundamentally, every RTOS is the same as every RTOS. What you need is a way to divide your problem into tasks and have sufficient computing power. Then you want to have a priority-based pre-emptive kernel. And they're all the same, whether you get your OS out of a book or with free source code included, or you get something else free. Unless you need that driver availability, or some special advanced features, you really aren't willing to pay for it."
Is that drop due to the fact that users are unhappy with the support they are given (Figure 6)? A key influencer in the decision of which commercial operating system to employ is the quality and availability of tech support. The figure almost doubled in two years, from 27% to 50%.
Languages and tools
The use of C as a programming language is increasing significantly in both current and future projects (Figures 7 and 8), mostly at the expense of C++.
Why is C, which is a relatively mature language, increasing in popularity? One reason, according to Gatliff, is that more designs are being outsourced. "The skill set required for C++ is stronger than what's needed for C. Especially when you consider that the use of Java only increased slightly between current and next project. I would have expected (and hoped) for the Java use to increase. That said, I wouldn't say that an increase of around 8% means that people are abandoning the use of C++."
Barr wasn't surprised by these results at all and says this is part of a continuing trend. "If you look at the year-on-year numbers, C++ doesn't add a lot of value. It actually takes away. Even though C++ can potentially be more 'reusable,' that doesn't necessarily hold true in the embedded space. So much of the embedded software ties to the precise hardware that's being implemented. You can reuse your APIs, but the guts of your code change from project to project. The first priority in the embedded space is that the system works properly. C does a fine job, and you can do a lot of great stuff with it, especially if you're looking at something safety-critical. C++ tends to introduce a lot of variables and make the project more complex."