[cpp-threads] meta-question about Ada

jimmaureenrogers at att.net jimmaureenrogers at att.net
Tue Oct 18 14:08:52 BST 2005


 -------------- Original message ----------------------
From: Andrei Alexandrescu <andrei at metalanguage.com>
> Ada has a peculiar position in that it is a language (in my perception) 
> not backed up heavily by industry nor by academia. I can't explain that 
> to myself.
> 
> Many languages embedding good ideas have caught on in at least one of { 
> industry, academy }.
> 
> However, my understanding is that Ada currently hasn't caught on in the 
> industry. Although Ada has freely-available implementations, there are 
> few Ada programmers, zealots, aficionados, grass-rooters etc. Outside of 
> the military, knowing Ada is not a marketable skill.

That is a common perception with some basis of truth.

Ada has found its niche in safety-critical and mission-critical
applications. Ada is still used more in military applications around
the world than in any other application domaine. It has found a home
in commercial applications with requirements very similar to military
systems. Examples include high speed train controls, avionics, 
air traffic control systems, and medical devices. Ada was used in 
the first global positioning systems, but that is no surprise since 
they were first available to the military.

While the number of Ada jobs is relatively small, so is the number
of Ada programmers. The result is that an Ada programmer can make a
good living through the forces of supply and demand.

> 
> Also, Ada hasn't caught on in the academia. Note that this is very 
> important. If Ada was interesting in any way, academists would be on it 
> like white on rice, as they've been on various languages of little 
> industrial appeal, such as Scheme, ML, Haskell, and the such. But a 
> Google Scholar search on "Ada" returns practically no relevant results, 
> and a search on "Ada tasks" returns papers from 1988, 1985, and 1983 as 
> its top three hits. So there is not *one* nut in some research lab or 
> university who loves Ada and works on it. (And believe me, in research 
> labs and universities you can find nuts working on the weirdest things. 
> The only precondition is that that things must somehow appear 
> interesting, at least to the nut.)
> 

I am not an authoritative source for why people do not like Ada.
I am one of those in the opposite camp. Many people in academia seem to
look at the military background of Ada and reject the language on that
basis. The assumption often seems to be that nothing useful can come
from the military, so why bother with Ada.

> So whenever I hear some good things about Ada, I can't go past this 
> mental block: I'd need to put in serious effort to understand Ada's 
> tasking mechanisms. However, people both in the industry and academia 
> did not care for those, or Ada at large. Why?
> 

The early history of Ada, circa 1983, did little to endear industry.
The U.S. Department of Defense created a mandate to use Ada. Ada compilers
were new and buggy. At the same time, most compiler vendors saw a 
captive audience and charged outrageous fees for their products.
No commercial company is going to volutarily choose a language whose
compilers cost $30,000.00 per seat. That is what early Ada compilers cost.

By 1995 a free Ada compiler was available as part of the GNU tool chain.
By then the reputation of the language was set in stone.

> While I am, very honestly, ashamed to admit giving in to an argument "ad 
> populum" (which is a nice name for "prejudice"), I have to say: because 
> of the reasons above, I am seriously biased towards thinking that Ada is 
> not that interesting afterall.

The language is still alive. Ada compiler vendors have actually seen a real
(adjusted for inflation) growth of their businesses over the past 10 years.
The language is undergoing its own re-standardization and the new standard
is expected to get through the ISO processes late this year or early next
year. Among the additions to Ada this time around is a container library
similar to STL. There have been no significant changes to the Ada
concurrency model this time. The 1995 standard produced many improvements
to the Ada concurrency model, including protected objects.

Several years ago I presented a small talk to a group of professors meeting
at the U.S. Air Force Academy. All those professors taught Ada. I was the
lead developer for a small company producing robotic systems using Ada.
I was able to report some of the metrics from our development processes.
We had 3 programmers, each with at least 10 years Ada experience. We were
developing a robotic control system for the U.S. Army. We were also 
charged with being the first team in the world to implement the U.S.
Department of Defense Joint Architecture for Unmanned Ground Systems.
The three of us, using a MIL STD 498 development process, went from
requirements definition to final test, producing over 100,000 lines of
highly concurrent Ada code in 20 months.

Our system was distributed across two computers communicating through
a high frequency RF link. Counting the tasks in both computers, the
design used 70 tasks. We even had to design the communications protocol.
Our baud rate was only 24000. We could not afford the overhead of full
TCP/IP packets.

The system initially operated a bulldozer. The same code could be
used to operate virtually any ground vehicle through the adjustment
of a set of configuration files that described the vehicle to the
software. The system read the configuration files at program start-up
and then dynamically allocated all the tasks and protected objects
needed for that vehicle configuration.

We found the Ada approach to concurrency to be highly composable.
We also spent very little time struggling with deadlocks and race
conditions.


--
Jim Rogers
Colorado Springs, Colorado
U.S.A.



More information about the cpp-threads mailing list