Is Ada ready for mainstream embedded designs?
In two recent columns on Embedded.com “Ada 2012 redux“ and “Ada gets a makeover,“ Jack Ganssle enthusiastically greets the arrival of Ada 2012 because it incorporates features and capabilities that he has been working hard to convince C and C++ embedded systems programmers to adopt explicitly and after the fact into their programming practices.
If his columns have tweaked your interest in Ada, make sure to read the online version of this week’s Tech Focus Newsletter on “Using Ada in embedded design,” 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 provide some more perspective about how it deals with some of the common problems facing embedded developers include:
I have also found a number of other design articles, conference papers and professional journal articles that might give you some more perspective:
for Ada 2012: Introduction
Using Ada 2012 for multicore real time task scheduling
Real time multicore/multimode operation using Ada 2012
Execution time control using hardware accelerated Ada
High-integrity object-oriented programming with Ada
Developing secure code using SPARK
Even with the new capabilities incorporated into Ada 2012, there remain skeptics in the developer community who do not think Ada will be a factor in the mainstream of embedded programming. Part of that is due to the fact that Ada was developed in the early 1980s as a programming language for safety-critical military and aerospace applications.
But the nature of the embedded systems that software developers work on is changing as the devices they develop insert themselves into our daily lives in a way that the desktop computer never did.
They are in the power grid that serves our homes, in the meters that monitor our power useage, in virtually every electric appliance and entertainment device, in our light bulbs, in our phones, in our automobiles and in new intelligent medical monitoring devices – and many of them are connected to each other, to each of us and to the broader internet.
This new environment is certainly one in which something closer to the requirements 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 devices we use, this need is an obvious no brainer. In others, the failure of the embedded design may be only an irritating inconvenience for the user. But if such failures happen often enough, those failures may be critical to the continued existence of the company that built them.
Also, as is pointed out in “ Software Certifications and Standards: What Every Device Manufacturer Should Know,“ and “Tracing requirements through to object-code verification,” many of the standards organizations that serve the needs of various industry segments – industrial, consumer, medical, transportation - are adopting software reliability and dependability requirements every bit as demanding as those in safety-critical military/aerospace applications.
But if you’re still convinced that you do not need anything other than C or C++ in your in your embedded designs, consider the argument of Greg Gicca of Adacore in “Students need to learn multiple programming languages“ – that learning about and using another programming language such as Ada might help you think better and write better C/C++ code. If it is true for computer science or electrical engineering majors in college, it is true for professional programmers as well.
“Understanding just a single language promotes solutions that only approach a problem from a single perspective,” he writes. “Knowing multiple languages allows the problem to be looked at from a variety of perspectives so that multiple solutions can be compared and the most natural solution for the problem can be selected.”
One good example of this ability to think about C-code development in a different way is “ Seventeen steps to safer C code ,” by Thomas Honold, who was faced with the challenge of writing a C-based project with safety and reliability demands that C could not satisfy. His earlier experience with Ada in a number of earlier military/aerospace projects made it possible for him to come up with a set of techniques and procedures for use with C to satisfy the requirements of the project.
The issue of the best programming language is a complex one. I would like to hear from you, in response to this article, or in blogs and articles for publication on the site and in the newsletters about your experiences and thoughts about programming in general, on Ada, on C or any other language with which you’ve had experience.
Embedded.com Site Editor Bernard Cole is also editor of the twice-a-week Embedded.com newsletters as well as a partner in the TechRite Associates editorial services consultancy. He welcomes your feedback. Send an email to firstname.lastname@example.org, or call 928-525-9087.