The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Whither Ada?

Maybe this is a dumb question -- what happened to Ada? I've heard that it was never widely adopted because it was "impractical", and for other vague reasons, but can anyone shed more light on it?
David Aldridge Send private email
Wednesday, December 29, 2004
 
 
In July 2003, Jim Smith of the Carnegie Mellon University published an interesting paper called "What about Ada?". You can download the PDF file here:

 http://www.sei.cmu.edu/publications/documents/03.reports/03tn021.html

As I read his conclusions, Ada is moribund, not because it's a bad language but because it failed to excite the sustained interest among programmers and their bosses which is required to create the infrastructure that makes a language viable.

Here are two paragraphs from Smith's summary:

"The results of this investigation point to a bleak future for Ada: no longer in the mainstream of computer science education, software engineering practice, or commercial support, Ada is little more than a niche language used primarily within the DoD community and in limited civilian market segments [...]."

"While Ada has many qualities to commend it, two factors cast doubt on its future viability: the absence of any broad commercial application and the corresponding lack of interest from academe and software tool vendors. These factors increase both the initial development and long-term supportability risks to programs using Ada, and will most likely require PMs to undertake extensive—and expensive—steps to maintain a viable Ada development environment for the life of the program."
Chris Nahr Send private email
Wednesday, December 29, 2004
 
 
Thanks Chris -- it seems like Ada just never got fashionable enough. Few projects use it because few projects use it.

It's good to know that that it's actually a good language though -- Oracle's PL/SQL is strongly based on it apparantly.
David Aldridge Send private email
Wednesday, December 29, 2004
 
 
It was a DoD project, not a commercial one.  There was never a major compiler vendor driving widespread adoption.  It's like M - only used at VA hospitals, and where I used to work, AFAIK.  (Even there it's used simply because the people who started the company had worked at a VA hospital and M was what they knew.)
Aaron F Stanton Send private email
Wednesday, December 29, 2004
 
 
Did you ever  try to program in Ada? My impression of it was they took Pascal and added some OO features, much like C->C++.

But Pascal was a language for teaching programming, not for implementing big systems. Ada couldn't compete with C.
Tom H
Wednesday, December 29, 2004
 
 
One of my dear friends chose no degree over an Ada-baised college program because she hated Ada so much.

I think the problem with Ada's acceptance is that it elicits feelings of disgust and revulsion not only by your average Joe programmer, but also your average condescending software artist, thos preventing it from even reaching lisp love-hate sorts of respect.
Flamebait Sr.
Wednesday, December 29, 2004
 
 
Why's that then?
David Aldridge Send private email
Wednesday, December 29, 2004
 
 
DOD had three different languages in use, one for the Army, Navy, and Air Force.  ADA was created by DOD to replace these three languages, and mandated by DOD for all software.  The problem was that the language definition was so large for the time (there was a real-time engine in there) that it was very difficult to create a good (reliable) compiler for it. 

It was also difficult to find programmers who knew how to use ADA efficiently.  I believe Booch got his start trying to make UML-ish ADA design languages.

Thus DOD had to keep issuing waivers to allow vendors to use C for time-critical applications.  After a while, C had stepped in to fill the niche intended for ADA.  DOD at that time stopped mandating ADA, and it died a quiet death.  C++ and JAVA now fill the 'object oriented' niche that ADA might have fulfilled with a little more luck and better compilers.
AllanL5
Wednesday, December 29, 2004
 
 
Tom, you've got that backwards. Ada was *specifically* designed for huge systems, C was not. Ada shares the begin/end syntax with Pascal but those are just superficial similarities.

Ada is similar in power and scope to C++ but much wordier (first problem), didn't build on a simple popular language such as C (second problem), and was specifically designed for safety and verifiability which is something hackers hate (third problem; also see Eiffel).

As the article points out, Ada continues to be successful in its aeronautics and weapons control niche. The language isn't the problem, nor even the lack of commercial compilers. How many commercial compilers are there for a popular language like Python? It doesn't *need* one because there's a big grassroots movement that loves Python.

There never was such a movement for Ada, and that's because programmers hate Ada, purely as an emotional gut reaction ("eek, looks like Pascal!"). Not even the Pentagon could sustain a language that virtually all programmers hate.

That's my take on it anyway...
Chris Nahr Send private email
Wednesday, December 29, 2004
 
 
Delphi looks a lot like Pascal, and some programmer's love it.  I think it is that C and C++ are more ubiquitous (Unix, Linux, and Windows are written in them after all), compilers are more readily available for them (GCC and Microsoft), and they have a lower learning curve than Ada ("What's a Generic, Ralph?  Why do I have separate Spec and Body sections?").

A language that has a freely available run-time environment (like Perl, Python, PHP, Java) already HAS a "readily available compiler", I would argue.
AllanL5
Wednesday, December 29, 2004
 
 
It should be noted that Ada lives on today, sort of...

... as VHDL.  Used extensively in the hardware design industry, no matter what the Verilog bigots say.
David Jones Send private email
Wednesday, December 29, 2004
 
 
Ah, newbies...I worked on the first Ada project on the East Coast in 1983, when PCs were just toys...My recollection was that it ran slower than heck, and didn't generate any kind of meaningful savings. Also, it was supposed to run everywhere, in every environment (where have we heard that before?), which meant that it ran nowhere.

Finally, it was DOD financed, created by the French--how uncool can you be?

It did become PL/SQL, which I now use extensively (though I don't use the packages at all, think they're a waste).

TurboPascal became Delphi, in case you were curious
Stephen Hirsch Send private email
Wednesday, December 29, 2004
 
 
My experience with it (a long time ago) was that it was a "bondage and discipline" language. It tried to be the last language to end all languages, like Pascal, and PL/1, and Algol (as we pop them off the stack). I could only compile code when I could use a university system since Ada compilers cost about as much as a car, and certification of a new compiler (you know the name Ada was a trademark, and no one could use it without permission) cost more than a house. I could buy C/C++ compilers for Apples and PCs for under $200.

The only thing that could have saved Ada would be if the iAPX432 didn't suck so bad. It was a CPU chipset designed to execute Ada.

The only language I miss from that era was Turbo Prolog. Ada? Good riddance.
Peter
Wednesday, December 29, 2004
 
 
"A language that has a freely available run-time environment (like Perl, Python, PHP, Java) already HAS a "readily available compiler", I would argue."

Yes, but who has created these environments? Except in the case of Java, it was programmers who loved the language.

That's the point I was trying to make: absence of good compilers is not a problem if people like a language enough to make one of their own. Too few people shared this sentiment for Ada. And it's not just about the compiler, but also about tools and libraries and books...

Languages need a healthy "ecosystem" to survive. When it's big enough this system becomes self-sustaining but prior to that, you need a signficant sum of money (provided by companies or governments) AND enthusiasm among programmers.

I would argue that Delphi hasn't reached this point, by the way. The language is likely to disapper once Borland goes under.

On the other hand, being too complex to be fully implemented certainly hasn't stopped C++. Most early compilers for that language were garbage, after all.
Chris Nahr Send private email
Thursday, December 30, 2004
 
 
Oh, just saw Peter's post that Ada was trademarked. Okay, that's obviously a problem if your official implementations suck and nobody can do an unofficial one...
Chris Nahr Send private email
Thursday, December 30, 2004
 
 
Very good point that I had not considered -- that programmers can build their own compilers for languages they like.

Maybe today.  When Ada was created there were no free compilers -- and the compiler generation tools have improved since then.

And yes, any Ada IDE and compiler had to go through an expensive set of compatibility tests with the DOD before it could get the Ada label.  Stopped innovation at that point.

Mind you, many Ada concepts have showed up again in Object-C, C++, and Java.
AllanL5
Thursday, December 30, 2004
 
 
As an aside, there is an Ada front end for gcc.  It's the only one I know of that is written in the language it's intended to compile - all the other front ends appear to be written in C.  (I think that even the Ada front end has some of it written in C for a minimal subset of Ada to allow bootstrapping.  I could be wrong about that, but I don't see another way to do it.)
Aaron F Stanton Send private email
Thursday, December 30, 2004
 
 
>> It did become PL/SQL, which I now use extensively (though I don't use the packages at all, think they're a waste). <<


You don't use packages, Steven? Do you not get cascading invalidations etc?

http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:7452431376537
David Aldridge Send private email
Thursday, December 30, 2004
 
 
Ada's reputation among programmers was that of being an enormous, bloated, painful-to-use pig from all aspects: language and development environment primarily.

I worked in a DOD company in the mid 80s when an application development group for Army R&D in my company was using Ada. I was in the hardware group so my/our stuff was embedded and had to be "tight" (drivers and whatnot.) I took the in-house Ada course and managed to write one tiny "Hello World" program. Declaration and program "frame" were 99% of the code.

From this experience, I thought of Ada as simply being awful to use. The programmers who used it day to day became "Ada nurds" just to cope...
Bored Bystander Send private email
Friday, December 31, 2004
 
 
Hi David,

No, cascading invalidations have never been a problem, really. I know that the textbook says to put everything in a package, but I just found the extra syntactical overhead just didn't result in easier to maintain code. In fact, the opposite.

That said, I've never worked in environments where I couldn't trust another programmer to look at the guts of my code. Maybe then, it would make sense.

Ada was a perfect example of a) trusting academics and b) putting too much effort into up-front design. It was done totally by the book, and was pretty much a complete failure.

In other words, they accurately hit the wrong target (artfully scored an "own-goal", for those guys who think football is actually played with your feet...(:=)).
Stephen Hirsch Send private email
Tuesday, January 04, 2005
 
 
I used to use Ada in a programming job five years ago. Pretty dull, generally, except that the typing system was great. I really liked the fact that you could declare acceptable variable ranges; so you could declare, for example;

  Type Day_Number is range 1..31;

So now, the =compiler= enforces that rule, rather than allowing inappropriate values or relying on a runtime. The line

  Day := 32;

would not even compile. Used right, this adds real confidence to the program. Whole classes of overflow, underflow, and invalid index problems just go away. This is a great construct, and it's well worth other languages picking up on it. It really was gorgeous.

Still, it's the only thing I really remember about the program that I miss in other languages. But hell, sometimes I get a deep yearning for Ada's restricted type system...

Does that make me wrong?
Steve Cooper Send private email
Tuesday, January 11, 2005
 
 
Yes, it makes you wrong (:=).

Seriously, I remember SmallTalk fondly, which had no compile time typing at all...counterintuitively robust.
Stephen Hirsch Send private email
Tuesday, January 11, 2005
 
 
"I know that the textbook says to put everything in a package, but I just found the extra syntactical overhead just didn't result in easier to maintain code. In fact, the opposite."

Obviously you are working with a small system.  I work on a system with over 1000 packages, with an average of maybe 15 public methods in each.  If it instead was 15000 standalone functions and procedures, it would be an absolute maintenance nightmare.
T. Norman
Tuesday, January 11, 2005
 
 
>> Obviously you are working with a small system.  I work on a system with over 1000 packages, with an average of maybe 15 public methods in each.  If it instead was 15000 standalone functions and procedures, it would be an absolute maintenance nightmare. <<

Plus you owuld lose the ability to overload, restrict your namespace, lose global variables etc.
David Aldridge Send private email
Wednesday, January 12, 2005
 
 
"Finally, it was DOD financed, created by the French--how uncool can you be?"
 Stephen Hirsch

I apologize for my bad english I'm French ... none is perfect Stephen!
The "TOTS" (Thought-On-The-Shelf)  contains a part of truth, so you are partly right, when you say Ada was created by the French...
The team ( of CII-Honeywell-Bull company), directed by Jean Ichbiah, was Bernd Krieg-Brueckner, Brian A. Wickmann, Henry F Ledgard, Jean-Claude Heliard , Jean-Raymon Abrial, John G.P. Barnes, Mike Woodger, Olivier Roubine, Paul N. Hilfinger and Robert Firth.
Decide who is french or not !

Don't forget the requirements was "american" ones:
"Ada is a programming language designed in accordance with requirements defined by the United States Departement of Defense ...."
Referece Manual For the Ada programming language  ANSI/MIL-STD6A815A

Some of the last competitors were also american : Intermetrics (RED),  SOFTECH (BLUE) and SRI (YELLOW)
Colors were used to mask the source of the proposals and ...GREEN (CII-Honeywell-Bull ) was the winner

And finally  the choice "american" too.
I don't believe the DoD in the 80's was full of people drunken with french wines.
And despite the fact the french army never used Ada, it was not a frenchy conspiration !

After studing in 1972 Fortran, I really begun to program in assembler on Motora Exerciser (yes it's difficult to imagine there was a time, microprocessors were  "expensive")
Then, Basic on Apple II, Pascal USCD and I discover Ada with a Meridian Software "IDE" .Yes, It was really painfull to do Ada programming but I must also say I'm still surprised to think it was possible to create (only using the language verbs) concurrent tasks (now called threads) and this, on Intel 286 with DOS. I would be very interested to have now in Java "native" rendez-vous , swith/case with enumeration or on error a compiler that guide on the good item of the reference manual.

Packages, exceptions, interfaces, private type, genericity ... were in Ada and reinjected ten years after in Java, so the Ada community spells it Just Another Version of Ada.

Ada ...too huge, too expensive, too soon and a bit austere with a non-iterative learning curve

Hoping I wasn't too "uncool"

Dominique Dechamps
Dechamps Send private email
Wednesday, January 12, 2005
 
 
Dominique, this is a discussion about computer languages -- with that in mind any coolness would be measured on a nano-scale, and has to be shared between us all.
David Aldridge Send private email
Thursday, January 13, 2005
 
 
Well said, Dominique.

The other difference between Java and Ada (besides the timing and the hardware the Virtual Machine runs on) is that Ada was Pascal-ish, where Java is C-ish.

Thus Java escapes that "But Pascal was ONLY a Learning Language" stigma, and gets the acceptance of "Ahh, Unix was WRITTEN in C".
AllanL5
Thursday, January 13, 2005
 
 
J'suis desole...c'etait juste une blague, je m'excuse une milliards de fois...j'espere bien que j'suis pas l'Americain pas mal moche...

Je me souviens tres bien ecouter un type-professeur, avec un accent tres fort (francais, b'en sur), nous dire qu'il va nous sauver de nous-memes. Je me souviens bien me demander, "Yeah, right"
Stephen Hirsch Send private email
Thursday, January 13, 2005
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz