C++ is still useful in embedded
systems. As everyone else has said, that it still depends on the system itself,
like 8-bit uC would probably be a no-no in my book even though there is a
compiler out there and some people do it(shudder). [ There's still an advantage
to using C++ even when you scale it down to something like "C+" even
in a 8-bit micro world. What I mean by "C+", I mean don't use
new/delete, avoid exceptions, avoid virtual classes with inheritance, possibly
avoid inheritance all together, be very careful with templates, use inline
functions instead of macros, and use const variables instead of #defines. I've
been working both in C and C++ in embedded systems for well over a decade now,
and some of my youthful enthusiasm for C++ has definitely worn off due to some
real world problems that shake one's naivete. I have seen the worst of C++ in
an embedded systems which I would like to refer to as "CS programmers gone
wild in an EE world." In fact, that is something I'm working on with my
client to improve this one codebase they have among others. The danger of C++
is because it's a very very powerful tool much like a two-edged sword that can
cut both your arm and leg off if not educated and disciplined properly in it's
language and general programming itself. C is more like a single-edged sword,
but still just as sharp. With C++ it's too easy to get very high-levels of
abstraction and create obfuscated interfaces that become meaningless in the
long-term, and that's partly due to C++ flexibility in solving the same problem
with many different language features(templates, OOP, procedural, RTTI,
OOP+templates, overloading, inlining). I finished a two 4-hour seminars on
Embedded Software in C++ by the C++ guru, Scott Meyers. He pointed out some
things about templates that I never considered before and how much more they
can help creating safety-critical code. The jist of it is, you can't have dead
code in software that has to meet stringent safety-critical code requirements.
Templates can help you accomplish this, since the compiler only creates the
code it needs when instantiating templates.
No comments:
Post a Comment