I read an interesting blog post last week by Bill Wong about safety and security of embedded applications. He makes the case for at least taking a look at the new Ada 2012 language if you want to more easily write safe and secure applications. As he points out, "Dangling pointers and buffer overflows are common C bugs."
The more complex code you have, the more likely you are to have bugs. The more bugs you have, the more time you have to spend testing your software. So when deciding which programming language to use on an upcoming project, wouldn't you want to choose something that will require less testing time? Here is a simple example. Suppose you have an object to measure distance. In Ada, because it is a strongly typed language, you can enforce the minimum/maximum values allowed for the object at compile-time. In C or C++, which does not have a strong typing capability, minimum/maximum values must be verified at run-time. So, in C and C++, there is much more work required on the part of the programmer to define, and consistently use, the functional ranges of data, which introduces even more chances for error. In Ada, the compiler validation of ranges reduces the additional coding needed, and therefore minimizes the chances for error.
We at Vector Software love Ada! VectorCAST/Ada was our first tool on the market in the mid 1990s (called AdaCAST back then) and we continue to make improvements to the tool on a regular basis. We have a broad, loyal customer base. If more folks talk about safety and security of embedded systems and Ada in the same sentence, maybe we will see an increase in Ada adoption, as well as increased use of unit testing tools for Ada. At the end of Bill's blog, he states "I recommend looking into static and dynamic analysis tools because they do make a difference."