3 ms·
I don't have extensive experience but learned it a few years ago and believe I can answer some your questions. This is subjective, others might disagree or perh
by jonathanstrange 6y ago
I don't have extensive experience but learned it a few years ago and believe I can answer some your questions. This is subjective, others might disagree or perhaps add their own experiences.
> Why did Ada not manage to get a significant foothold outside of some small domains?
Probably mostly due to licensing issues. Ada has a runtime that you basically have to use and the most complete AdaCore version forces you to release executables under GPL. The FSF version is less complete (many libraries are missing) and allows you to use the much more permissive mGPL version. However, it always lags behind the version from AdaCore and many developers in the past were scared away by the licensing issues.
Other reasons often mentioned:
- Ada has a certain (perceived) background in the US military and aviation industry, which some people don't like.
- Ada is a very complete language and not easy to learn. The syntax is special, in that it specifies each construct on its own and re-uses keywords.
- Overuse of pragmas and "glued on" Unicode string handling
> What's great, what's not so great about it?
Great: It's an extremely fast and safe general systems language suitable for all kinds of programs. It allows high level and extremely low level programming and is suitable for embedded programming.
Not so great: The type constraints for generics are not as expressive as they could be. Aliasing rules ("pointers") are stricter than they would need to be. There are a few oddities with anonymous vs. named types to watch out for.
> How "modern" does the language feel, including the tooling, documentation, etc? Specifically Spark 2014.
Tooling and documentation is excellent, thanks to AdaCore and several good books, as well as the official Ada reference. The language does not "feel" modern, because many libraries are old and appear to be outdated. In reality, old Ada code will just compile and run so there is no need to constantly update and maintain libraries.
> Spark2014
Can't answer that question.
> Are there any close alternatives that are production ready?
The GNAT Ada ecosystem mostly maintained by AdaCore is as production ready as a language could be. AdaCore expect you to buy a commercial license if you're doing safety critical work. As for other compilers, that depends on the vendor and most of them do not support the latest Ada standard.
- Lucretia9 6y ago>Probably mostly due to licensing issues. Yup. See https://www.reddit.com/r/ada/comments/ijwqfl/last_call_on_the_gnat_community_survey/ https://www.reddit.com/r/ada/comments/ijwqfl/last_call_on_th... > Ada has a runtime that you basically have to use and the most complete AdaCore version forces you to release executables under GPL. See above. > The FSF version is less complete (many libraries are missing) Incorrect, AdaCore just packages their libs with their version of the compiler, with FSF, you have to build them yourself, which is a pain. But they are working on that. > and allows you to use the much more permissive mGPL version. MGPL hasn't been a thing for at least 10 years now. The FSF version if GPLv3 with linking exception. > However, it always lags behind the version from AdaCore and many developers in the past were scared away by the licensing issues. And the cost of licencing from AdaCore. Not small company / startup friendly, but apparently that has changed, but you still have to email them for prices! > - Ada is a very complete language and not easy to learn. The syntax is special, in that it specifies each construct on its own and re-uses keywords. This makes no sense, all languages are "complete" to some degree. The syntax is not special, it's like any other, it's defined by a grammar, as are all languages. A lot of languages re-use keywords.
- zeroc8 6y agoI talked to an Ada Core sales guy at Embedded World Nuernberg. He mentioned they have a cheap license now for small companies. 5000 Euros.
- frabert 6y agoThat could be cheap or expensive. Is it one-off? Per seat? Per team? Monthly? Yearly?
- Lucretia9 6y agoAIUI, it used to be £5k per seat here.
- Lucretia9 6y agoWhen was that? For a company I know who tried to use Ada a while back, that 5K was too expensive even then.
- zeroc8 6y agoThree or four years ago. He talked about a developer license for small companies.
- jonathanstrange 6y agoThanks for the "corrections". Some of them are fine (I didn't know about the FSF license change) but with some I really don't agree. > Incorrect, AdaCore just packages their libs with their version of the compiler, with FSF, you have to build them yourself, which is a pain. But they are working on that. Various fairly essential libraries maintained by AdaCore are under GPL, so you could not use them for non-GPL software that is distributed. That's what I meant by "incomplete", because the FSF version was traditionally used as the free option for developing distributed, proprietary software. AdaCore has always blocked that by making essential libraries GPL instead of, say, LGPL. If you used AdaCore it didn't matter, since either you were forced to make your program GPL anyway, or you paid for a commercial license. > MGPL hasn't been a thing for at least 10 years now. The FSF version if GPLv3 with linking exception. The question asked was why Ada was not more successful / popular. Your correction just adds more evidence to the licensing confusion. The problem is you can't even be certain it stays a certain way. > The syntax is not special, it's like any other, it's defined by a grammar, as are all languages. No, Ada has a rather special grammar in comparison to most other languages, because it specifies every construct on its own, and that is one of the reasons why it is harder to learn than other languages. Grammars for other languages are much more compact and use more shared non-literals. > all languages are "complete" to some degree That's not the point. Ada provides much more functionality than most other languages, for example memory alignment for embedded programming and OOP with tagged types. It's as expressive as C++ for systems programming. That's what makes it way more complex than lnaguages like, say, Scheme R5RS, C, or Go. It's easier to learn than C++ but it's much harder to learn than a related language like Pascal or Modula, for instance. > A lot of languages re-use keywords Whataboutism? Languages that re-use keywords are generally a bit harder to learn than those with only few constructs and no keyword reuse. You don't think so? I've never met any Ada programmer before who thought Ada does not have a relatively long and steep learning curve. You'd be the first I've met.