Ada's current status

Hi all,

I imagine this might be a question that is asked frequently, but the world is ever-changing and it never hurts to get some updated answers and opinions…

What is the perceived future of Ada? Will people still be using it in 30 years? I see so many people turning to Rust as it gets more and more popular, and even seeing AdaCore releasing their certified Rust compiler too…are there many new commercial users of Ada these days?

Note that I know Rust’s memory safety features don’t equate to the safety features of Ada, but I feel like a lot of people see Rust as the end-all do-all now because of that memory safety.

Just trying to get a better grip on how things are going with it as I learn about all its cool features that I hope will still be relevant in 10 years…I don’t like Rust.

TIA, Jake

That’s a big question.
As far as stability goes, and as far as openness goes, Ada is top-tier: I’ve compiled 30 y/o code with a compiler that didn’t exist on an OS that didn’t exist, having to do two things: (1) change a dozen or so instances of an Identifier that had become a keyword, and (2) split a single file because GNAT has to have spec/body file-separation. — Trying the same thing with C is an exercise in patience. — So, insofar as that goes, Ada is top-tier.

AdaCore doing Rust is only slightly relevant: AdaCore is a company, not the language. While thy have been a large contributor, the language itself is freely available, open to anyone who wants to implement it. — That leads us into the fact that the LRM is the same as the ISO standard (modulo formatting/templating the ISO requires).

Perhaps the biggest thing that would be helpful to the language, at least my opinion, would be the addition of a meta-language feature allowing (a) the definition of what is essentially Abstract Data Types, which would allow you to [statically] hang the annotation for SPARK proving there; and (b) the definition of how a type is used/interfaced [this would clean up user-defined indexing, as well as allow things like all types to have finalization], essentially expanding the generic-formal-parameter notions into the language, allowing us to clean up the language. — This would allow a lot to be obsoleted, simplifying the language, and the ability to define the language within the [meta-]language, allowing the standard to be proven/model-checked, in-turn allowing removal of some of the trickier verbiage.

Ada is a good investment.
Even if you don’t use it professionally, it will alter how you think about programming in a good way.

5 Likes

Together we can keep Ada relevant as long as we want.

9 Likes

There are even more legitimate concerns about Flutter as it’s a Google project and they’re known for scrapping even successful projects but it’s open source so the worst case is support or development slows down. It’s actually a much bigger risk to Flutter because keeping up with Android is work whereas even Ada 83 would be useful today if Ada 2022 didn’t exist. I would have more worries about Flutter and Rust than Ada but job availability is a different discussion. Personally I think the future is bright for Ada there too but who knows as people have thought Ada should take off in popularity and not just physically for decades.

Disclaimer: I don’t use Ada professionally; at work I use Rust, Python, and whatever else the customer(s) ask for, which sadly has yet to include Ada even when I suggest it.

It’s impossible to say what will happen 30 years hence, but Ada has lasted, what, more than 40 years now? and is still routinely listed among the top 20-25 languages, despite the lack of major corporate backing or academia buzz? We have Ada 83, Ada 95, Ada 2012, and Ada 2022, and at least one intermediate edition. And Ada 2022 is great.

I use Rust professionally at work because that’s what my employers chose, and I do prefer Rust to most other languages, but with all things being equal I’d choose Ada over Rust in a heartbeat. I can do a lot more with Ada’s types (e.g., subranges, free indexing over any discrete type), and Ada has excellent support for design-by-contract, where Rust has… well, nothing that actually works, as far as I can tell. People at work know me as that Ada fanatic who brings up Ada at every chance.

It’s worth pointing out that while Ada started as a US DoD project and was supported for its first 10-15 years by a requirement that all software be programmed in Ada:

  • that definitely worked against Ada’s favor in many, many communities (the particular academic circles I travel in have never forgiven Ada its origin story);
  • the DoD’s requirement was routinely waived (multiple DoD personnel have confirmed this to me); and
  • the mid-90s since then it has persisted over 30 years without any major corporate behemoth backing it (unlike certain languages we shall not name, but whose names start with C, J, O. C., S, and arguably R).

Ada is the language that will not die, and I mean that in a good way.

Ada is somewhat unlucky to have been developed at the behest of US DoD, and to have been developed when it was:

  • For much of my life I heard people complain that Ada was complex and slow, but neither is really true:
    • If you think Ada is complex, then why are you using C++?
    • If you think Ada is slow, then are you sure you’re covering all your bases safety-wise? (Rust, for example, is typically compiled without arithmetic overflow checks, and I’ve personally had that burn me. At work we turn on arithmetic overflow checking.)
  • The time and nature of Ada’s origin mean that it was basically available only with expensive compilers for the first decade or so, as the companies that went through the trouble of developing a new compiler for this then-complex language and had it certified through ACATS needed to recoup their costs. At the same time, Pascal and C/C++ compilers were available relatively cheaply, or even for free if you knew what you were doing. (I built gcc on a DEC computer in 1992 or 1993, and trust me: I didn’t really know what I was doing. Meanwhile, GNAT was just starting development)

nVIdia. I thought that was more recent than 2019, though.

I’m worried that Rust will peak, then decline, as people encounter some of its learning curves, and/or realize that solving the billion-dollar-bug is not the same as solving all their other problems. In another thread here someone points to issues he had with Python dropping support of some older libraries as it matures; I’ve seen that happen with Rust, too.

That may be inherent to the open source world, where someone can develop a library that many people find useful and come to depend on, but no one contributes back. Eventually that person loses interest, dies, or otherwise moves on, and suddenly everyone’s stuck using abandonware. That could happen one day with Ada via Alire, But Rust is chock-a-block with open source libraries that are widely used, and I know that some of them that we use at work are starting to look like abandonware. You see what I mean.

Ada really needs some new “Learn to program in Ada” books, or “Ada in Action” or something similar that shows how the language can shine. But it also needs libraries, so that people can solve what they need to solve without deciding to opt for (say) Rust because it does have, say, a low-latency, high-throughput web server with TLS built-in (no, having to download and build a separate C library does not count as “built-in”) and web API documentation generation easily latched on.

8 Likes