Is Ada ready for mainstream embedded designs? -

Is Ada ready for mainstream embedded designs?


In two recent columns on “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 articles on Ada that might providesome more perspective about how it deals with some of the common problemsfacing embedded developers include:

Whyaren’t developers interested in Ada
Goodcontracts make good programs
PracticalAda memory management for real time systems
Solvingtiming problems in Ada
Taskingin Ada

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. 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.

See more articles and column like this one on Signup for the newsletters .Copyright © 2013 UBM–All rights reserved.

11 thoughts on “Is Ada ready for mainstream embedded designs?

  1. Ada has gained a reputation as an old, dead language with many programmers among us. But the fact is, when compares to C and C++, it's still decades ahead in many many ways. C++11 does little to address issues like concurrency as a first class concept in t

    Log in to Reply
  2. (continuing on) The benefits of Ada over C and C++ for embedded systems are repeatedly overlooked by embedded developers. the miss the facts that being able to define that a certain data type is defined at a certain position in memory is defined in the

    Log in to Reply
  3. In case anyone not familiar with Ada or has only experienced Ada83, please be aware that the “Practical Ada Memory Management Strategies for Real-Time Systems” article referencedc above is *very* outdated. For instance, it promotes the bad assumption that

    Log in to Reply
  4. Hi Bernard,

    I'm glad you pointed out that although Ada is usually associated with safety critical systems, its virtues can be applied to others areas. For instance, it can be used to help improve network technology. See the Ironsides project (

    Log in to Reply
  5. Hi Bernard,

    Does anyone want to chime in on the availability of Ada compilers/run time environments for the Cortex-M and Cortex-R micro-controllers running bare iron or with common uC RTOSes (FreeRTOS, RTX, etc.)? Is this not practical? Seeing that the

    Log in to Reply

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.