For novel ideas about building embedded systems (both hardware and firmware), join the 40,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.
By Jack Ganssle
Ada Take Two
Last week's article about why Ada hasn't gained much of a following (http://embedded.com/columns/breakpoint/212902632) generated a lot of commentary both on this site and in emails to me.
"I found your article on ADA very interesting as we had a similar dilemma in one of my previous employers.
"It was back in '99 in Cambridge, UK and the main founder/inventor/CTO of the company was engaged in both software and chip development. He got very involved with the chip development ,which was designed in VHDL, and he was so impressed with the language that he wanted the same level of robustness in software too.
"With ADA being similar to VHDL, he decided to switch software development from C to ADA, in order to raise productivity and produce code with less bugs. However, that didn't prove successful, and that had nothing to do with the effectiveness of the ADA language. Developers in the company started to protest, they said they didn't have the time to learn another language, they didn't contribute anything to ADA cvs tree and they almost refused to write anything in ADA.
"The arguments were so fierce that the CEO had to intervene, by firing the CTO and reverting development back to C/C++ and this effort came to an end.
"As, a chip designer, I find ADA more natural than C, but its mainstream adoption, is more down to "politics" rather than the technical differences in the language."
My initial reaction to this email was: Are the lunatics running the asylum? Who is in charge?
Embedded engineering is a wonderful career and a ton of fun. But the stark fact is that we're paid to achieve a business objective. That's it. The fun, creativity, the learning and all the rest that occupies our days is irrelevant to the business's need for us to produce and support products that generate profits.
The engineers' reaction described by the writer are typical of an outfit at CMM level -3. (Also known as "sabotage.")
But maybe things are a bit more nuanced. Matt Whiting sent this email to me:
"Unfortunately, even after having Tucker Taft present at [the company] and having many conversations with John McCormick and others, I could never convince my engineers to give [Ada] a serious try. I certainly could have mandated its use, but you know how successful that is (and the DOD also found out how successful the mandate approach was!).
"I still occasionally ponder the reasons why Ada never caught on. You mentioned a few such as requiring much more of the programmer upfront rather than during debug. I've become convinced that most programmers today actually like to debug! Thus moving effort from debug to design and coding isn't a big draw.
"However, in my humble opinion, the even larger issue is one of job opportunities. Many of my software engineers were concerned that becoming expert in a niche language such as Ada and losing their skills in C/C++ would make them much less attractive to other employers. I believe there is much merit in this argument and when I had to lay off 90% of my department, I thought about this issue.
"The issue of designing and developing error-free software is certainly very complex and involves more than just a capable language such as Ada, but with respect to Ada adoption, I believe that the DOD mandate actually hurt the language, limited its adoption, kept it a niche solution and that status now is a significant reason why individuals do not choose to use it. I suspect that had the DOD not mandated its use (after all, how good can something be if you have to be forced to use it?), it would have had a better chance to be adopted on its merits alone."
For very good reasons we jealously guard our careers. Getting pushed aside into maintenance, for instance, is a sure way to start one scanning the help-wanted ads (such as they are today). Though I'd think having Ada experience would round out a resume, there's no questioning the fact that C/C++ is the mainstream and the best route to getting a new job.
There seems to be a sort of career inertia at work. While embedded hardware technologies have the lifespan of a fruit fly, software technologies change at a glacial pace. C is 40 years old. It has dominated the embedded landscape for a quarter century. Despite decades of C++ availability, its use as an OO language amounts to less than a quarter of the market.
What do you think? Is software paralyzed by career inertia?