Ada language seeing activity in universities

Story

Sally Cole Senior Editor Military Embedded Systems

Once considered a DoD-only programming language, "Ada" continues to evolve and is increasingly being taught in universities around the globe for high-integrity applications that demand safety, security, and reliability. The language, around since the early 1980s, is now undergoing a revival of sorts in industry and in academia.

Ada originated as a competitive design sponsored by the Department of Defense (DoD) during an attempt to find a common and modern language that – at the time – could take advantage of the many software-engineering advances of the late 1960s and 1970s. Back then, most of the programming languages were from the 1950s and 1960s and few had “checking” capabilities.

Initially, Ada’s application area was military and defense systems because that was its original sponsor, but has gradually shifted more generally to systems in which either safety or security – or both – or reliability were critical. Again, the focus is to take advantage of Ada’s language checking and security-oriented features.

As the language evolved, it has changed to reflect technological advances. “A full mid-1990s revision added full object orientation to the language, while a 2005 revision added support for interfacing with Java, which was quickly gaining traction at the time,” says Ben Brosgol, senior software engineer at AdaCore, a provider of software solutions for the Ada programming language.

“More recently, in 2012, Ada added full support for contract-based programming, which allows you to add information that better documents what your program is doing and can be enforced with either the profiler or by run-time checks. Other languages have degrees of support for contract-based programming, but aren’t really part of the language standards and require extra tools. With Ada, it’s built into the language.”

Ada gaining popularity

Over the last couple of decades Ada has been perceived to be close to a dead language only used in critical defense applications and not very interesting to incoming college students who spent much of their high school years learning C or C++.

While languages such as C, C++, and Java may receive more attention by sheer volume, one simple explanation is that “Ada has never made significant inroads into the enterprise software realm,” says Brosgol.

The key aspect that distinguishes Ada from other languages is the degree of checking that’s enforced by the language. “In languages like C or even C++, much is left to the option of the programmer and it’s assumed that you know what you’re doing…and if you don’t you’ll find out in the debugger. The idea behind Ada is that the compiler does many of the checks that in other languages take place only during run time. Ada boasts strong ‘typing’: if you have a data object and it should be used only as an integer, it’s not useable as some other type.”

Compared with C, Ada “offers more in terms of language features, as well as checking,” says Brosgol, “including generic templates for reusability as a mechanism for concurrency, and abstraction – exploiting the various benefits of research work from the 1960s and 1970s.”

Enthusiasm for Ada in universities

To help promote academic awareness of Ada, AdaCore launched the GNAT Academic Program (GAP) and is providing at least 200 members with access to AdaCore tools and support. “We try to encourage universities and professors to teach Ada, although it’s still not a major language in terms of their curriculum,” Brosgol notes.

Learning Ada “involves not just learning the language but also syntax – a set of problem-solving skills in terms of how to think about solving problems, how you design before you code. It’s a different mindset,” he adds. “We’re finding that students who learn Ada turn out to be more efficient programmers than those who don’t learn it, and they’re landing jobs not only in Ada but also in other languages and fields.”

SPARK, a subset of Ada, is also attracting academic attention because it enables mathematically proving program properties. “Students are learning how to build reliable software, as opposed to building it and debugging it until it works.”

More than 18 months ago faculty and students from Vermont Technical College in Randolph Center, Vermont, launched a CubeSat satellite into a 500-kilometer Earth orbit as part of NASA’s Educational Launch of Nano-satellites (ELaNa) IV program that relied on Ada. “We specifically chose to write the control program for our CubeSat in SPARK/Ada because it offers increased reliability over the C language software used in almost all CubeSats to date,” says Prof. Carl Brandon, the project leader from Vermont Technical College. “Using Ada makes complete sense because it is so much more reliable than C code.”