|
|
|
|
Goals
My goals in this book are
to:
- Present the material one
simple step at a time, so the reader can easily digest each concept before
moving on.
- Use
examples that are as simple and short as possible. This often prevents me from
tackling “real world” problems, but I’ve found that beginners
are usually happier when they can understand every detail of an example rather
than being impressed by the scope of the problem it solves. Also, there’s
a severe limit to the amount of code that can be absorbed in a classroom
situation. For this I sometimes receive criticism for using “toy
examples,” but I’m willing to accept that in favor of producing
something pedagogically
useful.
- Carefully
sequence the presentation of features so that you aren’t seeing something
you haven’t been exposed to. Of course, this isn’t always possible;
in those situations, a brief introductory description will be
given.
- Give you what
I think is important for you to understand about the language, rather than
everything that I know. I believe there is an “information importance
hierarchy,” and there are some facts that 95 percent of programmers will
never need to know and that would just confuse them and add to their perception
of the complexity of the language. To take an example from C, if you memorize
the operator precedence table (I never did), you can write clever code. But if
you have to think about it, it will confuse the reader/maintainer of that
code. So forget about precedence, and use parentheses when things aren’t
clear. This same attitude will be taken with some information in the C++
language, which I think is more important for compiler writers than for
programmers.
- Keep
each section focused enough so the lecture time – and the time between
exercise periods – is reasonable. Not only does this keep the
audience’s minds more active and involved during a hands-on seminar, it
gives the reader a greater sense of
accomplishment.
- Provide
readers with a solid foundation so they can understand the issues well enough to
move on to more difficult coursework and books (in particular, Volume 2 of this
book).
- I’ve
tried not to use any particular vendor’s version of C++ because, for
learning the language, I don’t think that the details of a particular
implementation are as important as the language itself. Most vendors’
documentation concerning their own implementation specifics is
|
|
|