3 ms·
> What are the downsides of Ada? Ada 2012 really caught my eye a while back. Looking at it from a C++ standpoint: Pros: - Already has concepts (aka generics)
by DoingIsLearning 9y ago
> What are the downsides of Ada?
Ada 2012 really caught my eye a while back. Looking at it from a C++ standpoint:
Pros:
- Already has concepts (aka generics)
- Already has contracts
- Already has modules (aka packages)
- Has really well thought out multi-threading (aka tasking)
- The SPARK subset of Ada, allows for contract based formal verification (i.e. provable correctness)
- The Ravenscar Profile, restricts the compiler to only allow for code which is safe to use in a free-standing system (for 'bare-metal' targets)
- You can still write wrapper bindings to use C or C++ libraries
Cons:
- It is most spectacularly not a terse language, I appreciate it was an intentional design decision for safety critical contexts, but it's quite mentally taxing to read any sizeable block of code
- The ALGOL/Pascal like syntax is very off-putting for a lot of people have had to work with those in the past.
- The GNAT compiler is available in 3 flavours 1) GNAT pro which you pay a lot of money for, is the most up to date compiler, and you can use commercially 2) GNAT GPL which is similar to pro but if you use commercially it must be under GPLv3 terms. 3) FSF GNAT which is analog to g++ so you can use commercially but compiler updates and fixes are rolled in at a much slower rate and lagging behind the other two options. Considering the 3 options available for a lot of businesses they would have to be able to fork the money for GNAT pro in order to use Ada commercially
- Smaller community (and possibly less active online) means that it's harder to reach out for community support or start a collaborative project
- The language and toolchain have, by design, very high constraints, regarding correctness. This means that you are not easily allowed to relax or shortcut aspects of your software. This is obviously a good thing but the downside of this is that initial prototyping/feasibility work may take much longer than in other languages.
- The perpetuation of the myth that it is only suitable for high cost and high-criticality applications (Avionics, ATC, Aerospace, Railway systems, etc.) means that there are less market opportunities for Ada developers, which leads to less people being driven to learn Ada which means the barrier to entry for using Ada in other suitable markets (distributed systems, medical applications, automotive) is much greater.
- Raphael_Amiard 9y agoThat's a very interesting answer, thanks for taking the time to write it. For the most part, as a professional Ada programmer, I agree with you on every point of your analysis. I personally like algol like syntax, but would like Ada to be less verbose at times. I just want to say that there is now a fourth option, gnat pro developer, that is more reasonably priced than gnat pro, and more targeted towards regular companies' needs rt. Safety critical: https://www.adacore.com/gnatpro/developer https://www.adacore.com/gnatpro/developer
- DoingIsLearning 9y agoThat seems like the right direction to reduce the barrier to entry for smaller development teams and consultants. Thanks for this update.
- grok2 9y agoBut you still need to fill out a form to get pricing!
- DoingIsLearning 9y agoArguable we could say the same from IAR or WindRiver? I would love it if all these companies were more price transparent but ultimately they are not selling in high volumes, like the likes of MSVC, so I would hazard guess they probably depend a lot more on the margins from each individual sale.