Is Ada a failed language?
Statically typed languages always had a special place in my heart… With Ada, in particular, I had a lot of these “wow!” moments. In my opinion, the language had always preceded new emerging concepts by decades. Clojure’s Software Transactional Memory always reminded me of Protected Types. Akka, popularized with Scala, looked exactly like Tasks. Ada was advertised as a general-purpose programming language, yet, with a strict, readable syntax, a rich feature set, and a first-class support for concurrency it failed to find its niche. I could find many reasons why it happened.
The very common complaint on Ada user groups and forums is the licensing model. Most companies avoid GPL like the plague. Both the compiler and the majority of libraries are infected by it. Whether GPL is good and desired or bad and damaging for the business adoption is of course debatable.
Tooling is another downside of Ada. With the rise of languages like Rust and Go and their support for the package management (cargo) and development workflow (go fmt, go vet) Ada doesn’t seem to be modern enough. Integrating the existing open-source libraries into the new project is right now a really hard and mundane task.
Also, Ada’s strictness and correctness may be perceived as an anti-feature. When talking about general-purpose programming, businesses need fast development cycles and short delivery times. For the companies, to be successful, it’s far more important to be ahead of the competition even with an incomplete product than to let the customers wait and eventually abandon the project.
In my opinion, it will be really hard for the Ada community to address all these issues. Has the ship sailed? Licensing has to be solved on the compiler providers level. This also means their business model needs to shift and adapt. Improving the tooling support requires a tremendous effort from all members of the Ada community (and I think AdaCore’s dedication to broaden their presence on Github is a great move!). Designing and writing a cargo-like or Rubygems-like package management / hosting service is not an easy task. The biggest obstacle may be the Ada language itself — programming is a social concept and software engineers, like everyone else, are susceptible to all sorts of hype.