Not an expert in ADA, but after playing around with it for a while, I don't know why this language doesn't get more praise. It seems to solve a lot of the memory problems Rust solves, albeit in a different way. Its first-class arrays and strong type system seem to go a long way into not having to deal with pointers often, for example. These "features" today would likely be considered part of "a better C", except that none of this is even new; ADA dates all the way back to the 80s. And then ADA/Spark allows for formal verification, which C/Rust do not have to my understanding.<p>Why is ADA not adopted more broadly?
At the beginning of the century I worked at a company that used Ada for radar software. As it became clear the hpux and Solaris (pa-risc and sparc) where being replaced by Linux On x86 and my company had AdaCore come in and do training in the new toolset (rational not providing Ada compilers for Linux)<p>AdaCore were quite knowledgeable as a company company offering a supported vendor of gnu Ada. I think they’re Still involved heavily in the development of the free ada compiler “GNAT” (part to gcc)<p><a href="https://www.adacore.com/get-started" rel="nofollow">https://www.adacore.com/get-started</a><p>Defense companies liked open source vendors to take risk off and I’m not sure how it worked but some Ada compilers were “validated”<p>I grew to like Ada, (it has some warts, strings for example, but we didn’t use them often)<p>GNAT Wikipedia page.
<a href="https://en.m.wikipedia.org/wiki/GNAT" rel="nofollow">https://en.m.wikipedia.org/wiki/GNAT</a>
I've never written in Ada, but I did come across m2os the other day: an Ada-based system for Arduino Uno microcontroller (and a couple of others) that features a simple scheduling policy.<p>This is actually quite intriguing: a language that includes the concept of tasks at the language level, rather than trying to hammer in a bunch of macros or somesuch into C to achieve a similar result.<p>It makes you wonder if Ada really ought to be the "next" system programming language instead of Rust.
There's an online book for Ada for anyone that's interested in what it looks like. <a href="https://learn.adacore.com/courses/intro-to-ada/index.html" rel="nofollow">https://learn.adacore.com/courses/intro-to-ada/index.html</a>
I don't care at all for the underscore-heavy style but otherwise Ada is actually a great language for developing high-reliability systems like avionics. Formal specification and verification are only going to grow more important in aircraft certification as time goes on.<p>Nice to see the defense/aerospace sector giving a nod to free software like gnat.
Ada 95 was the language for 1st year Comp Sci at the University of Glasgow at the start of the millennium. There was a small revival in Ada at that time.<p>I remember the first lecture introduced a little graphical rocket simulation in Ada and us students would write code to land the rocket. I liked that.<p>Then i think the semester after this they introduced us to Haskell (ghc = Glasgow Haskell Compiler). Another good course but one i wished i’d paid more attention to at the time!
I'm not sure if this is still the case, but one of the reasons I learned Ada in college is because it was used by the DOD. I'm not sure if it's still a requirement for DOD projects, but I believe it was at the time. Which would perhaps explain why Airbus chose Ada. Either that or simply the engineers who are on the project were exposed to/ used Ada during other DOD projects.<p>Since college, I've never touched it again.
Does anyone use Ada for general purpose programming, like for where one might otherwise use Python, Go, nodejs, or something like that? Is it used for any low-reliability areas?
That's certainly one way to minimize amount of code in the system, making it easier to review and presumably certify.<p>I feel that with more common languages, it is so easy to grab some open-source library and use it without any code review whatsoever. Even if you prohibit third-party code, there might still be some copy-paste from open source projects and even Stack Overflow.<p>Mandating that everything is written in Ada language neatly prevents all this stuff.
Airbus seems to use ADA mainly for drone software. Everything else is MISRA C, or MISRA C with a layer of abstraction overlaid that allows for generation of assembly from the same codebase as well.
The first real programming task of my apprenticeship when I was 17 was porting a Boeing Ada avionics project to C. Looking back years later that just feels wrong.
To my shame I had never tried ADA before, but after a cursory look I find the syntax similar to Oracle's PL/SQL, which evokes many bad memories. I am sure I will be able to enjoy the language once I pass this barrier.