Ada/SPARK, marketing, reach and the abysmal state of things

Since Broadcom took over Arduino, maybe there is a certain window of opportunity to convince people to migrate to the ADA ecosystem. Personally I think ADA is even easier to learn than the stripped down C++ of Arduino, especially with runtimes like rp2040_hal at your back.

On the other hand if you look at the poor quality of many Arduino packages, I‘m not sure if we would want that in alire.

I agree to an extent but I think the type system of Ada makes it less likely to be a target. Largely because Ada emphasizes type or as on Arduino you’re probably not going to be doing much with type and if you do you’re going to be trying to avoid type checking because you’re going to be trying to implicitly extend things.

One you need to make it really easy to get into which means you’re going to want to get a very simple library setup pretty quickly. And you’re going to want to make it very configurable for special new hardware and shields as well as probably design something so it can be easily ported to STM 32 and stuff like that because a lot of people who do are do you know will often upgrade to an STM 32 or another microcontroller.

I completely disagree. The type system makes coding on embedded targets so much simpler. You don’t want any ints where the number of bits depends on the architecture. Look at what @godunko did with a0b. I think this is basically what Arduino provides, but written in Ada. Of course platform support is much less right now, but it’s a community effort to support as many targets as possible.

Not sure how much I can comment on this since I have only recently started using Ada, but the reputation of it being an old legacy language does not help things.

There are also very few resources on the language itself hence the learning curve is much steeper than the other mainstream ones.

Oh and as noted in a recent office hours docs is quite lacking.

An “old legacy language”? No! A language with a long history, yes. With a strong foundation and continously improving. Helps building reliable software in a cost-effective way. With features that few other languages offer, and definitely not all combined.

Please help rejecting that s.c. “reputation of an old legacy language” [sic] whenever you meet it…

I guess there were some sour grapes with most of the Ada compilers back then being paid unlike the C compilers and the DoD Ada mandate was not particularly fondly remembered by the C/C++ enjoyers.

The modern software ecosystem outside of mission critical is very much more so “test in prod”, “ship it then we find out” or “breaks things fast move fast”.

As for the global reach of the language itself it is barely heard of outside of your usual IT circles in the West (Europe and maybe some parts of the States). I doubt there is any non traditional mission critical usage of Ada especially in Asia or the rest of the world.

I do feel that the language is grossly underrated and misunderstood. If any modern language has shown that explicit over implicit is good it is Golang, but I digress.

No.

Well I didn’t mean to come across as that kind of person but plenty without knowledge on Ada will probably think that way without first trying to understand why Ada is designed in such a way.

Just to clarify I do love using Ada myself :sweat_smile:

Programming languages are like many other things. People believe (in a religious sense) but don’t really think. We always tend to appreciate language that resonates with us.

To each their own if they prefer C (a good portable assembler for its time) or C++ (no comment) or Go (with good reasons) or any other language. It all depends on how you view your job, the project and the client’s deep pockets.

Most developers don’t view their software as if they were building a bridge. They confuse coding with engineering, and analysis with programming.

Most doesn’t mean all. Sloppy software can end up costing a lot. Rust has also drawn attention to the idea of safer software. That’s probably why Ada and SPARK are becoming more popular these days.

Fully agree on these :smiley:

It just irks me when people say it’s old and then use or push something even older and just generally worse.

I understand.

Two lone developers came up with a portable assembly language solution to their—let’s call it—“tactical” problem. A few years later, a global collaborative effort produced Ada, a more “strategic” approach. Both are worthy of respect.

What’s unfortunate is that people are rarely able to step back and reflect on how to improve the way they do things.

I stood back and reflected by dropping c and c++ in 2005.

As a professional C++ enjoyer, here’s my thoughts.

old legacy language

On the timeline of programming languages, Ada is objectively old. Own it instead. Who cares if it’s old? It has a 40 year track record. Can it solve today’s problems?"

From what I hear, Ada is great for embedded, which is great! However, most developers work outside embedded development, and have never knowingly come across an Ada tool or library. Hence, they only see Ada used in “old” things and therefore associate it to other “old” programming languages, primarily COBOL since it’s “old” and is in old systems. The languages which dodge this reputation from the same timeframe are all things they’ve knowingly come across or used: C, MATLAB, (ba)sh, and AWK. SICP even helps LISPs escape this (via Scheme).

Ada provides incredible automated checks which can be leveraged with LLMs. The spec/implementation separation lets me write a package spec with types and design-by-contract and toss the body to an LLM with the compile-time and runtime checks backing me up. Specs can also be used to provide usage direction and checks while limiting token usage. What other language lets me incorporate formally verified components into running software today?

This is the “Ruy Lopez” of Ada discussions I used to get in:

  1. “Ada is old!” (usually with a COBOL reference)". “Ada is actually a contemporary of C++. Python actually goes back to 1989, is that ‘old’?”
  2. “Ada is only used in safety critical systems.” “Well, I wrote a super useful Ada tool for myself for real work.”
  3. “Ada caused Ariane 5 to blow up!” “The rest of the story is Ariane 5 became one of the most reliable heavy lift rockets, and was used to launch the JWST.”