This is more of a general question
With the availability of free languages such as
Rust, Clojure, F#, Go, Typescript, Idris, Raku
You have a solid option that cover ever possible paradigm and style of programming you may fathom
Why would any one invest time or effort in a commercial language such as Ada, Eiffel or even Xojo and LispWorks, that require you to pay for Automated test support and what is considered by most standards now basic libraries
And not only that, the communities are usually tiny and support is probably very limited to the commercial support they provide, and when it comes to languages, languages with big communities, provide infinitely better support than commercial support for proprietary languages or implementations
The cost of AdaCore is not just the compiler license, its the total ecosystem cost
Ada is not a a commercial language. It's free, and the standard is free as well.
Adacore's support is excellent - you're talking directly to gcc/gdb devs. There is no intermediate layer. I've hit a number of nasty technical issues ( compiler bugs mostly), usually fixed within 48h. They then provide you with what they call a 'wavefront' which is essentially a patched version of the compiler which is supported as well.
It is true that the ada community is small, but there is no real other contender in that space ( embedded, formal verification, qualified toolchains, etc).
Edit: nvidia uses spark/ada (from adacore), it's not clear to me what other options they might have given what they want to do (video presentation in the link)
And to be clear they also support C on GCC, so our gcc bugs go there too. Also very very happy with AdaCore's tech support. Response within the day, help and patience in reproducing problems, and almost always with a quick workaround. Often citing the reference manual. You also often have an expert jumping in to help, or to answer a question, or to implement some optimization :-)
I still have fond memories of (the sadly late) Robert Dewar answering a ticket of mine 'this is so slow, whyyyyyyy?' with a 'we have implemented a change that should improve the performance of your code' so fast I hadn't had the time to go talk to our local Ada guy for an alternative idea.
They also have world experts in formal methods like Yannick Moy and Claire Dross who will help you prove you jump-start a Spark project and are pushing the state of the art every year (proof of floating point code, pointer/ownership...).
Money well spent.
And to be clear: not from AdaCore, just a customer.
Rust is not yet ready for formal verification, along with some ready libraries for that purpose, unlike Ada/SPARK. Hopefully, it will be there, just not yet. It still requires tremendous multi-year effort to finish that.
In addition to lacking formal verification tools, I'm worried about compiler certification with a language that changes as fast as rust, and c++, and even c now do. Yes you cannstick to a version, but the world and bug fixes, and libraries will pass you by. Which brings up another problem with rust for safety critical. The stdlib is so very thin, that doing almost anything requies a dependency tree of a dozen or more crates by different authors. You need to certify all those as well. Its a nightmare of an ecosystem from the safety cert perspective.
Many cases when you want cert will probably be nostd anyway so it is definitely worth pursuing given all the other advantages the language has. I'm just being grumpy because I love the language but I am a fan of batteries included languages. Or at least a thick stdlib and a boost-like thing. That is partly influenced by my primary dev environment being airgapped, and my secondary one being behind nexus/solarcube.
Ada isn't a commercial language, though AdaCore's implementation is. Just like Green Hills compiler implementations cost money, sometimes the commercial implementations offer features/guarantees/support the open source implementations do not.
By the way, the test suite, ACATS is part of the standard and is freely available. Not enough for an industrial strength compiler, but amazingly detailed already.
> This is more of a general question With the availability of free languages such as Rust, Clojure, F#, Go, Typescript, Idris, Raku You have a solid option that cover ever possible paradigm and style of programming you may fathom
> Why would any one invest time or effort in a commercial language such as Ada,
(1) Ada isn’t a commercial language
(2) What other free language covers the style and paradigm Ada addresses? Rust maybe (I haven't really done a detailed analysis) now subsumes Ada, but has a different focus and a lot of cognitive overhead related to that focus. Haskell or another static functional language with a robust type system might provide an alternative approach to some similar benefits, but not the same style and paradigm.
It probably doesn't make a lot of sense for a greenfield project, but for established projects it might make sense to stay with the current technology stack. At my last job we had a team of 10+ domain experts that were expert level at a proprietary language. Replacing years of work to save $10k per developer every year would have been a bad decision.
Perhaps companies and individual with an interest in a permissively licensed Ada ecosystem should step up and create it? Build it on top of LLVM and call it, say, alang.
>> Perhaps companies and individual with an interest in a permissively licensed Ada ecosystem should step up and create it? Build it on top of LLVM and call it, say, alang.
If it is an Ada implementation, why wouldn't they call it Ada rather than alang?
> If it is an Ada implementation, why wouldn't they call it Ada rather than alang?
In the same way that "the" C/C++ LLVM frontend is called clang and the Fortran frontend is called flang. So a hypothetical Ada frontend could be called alang.
Interestingly there was, in the first days of clang, an Ada 'compiler', through dragonegg. The original author meant to write an Ada compiler on top of llvm and translated (iirc) gcc's gimple to llvm, with some success.
The fun part is that dragonegg became an important part of clang/llvm for years (before it was phased out) to compile fortran (before flang) and to compare clang results and gcc's. I seem to remember other interesting uses but my memory is failing me.
Duncan Sands (the original author I think?) is an outstanding engineer and very fun person to talk to.
Well... There's GNATLLVM [0] a project to have the GNAT frontend output LLVM. From... AdaCore. Someone has already beat me to a first wasm example [1] and there's also a first wasm-based Android one [2]...
Why would any one invest time or effort in a commercial language such as Ada, Eiffel or even Xojo and LispWorks, that require you to pay for Automated test support and what is considered by most standards now basic libraries
And not only that, the communities are usually tiny and support is probably very limited to the commercial support they provide, and when it comes to languages, languages with big communities, provide infinitely better support than commercial support for proprietary languages or implementations
The cost of AdaCore is not just the compiler license, its the total ecosystem cost