I'm new to coding embedded software. It's been something of a baptism of fire; I was handed a nice quad-TigerSHARC board and asked to make it work in an environment it was never designed for (it was meant to be inside a PC - instead I've created an environment for it electrically identical to the one it would see inside the PC, but inside something else entirely) and it's actually starting to do stuff.
My coding experience is mostly C++; I'm using VDSP++ ver 4.0 (the version supported by the board manufacturer's libraries) and my code is essentially C++ with a careful lack of classes and templates such that it will compile as C, if you see what I mean. I've no doubt a hardened C coder would want to change a lot of my code, much as I find my keyboard fingers twitching when reading their code.
There are some old-school embedded coders at my workplace who mumble about how C++ is not really a real-time language and that C is better for such applications. I can certainly understand not using something with automatic garbage collection (you never know for sure when everything will pause for the memory to be cleaned up, as I understand it), but why avoid C++? Is there something about the classes and templates that makes it unsuitable for embedded software? What affects the decision to use a given language for embedded coding? I'd be grateful to hear about reasons for/against other languages besides C and C++.
While I'm here, is there any embedded lisp out there? I'm a secret lisper.
'Chops