Hi, I'm Tomek.

I'm a software engineer and a co-founder at 98elements. You can find me on Twitter as @_tomekw, or @tomekw on Github. I write about programming.

Is Ada a failed language?

15 June 2018, 2 min read, tags: Programming, Ada, Rust, Scala, Clojure

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.