----- Original Message -----
From: "David Botton" <[log in to unmask]>
To: <[log in to unmask]>
Sent: Monday, December 27, 2004 11:23 PM
Subject: Question #4


> (I am putting together all the responses! I will start posting drafts
> of the FAQ answers based on responses to Q1-3 and posting them very
> soon).
>
> Question #4
>
> Will learning Ada make me a better C++ or Java programmer? Why?
>
Learning Ada will make me a better programmer no matter what language I
program in.

Most poeople are not able to understand concepts very well without concrete
examples.

If one looks at the functionality items defined in Steelman as "What one
needs to know
how to do to write good software", then since Ada gets a 95% score, one can
(since there are good concrete examples) learn 95% of those concepts easily.
By comparison, if I learn C++ or Java, then I only get 70% of the concepts
that
I need to have.  Where do I learn another 25%?  By leanring Ada.

Personally, A group that I was a part of wrote Ada-style packages in C .h
and .c
back in the 1986 time-frame, and got termendous modularity compared to what
the "usual" C programmer gets.

If you need to learn how to do something, seeing a worked example (even if
in
another language) is very helpful.


-----
In particular, I taught a data structures class where the students were
supposed to
write their code in a generic (in the sense of Ada Generics) manner.  They
were
given the choice of C, Pascal, or any language that the section instructor
said OK.

I had 35 students.  About 1/2 chose each language (They knew that language).
Only
1 chose Ada (He knew neither Pascal nor C, only FORTRAN & COBOL and had
been away from programming for more than 5 years).  He was the only one to
complete all of the assignments.  Since the text book had ALL OF THE CODE
needed to do the assignmens in the text book (in pieces and snippets; the
students
*merely* had to figure out how to hook the pieces of code together
correctly);
this was somewhat of an eye-opener to me.

So, what did the department do?  They switched the course to using Java as
the primary language, and removed to requirement for students to write
generically,
since hardly any "could get it".  My one "Ada" student said to me:
  "Well, now that I see how it fits together, I see how they intended me to
do it
    in C & Pascal.  Sure glad I didn't have to, cause I can see it is really
rough."

So, why don't people write generic code in languages other than Ada?
    1)  They have no good examples in their language.
    2)  It is too hard to visualize from concept to implementation.
    3)  Writing good generics in a language without proper support is tough!
    4)  And, since once you get through, they aren't very "safe" anyhow
(like Ada's are),
           it can be difficult to convince others of their applicability.

Just another thought about good software engineering from Paul Stachour.