In two recent columns on Embedded.com “Ada2012 redux“ and “Adagets a makeover,“ Jack Ganssle enthusiastically greets thearrival of Ada 2012 because it incorporates features and capabilities thathe has been working hard to convince C and C++ embedded systems programmersto adopt explicitly and after the fact into their programming practices.
If his columns have tweaked your interest in Ada, make sure to read theonline version of this week’s Tech Focus Newsletter on “Using Ada in embeddeddesign,” which includes some recent design articles and other columns,white papers and webinars on Ada 2012 and on Ada programming in general.In addition, several other Embedded.com articles on Ada that might providesome more perspective about how it deals with some of the common problemsfacing embedded developers include:
I have also found a number of other design articles, conference papersand professional journal articles that might give you some more perspective:
Rationalfor Ada 2012: Introduction
UsingAda 2012 for multicore real time task scheduling
Realtime multicore/multimode operation using Ada 2012
Executiontime control using hardware accelerated Ada
High-integrityobject-oriented programming with Ada
Developingsecure code using SPARK
Even with the new capabilities incorporated into Ada 2012, there remainskeptics in the developer community who do not think Ada will be a factorin the mainstream of embedded programming. Part of that is due to the factthat Ada was developed in the early 1980s as a programming language for safety-criticalmilitary and aerospace applications.
But the nature of the embedded systems that software developers workon is changing as the devices they develop insert themselves into our dailylives in a way that the desktop computer never did.
They are in the powergrid that serves our homes, in the meters that monitor our power useage,in virtually every electric appliance and entertainment device, in our lightbulbs, in our phones, in our automobiles and in new intelligent medical monitoringdevices – and many of them are connected to each other, to each of us andto the broader internet.
This new environment is certainly one in which something closer to therequirements for safety-critical design is needed. If not safety-critical,then dependable, absolutely dependable. In some environments,such as in the auto, and in the increasing number of medical monitoring deviceswe use, this need is an obvious no brainer. In others, the failure of theembedded design may be only an irritating inconvenience for the user. Butif such failures happen often enough, those failures may be critical to thecontinued existence of the company that built them.
Also, as is pointed out in “Software Certifications and Standards: What Every Device Manufacturer ShouldKnow,“ and “Tracingrequirements through to object-code verification,” many of the standardsorganizations that serve the needs of various industry segments – industrial,consumer, medical, transportation – are adopting software reliability anddependability requirements every bit as demanding as those in safety-criticalmilitary/aerospace applications.
But if you’re still convinced that you do not need anything other thanC or C++ in your in your embedded designs, consider the argument of GregGicca of Adacore in “Studentsneed to learn multiple programming languages“ – that learning aboutand using another programming language such as Ada might help you think betterand write better C/C++ code. If it is true for computer science or electricalengineering majors in college, it is true for professional programmers aswell.
“Understanding just a single language promotes solutions that onlyapproach a problem from a single perspective ,” he writes. “Knowingmultiple languages allows the problem to be looked at from a variety of perspectivesso that multiple solutions can be compared and the most natural solutionfor the problem can be selected.”
One good example of this ability to think about C-code development ina different way is “ Seventeen steps to safer C code ,” by Thomas Honold, who was facedwith the challenge of writing a C-based project with safety and reliabilitydemands that C could not satisfy. His earlier experience with Ada in a numberof earlier military/aerospace projects made it possible for him to come upwith a set of techniques and procedures for use with C to satisfy the requirementsof the project.
The issue of the best programming language is a complex one. I wouldlike to hear from you, in response to this article, or in blogs and articlesfor publication on the site and in the newsletters about your experiencesand thoughts about programming in general, on Ada, on C or any other languagewith which you’ve had experience.
Embedded.com Site Editor Bernard Cole is also editor of thetwice-a-week Embedded.comnewsletters as well as a partner in the TechRite Associates editorialservices consultancy. He welcomes your feedback. Send an email to , or call928-525-9087.