Many myths surround the Ada programming language, but it continues to be used and evolve at the same time. And while the increased adoption of Ada and SPARK, its provable subset, is slow, it’s noticeable. Ada already addresses more of the features found in found in heavily used embedded languages like C+ and C#. It also tackles problems addressed by upcoming languages like Rust.
Ada and SPARK may have the bulk of their supporters in the military and avionics business. However, a growing number of developers utilize them for Internet of Things (IoT), medical, and automotive applications.
A recent paper by VDC Research’s Chris Rommel, titled “Controlling Costs with Software Language Choice: How Ada Can Help,” highlights many reasons why these developers are turning to Ada and SPARK, and why you should take a closer look at them. Chris makes a very compelling case as to how Ada and SPARK can reduce development costs in any programming environment, not just military and avionics.
Chris concludes, “Development technologies have a profound impact on one of the largest and most variable costs associated with embedded-system engineering—labor. At a time when on-time system deployment can not only impact customer satisfaction, but access to services revenue streams, engineering team efficiency is at premium. Our research showed that programming language choices can have significant influence in this area, leading to shorter projects, better schedules and, ultimately, lower development costs. While a variety of factors can influence and dictate language choice, our research showed that Ada’s evolution has made it an increasingly compelling option for engineering organizations, providing both a technically and financially sound solution.”
The paper takes advantage of VDC Research’s survey results that addressed Ada, C, C++, C#, and Java. It also uses results from VDC’s Total Cost of Ownership (TCO) calculator. The TCO calculator is based on a survey of over 700 respondents from a range of industries. It uses a variety of statistics in its computation, such as devices per project, bill-of-materials costs, distribution of development costs by engineering discipline on current project, number of engineers per project, and more.
1. The chart shows the potential software-development cost change per device, Communications/Networking/x86-based project (percentage change in costs versus current use of C). (Source: VDC Research)
One of the results shows the potential software development costs change per device for a Communications/Networking/x86-based Project (Fig. 1). This example, one of many, “evaluates a communications/networking project with an x86 processor that produces 10,000 units and for which C was used for the software development.” Other languages like C++ and C# show a reduction as well, but Ada comes out the best across the board.
The paper highlights these reasons for Ada and SPARK’s ability to improve software development:
- Lower-cost development resources
- Average Ada projects are shorter in duration
- Ada projects are reported as more likely to be on schedule (Fig. 2)
- Focused resource application
- Software-development cost savings
2. These results taken from the survey reveal adherence to current project schedule, segmented by software development language use (percentage of responses), Source: VDC Research.
Much of the current work with Ada is based on older Ada 95 compilers. A comparison of the latest Ada 2012 and prior versions highlights the changes that have occurred. New development for applications such as IoT or automotive will probably use Ada 2012, on which SPARK is based. It adds features like contracts to Ada. Contracts allow SPARK to prove that various runtime checks can be eliminated because the conditions aren’t able to occur, reducing the size of an application and increasing performance.
In general, Ada already makes embedded “programming in the large” much easier by handling issues that aren’t even addressed in other languages. Though these features are often provided by third-party software, it results in inconsistent practices among developers. Ada also supports the gamut of embedded platforms from systems like Arm’s Cortex-M through supercomputers. Learning Ada isn’t as hard as one might think and the benefits can be significant.
You can learn Ada and SPARK online via the learn.adacore.com site. AdaCore is one of the major supporters of Ada and SPARK. GNAT (GNU Ada) is an open-source version of Ada/SPARK based on the GCC compiler system.