> At the moment, my interest is only a theoretic one. > AFAIK, ADA was designed as a general purpose language > that should also cover numerical analysis. > Why is it not used for that purpose? > Is it just because it has not (yet) reached the critical mass of programmers > or are there some "principal flaws" in the language > that make ADA unusable for numerical analysis?
I don't think there are any "principal flaws". Neither do I think there are any major attractions over the main alternative languages. There are certainly likely to be major disadvantages, such as the need to port major libraries to ADA.
ADA was sponsored by the US DoD for use in embedded systems. In part because they found that there suppliers were using [at least] 400 different programming languages. Also the main alternatives such as C, Fortran, Algol, Pascal were known to have indesirable features.
It has been said that: "Before ADA the DoD had to support 400 languages, after Ada they had to support 401 languages".
For a variety of reasons the ADA language did not receive significant take-up among these not obliged by military contracts to use it. The demands of the language meant that good compilers were fairly slow to arrive. [The early compilers weren't cheap. Not too surprising as their main market was military contractors who were both obliged to use ADA and largely able to pass the cost on to the DoD. And they were difficult to write!]
AFAIR the issues that the ADA language designers concentrated on did not include major number crunching. Certainly the early ADA compiler writers had many complex implementation issues on their minds; which must have diverted any effort they personally felt inclined to address to number crunching. My main memories of the time was that effort concentrated on type-checking, template-handling, and inter-module compatability issues. [*]
IMHO ADA looked a fairly dated language quite quickly. However this may simply reflect the advances the language community made during the ADA development period. Much of it triggered and funded by the ADA development programme itself.
[*] One of the requirements for the ADA language was that a lot of errors had to be identified "at compile time".
IMHO this requirement should have been for the errors to be identified "before run time". Arguably many inter-module compatability issues are properly handled at binding/link-edit time [especially true when you consider where configuration management fits in].
As it was, a lot of `compiler' effort went into inter-module checking, and the much hyped ADA support environment developments were effectively crippled. The compilers just needed to know so much that a good `separation of concerns' between the compiler, the support environment, and other tools was not really possible.