Good points. I just think that the boost in software productivity for larger projects doesn't scale well into the smaller embedded domain with lots of hardware state complexity instead of algorithmic complexity and asynchronous interaction of complex abstract data objects. Efficient hardware implementation is the primary goal. If C types actually thought that native C++ would reduce the time it took to design the software for a complete bare-metal embedded system from scratch most would be on it like ducks on a June bug but we really don't see much enthusiasm for that. The learning it right part is important as there are 40 ways to do something in C++ but maybe only a few ways that actually can provide a boost in productivity when things go bad.One can be an adequate embedded developer using C. But for those trained in OOD C++ can provide a boost in productivity. In my experience this boost can have a positive influence on job satisfaction. It also can, in theory, provide an avenue for a competitor to eat your lunch.
Unfortunately C++ may be rejected by those who are victims of poorly thought-out applications of it in practice. I've seen plenty of nightmares. We've all probably seen that in C as well. For example, just because you can use namespaces to delineate your massive class hierarchy doesn't mean you should. Templates and exceptions are often poorly applied and lead to frustration. I like to think of C++ as a superset of C, so any C code is for the most part C++. Classes and inheritance, along with the benefit of function overloading are really nice additions to the language. If you know how to use them, and that takes training, especially if one can learn from someone that knows how to do it right.
Linux is written in C ( C being effectively portable assembly) and is at least somewhat responsible for the aversion to C++ for SoC development as almost every new system boots and uses some version of Linux as the base embedded OS. The Linux C based abstract machine seems sufficient for just about any hardware related task (writing programs for gadgets) with a large library of working C examples.
Last edited: