From: mfeldman@seas.gwu.edu (Michael Feldman)
Subject: Re: Why and how do organizations select the OO
Organization: George Washington University
Date: Tue, 26 Jan 1993 15:56:04 GMT

In article <24696@alice.att.com> bs@alice.att.com (Bjarne Stroustrup) writes:
>
[lots of good stuff deleted]

>One way of expressing this is that companies (and individuals) wants mere
>training (i.e. ways of using new tools without absorbing new concepts).
>What they need is education (i.e. new concepts and their related techniques).

Indeed. I am aware of a certain SE educator in the Ada world whose business
card used to say "education manager." His customer base grew a good bit
when he changed the title to "training manager." His customers didn't
want "education." Too "academic", they said. Turns out he taught the same
stuff, but they were willing to swallow it when he called it training.
Sigh...No wonder we're losin' it to the Japanese...

>Ada without some understanding of data abstraction, etc. seems to me to
>be very nearly just Pascal, and C++ without some understanding of data
>abstraction, etc. is just C with better type checking.

Indeed.
>
>I don't know about the Ada world, but in the C++ world we do have a problem
>with teachers and textbook writers who miss the connection between concepts
>and programming language constructs and thus miss the point and makes learning
>unnecessarily difficult for the students.

Well, I can speak as a teacher of neophytes, who have _tremendous_
difficulty making the distinction. They identify the concept with the feature.
I'm a pretty decent teacher, and working pretty hard at the distinction
between, say, data abstraction and packages. Indeed, I was teaching DA
several years before Ada even existed, in a data structures course.
The course is _still_ data structures, and Ada is used as the language.
Five years later, I'll run into students who say "Hi Mike. Remember me? 
I was your student in that Ada course." Makes me wanna scream.

I am convinced that the only way to show people how to distinguish concept
from language construct is to teach them _more than one language_, so that
they can see for themselves what is universal and what is language-dependent.
Alas, that is rarely possible in today's world, especially in industry.
It's even hard in college courses (except comparative languages courses)
to do two languages side-by-side.

At the University of Washington last year I taught a freshman course
whose requirements were 8 weeks of Ada followed by 2 weeks of Fortran.
I was _very_ gratified at the way the students reacted to the 2-language
model. Far from resisting it, they were fascinated by the similarities
and differences. And I daresay they learned more about fundamentals
by doing two languages than by doing one. Examples on request.

It's very difficult to compare an apple.
>
> > Their state of knowledge of OO truly seemed to be "It's that stuff that
> > C++ has and Ada doesn't." Some in the group were quite surprised to
> > discover (from me) that Ada supports information hiding and private types.
> > Their eyes glazed over when I got to the intricacies of inheritance.
>
>Maybe you focussed too much on the intricacies and too little on the
>concepts :-) I don't experience serious problems getting the object-
>oriented concepts and the C++ language mechanisms that support then
>across - the problem comes when the ideas have to be applied to real
>projects (exactly, as for the data abstraction concepts and the language
>constructs that support them).

I misspoke. I had about half an hour to give the "Ada viewpoint." 
Obviously there weren't too many intricacies discussed. The point was
that I believed that for their situation, Ada's weak single inheritance
could well be quite sufficient,so they could relax and stop fighting
the mandate.

DoD Ada implementation policies presume Ada's cost-effectiveness unless 
shown otherwise. I feel no need to trash C++ in order to show that Ada 
is viable, because that is all I have to show. I have no need to engage 
in a "my language is better than yours" crusade; I need only to show that 
my language will solve your problem in a cost-effective manner.

I'm tired of pi**ing contests...

Mike Feldman
Newsgroups: comp.lang.ada