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.