TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy

TEAM-ADA@LISTSERV.ACM.ORG

Options: Use Classic View

Use Monospaced Font
Show HTML Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
"Brashear, Phil" <[log in to unmask]>
Thu, 5 Oct 2000 14:00:39 -0400
text/plain (105 lines)
In my earlier message, I didn't address the OO aspects.
First, C++ is a "better" C -- I think that "cout << Variable;" is a lot more
intuitive that "printf ( .... )" (or whatever the poor C programmer has to
use) -- though it certainly doesn't hold a candle to "Put_Line ( Variable
);".  If I had to choose between C and C++ for the intro courses, I'd choose
C++.

That having been said:

In CS1, the students have one assignment using user-defined classes.
In CS2, the class is used as the encapsulation/abstraction mechanism for
producing Abstract Data Types -- that's in all assignments (7.5 assignments
in my case).  By the fourth (middle) assignment, my kids are creating and
using class templates.  For the sixth assignment, they implement Queue as a
child of List, so they're seeing inheritance.  The 1/2 assignment (6A) deals
with a heterogenous list (linked list of class-wide objects to us Ada
folks).

I certainly wouldn't say I'm teaching an object-oriented course, but it's
certainly object-based with an introduction to OOP.  (Pretty much what I did
in the Ada version of the course, once Ada 95 compilers were available.)

Now that I've got my feet pretty well grounded in the C++ stuff, I'm waiting
for the Java shoe to drop.  I think that would be worse.

Phil

Philip W. Brashear
Software Quality Assurance
EDS Corporation
+1.937.237.4510
[log in to unmask]



-----Original Message-----
From: [log in to unmask] [mailto:[log in to unmask]]
Sent: Thursday, October 05, 2000 12:57 PM
To: [log in to unmask]
Subject: Re: C++ as a first language


>The intro C++ is being taught without the object
>oriented aspects of the language, so I guess it really becomes a
>"C class using the non-object oriented constructs specific to C++ and
>not in C, and using a C++ compiler",
>from what I can tell.  The professors there are very concerned because
their
>students are performing much more poorly than they did with Pascal as an
>intro language.

>Now factoring out issues such as "teaching C++ for the first time" (which
>maybe is more important in all of this than the language) ..... well what
are
>your all thoughts on this.

My personal opinion, for what it's worth, is that this sounds a bit stupid!

If they're going to teach C++ without the OO aspects, they would be as well
teaching C as it would be much less confusing for beginners, however if that
was
the case, they would be much better teaching Ada as:

1) It has a Pascal-like syntax (so shouldn't be too difficult for the
teachers
to pick up)
2) It's OO features (at least those that are non-essential from a Software
Engineering point of view, such as inheritance and classwide programming)
can be
avoided if required for simplification
3) It is better as an introduction to Software Engineering because it makes
you
think more about what you're trying to do WRT type conversions, proper used
defined types and all.
4) It has inbuilt parallelism which replicates the way the real world works

One of the particularly good things about Pascal is the fact that it was
designed by Niklaus Wirth as a teaching language, this is not the case with
C,
and certainly not with C++. Since Ada is, to a significant extent, a
derivative
of Pascal, it should also be adequate as a teaching language.

Whose idea was it to use C++? If they are looking to make the transition to
OO
programming later on, then surely they could continue with Pascal in the
first
instance and then move on to Delphi?

I started with Pascal at university and, after using it for a couple of
years in
industry moved on to C. That jump was not particularly big as they're both
functional languages. However, in the early days of trying to run with C++ I
found it completely non-intuituve, particularly without a thorough grounding
in
the OO concepts on which C++ depended.

My view is therefore that if they want to teach C++, they need to teach the
OO
concepts first (or at least at the same time).

Hope this is useful.

John

ATOM RSS1 RSS2