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

Hi all,

I am watching some of the new videos uploaded to YT in the ACM SIGPLAN channel and it is just depressing. There are a ton of videos about formal proofs, better software quality, software analysis, etc; and SPARK is nowhere to be found AT ALL. Even in language or syntax comparisons and analysis. I blame the people presenting for not properly doing their research (only one video mentioned Ada, but in the context of the 80s). But I also blame us for doing the poorest job at spreading and sharing Ada/SPARK. And, no, AdaCore is not the one responsible for marketing, this is the responsibility of the community…

Here are some other videos that do not mention SPARK and if they would, their conclusions would have been completely different:

We really need people who are passionate and knowledgeable going into non-Ada circles and environments and showcasing and explaining Ada/SPARK in an engaging manner and it their full glory.

Also, to be fair to us, some “researchers” porpusfully “miss/hide” some information to make their point be correct, as otherwise, their thesis or ideas would not be valid. I do not consider this to be a reasonable nor good thing, but it is what is happening in many areas. Most people who do that with Ada probably would use excuses as “Ada is dead” or “nobody uses SPARK”. We need to showcase the modern and updates uses of Ada/SPARK to shut up people about it (see all my others posts here about NVIDIA).

Anyway, I am quite frustrated and I would like to blame myself. The world may not be a nice, honest and fair place, but that is just the way things are. I want to focus on the things that I can actually change and have and impact on.

Best regards,
Fer

6 Likes

I would like to see some Linux services rewritten in SPARK, perhaps a distro where the core tools and services are rewritten in SPARK. If I had time to invest in this, I would start the project.

That is what the Rust people have been doing for years, they have rewritten sudo, coreutils and many many other common tools such as less, cp, grep, etc.

One of the biggest issues with Ada/SPARK is that it lacks libraries that can hugely speed up the development of such tools. Also, less people know it, there is less momentum, the Ada tooling is quite unique and people do not want to learn it and packaging Ada software is a huuuuge pain in the ass, so software written in Ada is a pain to get into the repos for people to use it without friction…

Though I also share your vision and goal, this was not criticism towards it.

Best regards,
Fer

EDIT: actually, the issues I explain for Ada also existed in other languages, such as Fortran. But that community got the memo, bonded over it and created a somewhat “extended standard library for fortran” and now everybody uses it and the community has joined into creating a “single source of truth” for those libs and their usage has become pretty common. GitHub - fortran-lang/stdlib: Fortran Standard Library

2 Likes

I think rewriting ls like tools is useless.Sudo and services that might be exploitable are better targets. Also package manager, init system/service manager, libraries of course. The basics to get noticed and to get more people contributing.

One of the biggest issues with Ada/SPARK is that it lacks libraries that can hugely speed up the development of such tools

Yes… that’s very sad.
BUT, I working on this :slight_smile: I am alone, and working on my free time on this, notably with Adarium, which I hope to be able to make a living from one day.

Currently, I working on Aclida, a formally proven, full-featured CLI framework. The sub crate aclida_cli will be comparable to clap-rs or Cobra. Aclida will be a “meta-framework” to handle many things around the CLI (like interactivity, component “UI”, deep color management (more powerful than ansiada), etc), and the global meta framework, aclida, will be more like Rich or Spectre.Console.
It is not yet released, nor open-sourced yet. Currently I am only working on aclida_cli. Maybe I should “reserve” the word on Alire :thinking:

The full-feature CLI framework will be the building block of awesome apps. Like you said, Rust redev popular linux commands and services in Rust. I also want to do that in Ada/SPARK. It is feasible, but, we need to dev the building blocks before going deeper…

2 Likes

Useless stuff, BTW.

Formally verified rubbish remains rubbish.

The fairy tale of lacking libraries and tools is just one of many. I well remember that before all this idiotism of toolchains, stacks, software processes etc started, the fairy tale why Ada was unpopular was “lack” of experienced Ada programmers. Go, Rust and other garbage languages started without any experienced programmers.

The sad truth is simple. People want garbage, they enjoy it!

2 Likes

In particular, what is missing?
Also, is “Libraries” Ada libraries, or bindings? (Or both?)

Would it make “the problem worse” by implementing an actual IDE?
Integrated in the sense of the R-1000, or perhaps Delphi, not the “it’s Eclipse, but calls out to javac” idea of IDE.

I wanted what became Alire to be (a) IR-based [rather than text] and (b) database-based, rather than [essentially] glue-code for git. This would have had the benefit of not allowing malformed code to be submitted (ie if it can’t parse to IR, you can’t submit it) and you could leverage the database nature by (eg) having an associated License-field and be able to SELECT * FROM Crates WHERE Compatable(License, GPL); or a version field and SELECT * FROM Crates WHERE VERSION > 3 AND "OpenGL" in Tags;

I don’t know if it’ll help, but take a look into OpenVMS and how it handled CLI; in particular, look at the structured command-line parsing. — If you work things “inside out” (data-structures first, rather than text), it’ll probably yield more solid results.

Never underestimate the manager’s willingness to prioritize “replicable” over “competent” as a quality in employees (and even tools). This is exactly why the F-35 used C++.

You need to stop worrying about this particular thing.
It is inconsequential that SPARK isn’t mentioned by mathematicians and type theorists on a specialized (obscure?) conference.

If you want to focus, focus on this:
Ada is a general-purpose programming language geared towards software engineering.

5 Likes

Welcome to the pissing match of “my language is better than yours” and “I don’t make mistakes in c.”

2 Likes

I also agree not to worry about that.
I notice that there are current 0 comments on each of those 3 videos. It would be an opportunity to drop some words. Most probably it won’t reach or even less influence the professors those researchers work for, but why not give it a try?

Making a cool game or a useful application in Ada will have much more impact IMHO.

5 Likes

Or paying for some Google Adwords. Ada and AdaCores/community websites can do the rest.

I mean, I am biased but I do think we have a cool project to promote Ada: weenoisemakers.com/pgb-1 :grinning_face_with_smiling_eyes:

11 Likes

:heart_eyes: Instantly wishlist-ed!

I’m new to this language. But I think I also have other insights as well. I did look into why this wasn’t used that much and I came to the following. Much of the initial roadblocks are things that aren’t bad in the long run and in fact good, but they do hit you in the face the first time.

I can inadvertently sound like an asshole so please just take what I say based on the direct meanings. I read all the responses and waited a day or two to make my response to see if I had anything to add, and I think that this covers most of the bases.

I cover the whys of why Ada isn’t used in the first 9-10 points. Then after that section I give a long write about what should be done and other opinions. I tried to shorten this but I think that this really gives a good overview of everything the way it is. Please make any disagreement known so that I don’t continue to make blunders unknowingly. :sweat_smile:

TLDR: Giant post explaining all the why’s I could think of. LLM/AI was not used to edit or write this post. I painfully typed it.


  1. ‘longer‘ syntax. ‘“end functionname;“ instead of ; or }
  2. “malformed strangers“ I am not namecalling just yet, please read the elaboration below.
  3. Visually old websites.
  4. Lack of youtube tutorials.
  5. Adacore. I know Irvise already talked about it not being their purpose but I have opinions!
  6. Lack of ‘fun’ or ‘cleverness’.
  7. Peer pressure, “no one uses that so why should you?”.
  8. Slander.
  9. Industry conditions.

Now anyone that actually gets thrown away by these things probably isn’t someone you want in a programming community because many of these things are surface level indeed.


1:
The longer syntax for some reason will anger many. For simple example: Personally I prefer the ends over the curlies.

}} // C ending or whatever
VS:
    end Input;
end Handler;

While it does provide more information and makes things easier, many programmers will initially get uncomfortable because autism is prevalent.(change in schedule or programming style is painful for (most) autistics) This then will initially lead to an initial dismissal, or to the next outcome.


2:
A malformed stranger would be someone who takes part in arguments such as, “python is better because it doesn’t have semicolons!“. But in what way is that better?
No semicolons?
Faster to write? Sure.
Easier to maintain? Modern IDEs could show you what section your mouse is on belongs to, but can you get that information just by glancing at it? No.
What if your formatting somehow goes away? Unlikely but disastrous.
All the above matters, in my personal opinion maintenance ease is far better than how fast it can be written. Yet a malformed stranger will only discuss how FAST and EASY it is to not have semicolons.


3:
The visual age to some ada websites will drive some away as well, as we all know, many decide EVERYTHING based off of first impressions. If that is ‘bad’ then some of these people will then look for any reason to justify their dislike of it. They already disliked it because many do not like to be told that there is a better way. They already disliked it because it is not something that they sought out for themselves, but instead something that was told to them to be the better way. Most people don’t like to be told that they are wrong, but when you do, and you are also right, this will cause them to then come against the first two sections, differing syntax and malformed strangers, they will then latch onto this to then call you wrong and go back to what they were doing before, because in their own mind they are smarter and can never be wrong.

It does sound arrogant to say many programmers believe themselves to be infallible, but I can’t find a better way to explain so much of why certain things happen. Saying that, “in their own mind they are smarter and can never be wrong“, is an extreme opinion, but the two initial roadblocks will provide them an ‘easy out‘ where they can throw it back in your face.


4:
The lack of youtube tutorials, I was used to searching on youtube and getting a spoonfed tutorial that was most likely written by a youtuber who did nothing but youtube as a career. It makes me sound old and angry but manuals and written tutorials are far better. learn.adacore very nice! Barnes 22 very nice too! Though it wouldn’t hurt to just have a fast-paced tutorial series about ada. It should be fast-paced to condense as much information as possible, while still being a tutorial. Condensing is good because it would be trying to sell a ‘new‘ language. Selling it is the first part, the more in depth and longer tutorials can be relegated to written content, or later in time. A point of contention I have for many youtube tutorials, a bad microphone.

Small bit for anyone making written or video tutorials or content: You should provide anti-cases as well. When making a political speech for example the speaker should also touch on the opponent and “how bad they are!“. Ex: end Nameofwhatever; is better! Yes, but HOW is it better, show a large example of 20+ or so curly ends in c and show what it would look like in ada. People and programmers largely are average and half of them are below average, you must do their thinking for them. Many in Ada expect people to do what is right or more correct or more maintainable, if people did that on their own there would be utopia. Utopia is in fact impossible.

I guess the above section is just another way of saying what Kazakov did. “people enjoy it[garbage]!“


5:
Adacore. I disagree with Irvise. You are a company. Ada is a large part of your earnings(I am assuming that, maybe not?). Almost every language is sponsored by companies/corporates or is then pushed internally for adoption. See: Mozilla/google and r*st. Mozilla pushes rust, google pushes rust. Adacore alone using Ada is not going to change anyone’s mind. Google/Mozilla just saying that they use rust is going to change many minds. Both of those companies have many employees, just google alone having a small section of programmers using rust could immediately add 100s of programmers to it. You are not mozilla, you are not google.

In my opinion there is no future for Adacore amongst rust. Bigger companies(google) will most likely eat your lunch. But I am no risk analyst.

Now someone might say that NVIDIA uses Ada/SPARK in their driver safety thing? But who actually gives a damn? The only people I ever saw posting that were Ada programmers looking for any and ANY source of ‘hey we are alive!’. No one else cared. I thought it was cool, but someone who doesn’t use Ada/SPARK is just going to look at that and go, “Huh. Whatever.“. Now if NVIDIA came out and said that they were moving much of their code to Ada/SPARK and it is what they are going to be heavily using in the future, now some people are going to learn just while in their job search. More would probably go to it because if it had that level of adoption by NVIDIA then they’ll think it’s good enough for me! But what would really drive the adoption would be a large corporation saying that Ada/SPARK is responsible for *Financial* savings due to decreased maintenance costs. Now every shareholder just drooled.

It doesn’t have to be Adacore’s responsibility to market Ada. And it shouldn’t be either. But that is another case of what ‘ought to be’ instead of what is. You will probably have to spend money if you want to make money. Largely in part Adacore is already doing fine with this. With resources like learn.adacore being very nice. But they should go farther than just that. Fast paced video tutorial too. But it better be someone with a good microphone and good speaking voice, otherwise it will revolt. In-person events for languages like Ada with a small community aren’t good for marketing. In-person events are for communities that already exist and a small part wants to get together to keep the fire alive or whatever. Though, it’s bad for marketing Ada in my opinion.


6:
Lack of fun and/or cleverness. Most of this opinion comes from an old website that I was reading. Ada - AdaPower.com - The Home of Ada That is probably over 20+ years old at this point. The language doesn’t really let programmers do clever things. Many people like dirty and quick. I await the nightmare that is their ‘quick’ codebase. But the demographic of people that value dirty and quick are not the same people who would value Ada or planning or maintenance until it either bites them so hard they have to reconsider or they just don’t ever have to deal with the fallout.

Lack of fun/cleverness is in no fault of Ada’s engineering in my opinion.


7: Peer pressure.
Self-explanatory. No one likes being different. Some don’t have a choice. But when they can choose, they will choose to conform.


8: Slander
You don’t see it that often but I have seen things where someone will make a claim that is undeniably false. “designed by big government!“ “too old!“ “it sucks!“(in which ways?) etc…


9: Industry conditions
This is a large one. Most programmers don’t get to choose their language of choice unless they are on a small team, a freelancer, or the manager who is responsible for deciding what language to use. Of course that goes for every language everywhere else, but every other roadblock mentioned above will grate on the manager, will make the freelancer want to choose something that advertises itself as fast and simple, and will make the small-teamers want to do what everyone is familiar with anyways instead of most of them relearning their programming paradigms.

All of that already doesn’t look that good right? But that wasn’t even assuming the general employment duration for employees. Combine what is the ‘average’ for most computer programmers/webdevs/whateverthefk. And I bet this average won’t be above 5 years at one company. Much less 5 years on the same projects. None of these programmers will have to deal with the fallout of a badly maintained codebase. If they do they won’t be the ones that wrote it and still won’t give a damn about what they are doing, because realistically why should they care? They shouldn’t. And most likely they will not have to.

I myself am a newbie ‘enthusiast’, but I keep finding myself focusing on what ought to be instead of what is. Reality sucks, and no one cares about writing something that is good. I myself have shot myself in the foot purposefully to learn Ada because I can see it benefiting me in the long run, but I am currently limping. It hurts. But I’ll go on with that anyways. Most won’t even want to shoot themselves in the foot if it is a long run benefit, and they honestly shouldn’t.


So what to do to fix these things, or do they even need fixing? In my opinion larger adoption is NOT a good goal. In fact large adoption is HELL. You don’t want to go to hell.

A simple way to make the point about large adoption being hell would be linux. Let’s say everyone uses linux. msft collapses. Yay. Now linux has more viruses. The amount of people that contribute to linux climbs a few percent, but now bandwith costs for people having to host open source websites and update servers has now increased 1000x because most people are useless to anything.

Adoption for Ada should only aim at small niches. I don’t care if anyone believes if it should be ‘widelyused’ AND HERE’S xyz WHY. It should be, but it won’t be.

I don’t think that any amount of alire updates or crate functionality would be any good for something that’s not webdev/startupsh*t material. I am extreme in my opinions. There are some who would benefit from this, yes. But it won’t ‘save’ Ada.

What could save Ada? What is the point of a writeup this damn long if I can’t even have concepts of a solution? Proof of concept. Proof of concept is the only thing left. The engineering is there, some basic crate (personally hate it) stuff for alire is there, the language is solid, the community is skilled (not me), and the learning materials are there too. Ada/SPARK struggles with several things listed in the points above, through no engineering fault of its own. It will appeal to the people who are right for it. No one else will care, and that is fine. But that will only happen if there are cool things to point at. Something that people can see. Flashy and looks cool.

Once the attention is there then you can make them take a closer look. That is how I discovered Ada. I saw something cool that was in rust, not in Ada. I was unhappy with rust. But it grabbed my attention. I then went looking for better. I then found Ada. Now I am trying to do the cool thing that I saw in Ada. If that cool thing was in Ada originally I would have stayed and had it to begin with. This is the way. Not utilities where no one looks at the source, no xzy, no random events, just cool stuff. Everything else will come once there are more programmers that naturally come into it. The existing community of Ada cannot lift the world or do everything on its own.

1: The longer syntax is a boon in my opinion. No ‘fixing’ needed.

2: Malicious arguments can’t be defeated. Nothing to do here.

3: Visually old websites are fine. It drives away eyejudging programmers. Those who judge by ‘feel’ instead of by merit. You really don’t want those kinds anywhere.

4: Youtube tutorials. This one is easy. Keep the actual tutorials to the learn.adacore, and the Ada books.

Youtube videos should ONLY be either a fast paced overview of Ada benefits, and a proof of concept. “Let’s make a fluid simulation in Ada!“(along the way show comparisons to other languages in passing etc…) “Programming basic enemy fps AI in Ada!“ (many new programmers will watch tutorials like that as they try to make their one-of-a-kind-vr-rpg-jrpg-mmo-mmp-totally-will-not-fail-at-making-overly-complex-project, but that is where many get their footing, everything starts with starry eyes and hope, then delusion, but Ada needs the starry eyes first)

5: Adacore, as said above. Nothing more to add in this section.

6: Lack of fun or cleverness is due to the language being more solid and not letting you shoot yourself in the foot in some ways. Changing that would be changing the foundations of Ada. No ‘fixing’ needed.

7: Peer pressure. Can’t fix that.

8: Can’t win internet flamewars/slander. No one can.

9: Industry conditions. It always sucked, but worse since every posturing social butterfly decided that CS was a good career to make a quick buck. Continue hating people who do more socializing than programming, no fix that the Ada community can do to fix that.

Why is Ada not popular? What are we missing? I think this is exhaustive. I don’t expect anyone to read this, but if there’s anyone who doesn’t have any knowledge on the situation I hope this provides you with a decent overview.

These are most of the thoughts I have come across and have had about why Ada is not popular.

If you have anything to correct me on or anything to add, your response is welcome. I would like to discuss further if anything more could be done. If anyone wants to work together on some youtube ‘cool stuff’ that I listed above that would be great. Together, not alone.

7 Likes

There are many programming languages, and very few of them enjoy true popularity. The others are stuck in niches. Sometimes a languages suddenly gets some attention among software developers because some popular application is written in it, or because it supports a programming paradigm which became popular and after some time it returns into near-to-obscurity. The fact that Ada is not popular is unfortunate but there are many, many languages sharing this fate, and it does not mean that something went terribly wrong.

Surely there are some factors working against Ada: To many its wordy, Pascal-like syntax just doesn’t feel cool. Many people are OK with writing an application that just sort-of works and fixing the bugs (or rewriting the whole crap) later. Ada appeals to the opposite mindset. That its implementations lack automatic memory management means it will probably not be able to compete in areas dominated by languages like Java and C#.

That said, I think there are areas where Ada can show its strengths. That it is possible to prove the correctness of a program instead of writing tests for a lot of cases, hoping that you covered all important cases is something I would call a cool feature. But it is hard to do in practice, so formal verification may be restricted to areas where correctness is extremely important, like when human lives depend on it.

I think there are two things Ada programmers can do: Writing Ada versions of popular applications or libraries to demonstrate that it’s no less useful than other languages, or trying to write some ‘killer application’. The first is arguably easier to do. Choosing between the first and the second is up to each individual programmer.

3 Likes

If i dare put my two cents in, given i have no history with Ada, but as an outsider and a connoisseur of useful languages, Ada comes off the wrong way.

  1. Ada is known for it’s verbosity, seemingly unnecessarily so. However i’m discovering from looking around that Ada has unique shortcuts that allow things that are verbose in other languages.
  2. Ada is advertised more or less as “for the DOD and aviation industry and nuclear reactors.” This is image can only change by practical usage. Rust is also a “high safety language” and it’s doing much better (though probably not for much longer for reasons not necessarily the language’s fault).
  3. Performance: I myself am already working on fixing this. The stuff from point 2 invariably leads to loss of performance. You can disable these runtime checks, but you can also selectively re-enable them where needed. I think Ada has the potential to genuinely have C speeds when safety is used responsibly and enough people have enough compiler flags ticked correctly, but how many people here actually know what flags to throw at it and why?
  4. The whole reason i came here: Ada’s a pain in the rear to get into proper. I know how we feel about chatgpt, but even chatgpt had an opinion on this. Without prompting, chatGPT went out of it’s way to tell me that it’s a common opinion that it’s hard to get into. This is a learning resource problem, not a problem of the language.

Ada has strengths, and i think the last thing anyone should do is take away what makes Ada uniquely strong, because then you’ve made it irrelevant.

  1. I use alire because it’s the easiest way to get gnat, gprtools, etc on my linux distro. The whole idea behind alire with the cargo system actually creates a risk in Ada code that runs completely contrary to what I even want to use Ada for: longevity. The more external libraries you pull in, especially through a package manager, the easier it is to keep up to date with security fixes, but this also means that breaking changes to your code can be introduced automatically. Supposedly code from the 80s still compiles on modern gnat, and this is a strength Ada should lean into.
  2. Language changes can be a problem. C++ is creating enemies by “becoming every other language” and at immense cost to performance, and some of the implementation of the new features is ugly (someone in my post pointed to std::variant as an example). Ada doesn’t need to implement the syntax of other languages “to compete” like C++ is trying to do. Do this, and people will ask why they should use Ada if it’s the same syntax as C++, C#, etc. (I expect a push for this to come from AdaCore before the community. As much as i like variadics for their convenience, it’s “coming soon” and this erases the type safety.)
  3. Don’t let Ada get hijacked by AdaCore. It’s clear AdaCore has a business model around selling support. This means Ada’s learning resources are exactly where they want them (they can sell workshops and such) but AdaCore also seems to be less interested in the uniqueness and more on addressing complaints. The change to gnat releases came with an interesting post which should be critically analyzed: they seem to be implying they want to compete with existing languages which means their goals are numbers in the language, not leaving the language as is. Given they’re the maintainers of gnat, and gnat is the only viable compiler in the modern standard, this means they effectively do control the language and this could be a problem (i actually have no idea how to address this realistically). That’s not to say that they’re malicious or necessarily evil (quite the opposite, i’ve found them to be well intentioned and acting in good faith), but that doesn’t mean they can’t cause a lot of irreparable damage.

I get the temptation. Realistically, there are things we can do right now:

  1. Address the elephant in the room: alire’s throwing tabs in peoples’ faces is annoying and not necessary. If you want, i can post the unfinished script i’m using to create a project that immedately abandons these annoying things and changes some other behavior. I used chatgpt to create it, so i don’t even know if it’s the actual best approach, but my goals with it could inspire people to work around alire so alire’s a useful tool instead of a threat.

  2. Someone with experience in the language and an insane amount of free time could use the ARM as a base, cut out the crap (the missile always knows where it is meme) and replace it with some plain english. AdaCore tutorials are well written, but by using ARM as a base and moving things around proper, you can ensure nothing actually gets left out. Of course, make it a community project, discuss changes and opinions properly. Community guides are why other languages are learned so quickly and so frequently. You can sit down and learn C (without standard library) in a single day, and fully understand the language as a first-time learner. Mere few hours if you already know something like java. Ada probably won’t hit this goal, but other languages are using a proven approach of taking your hello world, breaking it down, and covering enough that people can go look at the table of contents and see what’s coming and know when they genuinely understand everything in hello world. People can’t handle learning a bunch of stuff they can’t put to practice immediately.

  3. Make stuff in the language, be it libraries for common things like CGI, UTF8, etc. Might not be standard, but make libraries that people can depend on, that they know aren’t going to become feature obsessed that are going to break in a year or less because they’re trying to chase crazy standards. I like the sound of Qt because it works with my desktop environment, but being forced to use C++ and the fact that it’s constantly chasing a new goalpost means i can’t rely on it. Conversely, tk/tcl looks really appealing for gui if i could get around the fact that simple things like copy/paste are not automatically working for text boxes. And you can just directly import the bindings no problem and the binaries are BSD licensed so you can distribute it. Visual Studio is easily popular because i can design my UI and double click and it automatically builds me a default handler for a UI event. Verbose syntax wasn’t a problem for visual basic (and it’s absolutely verbose) because convenience for boiler-plate was there.

  4. Supposedly Ada’s good for embedded development? Ok, the only thing i’ve seen on this was that there’s some community build of the runtime for arduino (i think, i’m not even sure about this) and a book from adacore. I’ve made my own toy OS in x86 assembly, and skimming the adacore book on this it looks like they offload the actual details into the RM. Something i haven’t seen outside of C (as a language, as i’ve not seen it for C++, java or anything) is the bare minimum variables and registers that must be set up in C or assembly to code your own OS or to port the tools to another platform. This is basically a blindspot not just in Ada, but every language. If a cross compiler exists for the CPU, that doesn’t mean it covers the whole platform. Should one really need to read all of the ARM to get something running for a custom stm32 board where the only officially supported language by the vendor is C? If i know the LED for a blinky app is at register address 0xXYZ, shouldn’t i just be able to xor that register to get blinky running and maybe set some variable with the avialable memory and such? I imagine you could kinda make this sort of thing universal.

The tl;dr suggestions: we need practical code and documents to get things done conveniently, because that’s what other languages have. The language itself doesn’t really need to change for all of this, or I wouldn’t be here.

My reading of Jens Gustedt’s Modern C has convinced me that this is not true for any of the recent C standards.

2 Likes

I’m no expert either but i find ADA extremely useful in embedded. I come from a C background and it is a joy to be able to map everything over registers instead of having to do pointers and shifting. Makes things so much clearer. And mapping of protocols is so good. You describe the protocol packages in a record and overlay them on the incoming data. Everything is clear and understandable in plain english. Just my 2 c…

:edited to add:
I have tried to do the advent of code with ada also but because the challenges are mostly string handling I find it very annoying to do. Mostly a skill issue but Python would be a much more sane language to solve such problems.

3 Likes

30 posts were split to a new topic: UTF-8, Identifiers and dealing with Strings in Ada

Skimming over it he’s leaning hard into the standard library and he’s taking the long way around. But looking at the changes in 23 alone i’m starting to see my fears about C were coming true. The supposed “make C++ change into a new modern language, but keep C simple with minimal changes to preserve simplicity and keep it rubust for speed critical programs” or whatever they said they were doing has gone away. C23 has a laundary list of changes, 17 and earlier, not so much.

Anything in particular you find difficult?