If Ada had curlies and ran on the web, people would flock to it. But it has Begin/End which looks antiquated to people. /slightly tongue-in-cheek
I had a look at few of these language lately (ADA,FORTRAN) and they don't look as bad as they sound, I mean they are not worse than PL/SQL syntactically. Ada seems to have first class support for concurrency which is important for web apps. What are the downside ADA? looks like GCC supports it. Obviously the ecosystem isn't going to match Java's. But i wonder how does it fair against Go or Rust.
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.