Re: Need a C++ book for complete idiot!
* Jorgen Grahn:
On Tue, 08 Sep 2009 15:06:58 +0200, Alf P. Steinbach <firstname.lastname@example.org> wrote:
* Andrew Tomazos:
If that is true, then why do the vast majority of universities teach
first year computer science students in Java, and not C++ ? I'm sure
the professors setting the curriculum are quite familiar with C++, so
we must conclude that they would disagree with your position, right?
I see three possible reasons (at the time I taught, early 1990's, I started the
students with Pascal and proceeded to C++).
For me as a student at the time, they taught Standard ML and
(reluctantly) Modula-2. Later quite a lot of C and SML, and other
languages mostly to illustrate things like OOP (what's where C++ came
in, for a week or two).
First, it's extremely difficult to teach C++ from the start because almost
everything in the language is connected to everything else.
Is it really,
Yes, I just said so, which is proof by self-reference. ;-)
But as an example, consider a text-based program with a simple menu based on
input of single letters. The student writes
if( command = 'a' ) ...
There's a lot wrong with that. You might start by explaining the difference
between assignment and equality checking. You wouldn't have to if C++ was a more
strongly typed language, but as it is, they are intimately connected in C++. And
that in turn is connected to C++ implicit conversions.
If as a teacher you think it's OK to just do a hand-waiving argument that the
compiler somehow (the implication is) erronously accepts the assignment, then
you're teaching something that is false.
And the next step for the student makes it clear that the implicit conversions
can't simply be ignored for now, for they get involved in almost anything you do
(or rather, that the student does).
The student proceeds to improve the code, to write
if( toupper( command ) == 'A' ) ...
Oh my! Implicit conversions strike! So now that has to discussed, together with
the basic types and casts, and notions of wrap-around in unsigned types and
such. *Unless* you're willing to condition your students to just follow cookbook
recipes (here's how to use 'toupper') instead of understanding what they do.
And some other student has instead decided to use command "words" such as
"append" instead of single character commands such as "a". That student
therefore wants to uppercase a string. Which should be trivial...
and if so, isn't that how it should be in a language?
I think "The C++ Programming Language" shows that you *can* introduce
C++ piece by piece. The book may not be the ideal introduction to C++
programming for the complete novice, but that has other reasons.
I'm not saying that it's impossible, but TCPPPL does not introduce C++ to
novices. It introduces C++ to folks who already know some programming language.
[snip excellent and depressing MS-DOS example]