comp.lang.ada
 help / color / mirror / Atom feed
From: seas.gwu.edu!mfeldman@uunet.uu.net  (Michael Feldman)
Subject: Re: Pascal or C as a first lang
Date: 12 Sep 93 22:06:57 GMT	[thread overview]
Message-ID: <1993Sep12.220657.14205@seas.gwu.edu> (raw)

In article <26v3ak$nfh@schonberg.cs.nyu.edu> dewar@cs.nyu.edu (Robert Dewar) wr
ites:
>Edward Hartnett's comments regarding teaching C -- his point is basicaly
>that since C is widespread, that must be the appropriate first language
>is a nice example of the most disastrous kind of thinking when it comes
>to figuring out what to teach at this or any other level.

Amen!
>
>Despite our frequent language wars on this newsgroup, we should never forget
>that language is very much a secondary issue. I would far rather see C
>written by someone competent than Ada written by someone incompetent. Now
>what is the competency about here? Certainly not about any particular
>language.
>
Correct.

>So how do we teach this competency? This is a fundamental question, and we
>spend a lot of time arguing about the right answer, but we know for sure
>that the wrong answer is to focus on a particular language and concentrate
>on teaching coding skills in that particular language.
>
Couldn't agree more.

>Language is nothing more than a vehicle for teaching at this level. The only
>conceivable argument for Ada or C or any other language is that it helps in
>the fundamental goal of learning what programming, software engineering if
>you like [I see little value in considering these terms as significantly
>distinct], is all about.
>
>In practice, the worst thing about C is the trial-and-error hacking culture
>that comes with it. It is hard (but not impossible) to teabeginning level 
>without getting sucked into the
>trap of this culture..

Also, the language helps to reinforce the culture.
  x = 0;
  while (X < 10);
  {
    /* do something with x here */
    x++
  }
is my favorite example, of which there are many.
>
>The best thing about Ada is the culture that comes with it, which tends to
>be at the opposite extreme from this trial-and-error approach.

Very true. I have taught lots of Ada and lots of C, and observe that once
the students get the hang of what it takes to get an Ada program to
_compile_, they are amazed that - more often than not - the program not
only runs without crashing but gives a reasonable answer. If the answer does
not look reasonable, typically the reason is their flawed translation of
their design into a coded algorithm, NOT a language matter.

We debate the "gotchas" of Ada in this group, and that's appropriate.
Where else can we thrash out the "language-lawyer-ly" stuff?

But one of the things that's _right_ about Ada is that if it's taught with
the proper respect for good practices, there are fewer gotchas. This
may or may not be true on every real project; but ten years of teaching
Ada (and C) has taught me that it darned well _is_ true for students.
One can write really bad code in Ada, but it's pretty hard.

We have debated here ad nauseam the question of whether one should prefer
to debug at compile time or at run time. Ada has a clear preference for
the former; C to the latter. Where I stand should come as no surprise,
but I'd rather debate it privately than start a thread here.
>
>Now language does not dictate the associated culture, but it is also false
>to assume that it has nothing to do with it. In practice the structure
>and design of the Ada language are better oriented to teaching abstraction.
>
>For example,  it's hard but not impossible, to teach about data abstraction
>and data hiding in C. Ada on the other hand
>makes such teaching much more natural.
>
Which leaves us with C++, of course. C++ would make a decent teaching language
if we could teach the ++ part without the C part :-)

Please, folks - don't knock it till you've tried it. When you've stared
out at as many freshmen and sophomores as I have (and nearly as many
industry programmers, by the way), you will have learned a few things
about teaching that can't just be theorized on the net.

Cheers -

Mike Feldman
------------------------------------------------------------------------
Michael B. Feldman -  co-chair, SIGAda Education Committee
Professor, Dept. of Electrical Engineering and Computer Science
The George Washington University -  Washington, DC 20052 USA
202-994-5253 (voice) - 202-994-0227 (fax) - mfeldman@seas.gwu.edu (Internet)
"We just changed our CONFIG.SYS, then pressed CTRL-ALT-DEL. It was easy."
-- Alexandre Giglavyi, director Lyceum of Information Technologies, Moscow.
------------------------------------------------------------------------

             reply	other threads:[~1993-09-12 22:06 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-09-12 22:06 Michael Feldman [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-09-14 16:26 Pascal or C as a first lang Tom Quiggle
1993-09-13 13:40 david.c.willett
1993-09-13 13:34 david.c.willett
1993-09-12 12:05 Robert Dewar
1993-09-11  3:49 Michael Feldman
1993-09-11  3:26 Michael Feldman
1993-09-10 16:03 pacbell.com!att-out!cbnewsh!cbnewse!cbnewsd!cbnewsc!cbfsb!cbnews!cbnewst!
1993-09-10  0:58 Michael Feldman
1993-09-09 23:38 cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!howland.
1993-09-09 23:18 Tim Barrios
1993-09-09 23:05 Robert Kitzberger
1993-09-08 12:56 CONROY WILLIAM F
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox