"William Sommerwerck" <
grizzle...@comcast.net> wrote in message
news:h1la42$ugl$1...@news.eternal-september.org...
> It might be better to start with C than some other language. Why?
>
> Last year I spent some time with O'Reilly's "Head First C#". I'm not going
> to discuss this book's approach to teaching C#, other than that it makes a
> horrendous error -- it tries to teach C# to somone who already knows other
> languages, and to people who know little or nothing about programming.
>
> This is not a good idea. Both groups wind up shortchanged.
>
> One might argue that, as object-orient programming appears to be the
> least-bad way of writing software, that any naive student should start
> there, because there will be less to unlearn down the line. * Should they
> need to learn procedural programming, they can pick it up later.
>
> This is probably "correct", but I don't think anyone has done studies to
> determine which sequence (if either) works best. And I never had any
> particular problems learning object-oriented programming. (Specific OOP
> languages is another matter!)
>
> I'd start the kid with C, and go from there.
>
> * One of the problems with OOP is that it tends to become the proverbial
> hammer -- everything starts looking like a nail, even when it isn't. One
> of
> this book's programming examples is a "simple" program that calculates
> catering costs. It could be written as a simple procedural program, but
> its
> "functionality" (I hate that word!) is divided into objects. This gives
> the
> writers a way of showing the sorts of problems that occur when the objects
> don't correctly communicate with each other, but the whole thing looks
> rather dumb, because there are simpler and less-confusing ways to write
> the
> program as a single Windows "page" (I can never remember the word).
>
>
Back in the day, I wrote a Prolog environment, an implementation of one of
the most abstract, machine divorced forms of "programming." But I thought
perhaps this kid should follow the journey from hardware to abstraction the
way I did. I think boys with hammers who kill domestic cats need to take
that journey.
The first computer I programmed, a Univac 422 training machine, with all of
512 12-bit words, ran so slow the panel lights did not blur. It lit a fire
in me to see how I could make some "quick money" selling worthless software
to unsuspecting suckers. I didn't really learn much, because I never did
get a job. The majority of business problems are solved in Java, but I
cannot see how Java could inspire a love for, to copy Tracy Kidder's phrase,
the soul of a machine. But apparently people are using Java pretty
universally, while no one in their right mind would use ADA Prolog. Neither
Java nor C++ inspire the sense of awe and reverence for the "perfect
solution." But I think every good engineer has this reverence, even if he
seldom has the chance to approach perfection. But then again some are more
practical, because they don't have daddies that pay for their every whim. I
don't know what I'm going to do when my old man keels over.
It could be argued that the skill set acquired by this approach is virtually
useless for employment as a commodity programmer, but the goal here is to
inspire. The particulars can be decided by the kid at a later time in his
Life, or like me, you don't have to decide anything.
Bob Morein
(310) 237-6511