[Edu-sig] Age groups

Greg Ward gward@cnri.reston.va.us
Fri, 4 Feb 2000 10:14:11 -0500

On 04 February 2000, Dirk-Ulrich Heise said:
> Don't you think classes are as easy as variables?
> Start right with objects, before they even know there were
> non-OO-approaches in the past.

Interesting point: I've been trudging through Yourdon & Coad's
*Object-Oriented Analysis* of late, and they had an interesting point on
teaching OO: their experience is that old-style programmers brought up
in a COBOL world have a really hard time "getting" OO, but
non-programmers -- in their context, it was marketing and sales staff,
but it could be anyone -- "get it" immediately.

Another point they drive home again and again is that
"generalization/specialization" and "whole/part structures" are not just
pie-in-the-sky abstractions dreamed up by CS professors, but two of the
fundamental techniques used in human thought.  Duh!  Of *course* they
are, but I never really saw it that way before, since I grew up in a
pre-OO world (Pascal and BASIC) and had to learn it through the same
artificial examples (biological taxonomy and a graphics library) as
everyone else.

I think this argues that OO concepts should be built in from the start,
if possible.

Finally, one more data point: I have known more than one C++ or Perl
programmer who thought that *using* objects was fairly natural, but that
*defining* them (err, defining classes) was reserved for gurus,
something that "mere mortals" don't mess with.  Given C++ and Perl
syntax, I can see why.  However, might it be easier to introduce
neophytes to OO first by giving them some canned classes to play with,
and *then* show them how to define their own?  The icing on the cake
would be to show them how they can use inheritance to add functionality
to those canned classes they started out with: if that doesn't motivate
OO, I don't know what would.