Like any human language, C++ provides a way to
express concepts. If successful, this medium of
expression will be significantly easier and more flexible
than the alternatives as problems grow larger and more
complex.
2 Thinking in C++ www.BruceEckel.com
You can’t just look at C++ as a collection of features; some of the
features make no sense in isolation. You can only use the sum of
the parts if you are thinking about design, not simply coding. And
to understand C++ this way, you must understand the problems
with C and with programming in general. This book discusses
programming problems, why they are problems, and the approach
C++ has taken to solve such problems. Thus, the set of features I
explain in each chapter will be based on the way that I see a
particular type of problem being solved with the language. In this
way I hope to move you, a little at a time, from understanding C to
the point where the C++ mindset becomes your native tongue.
Throughout, I’ll be taking the attitude that you want to build a
model in your head that allows you to understand the language all
the way down to the bare metal; if you encounter a puzzle, you’ll
be able to feed it to your model and deduce the answer. I will try to
convey to you the insights that have rearranged my brain to make
me start “thinking in C++.”
express concepts. If successful, this medium of
expression will be significantly easier and more flexible
than the alternatives as problems grow larger and more
complex.
2 Thinking in C++ www.BruceEckel.com
You can’t just look at C++ as a collection of features; some of the
features make no sense in isolation. You can only use the sum of
the parts if you are thinking about design, not simply coding. And
to understand C++ this way, you must understand the problems
with C and with programming in general. This book discusses
programming problems, why they are problems, and the approach
C++ has taken to solve such problems. Thus, the set of features I
explain in each chapter will be based on the way that I see a
particular type of problem being solved with the language. In this
way I hope to move you, a little at a time, from understanding C to
the point where the C++ mindset becomes your native tongue.
Throughout, I’ll be taking the attitude that you want to build a
model in your head that allows you to understand the language all
the way down to the bare metal; if you encounter a puzzle, you’ll
be able to feed it to your model and deduce the answer. I will try to
convey to you the insights that have rearranged my brain to make
me start “thinking in C++.”
I clawed my way into C++ from exactly the same position I expect
many of the readers of this book are in: as a programmer with a
very no-nonsense, nuts-and-bolts attitude about programming.
Worse, my background and experience was in hardware-level
embedded programming, in which C has often been considered a
high-level language and an inefficient overkill for pushing bits
around. I discovered later that I wasn’t even a very good C
programmer, hiding my ignorance of structures, malloc( ) and
free( ), setjmp( ) and longjmp( ), and other “sophisticated”
concepts, scuttling away in shame when the subjects came up in
conversation instead of reaching out for new knowledge.
When I began my struggle to understand C++, the only decent
book was Bjarne Stroustrup’s self-professed “expert’s guide,1” so I
was left to simplify the basic concepts on my own. This resulted in
my first C++ book,2 which was essentially a brain dump of my
experience. That was designed as a reader’s guide to bring
programmers into C and C++ at the same time. Both editions3 of
the book garnered enthusiastic response.
At about the same time that Using C++ came out, I began teaching
the language in seminars and presentations. Teaching C++ (and
later, Java) became my profession; I’ve seen nodding heads, blank
faces, and puzzled expressions in audiences all over the world
since 1989. As I began giving in-house training to smaller groups of
people, I discovered something during the exercises. Even those
people who were smiling and nodding were confused about many
issues. I found out, by creating and chairing the C++ and Java
tracks at the Software Development Conference for many years,
that I and other speakers tended to give the typical audience too
many topics, too fast. So eventually, through both variety in the
audience level and the way that I presented the material, I would
end up losing some portion of the audience. Maybe it’s asking too
much, but because I am one of those people resistant to traditional
lecturing (and for most people, I believe, such resistance results
from boredom), I wanted to try to keep everyone up to speed.
For a time, I was creating a number of different presentations in
fairly short order. Thus, I ended up learning by experiment and
iteration (a technique that also works well in C++ program design).
Eventually I developed a course using everything I had learned
from my teaching experience. It tackles the learning problem in
discrete, easy-to-digest steps and for a hands-on seminar (the ideal
learning situation) there are exercises following each of the
presentations. You can find out about my public seminars at
www.BruceEckel.com, and you can also learn about the seminars that
I’ve turned into CD ROMs.
The first edition of this book developed over the course of two
years, and the material in this book has been road-tested in many
forms in many different seminars. The feedback that I’ve gotten
the book garnered enthusiastic response.
At about the same time that Using C++ came out, I began teaching
the language in seminars and presentations. Teaching C++ (and
later, Java) became my profession; I’ve seen nodding heads, blank
faces, and puzzled expressions in audiences all over the world
since 1989. As I began giving in-house training to smaller groups of
people, I discovered something during the exercises. Even those
people who were smiling and nodding were confused about many
issues. I found out, by creating and chairing the C++ and Java
tracks at the Software Development Conference for many years,
that I and other speakers tended to give the typical audience too
many topics, too fast. So eventually, through both variety in the
audience level and the way that I presented the material, I would
end up losing some portion of the audience. Maybe it’s asking too
much, but because I am one of those people resistant to traditional
lecturing (and for most people, I believe, such resistance results
from boredom), I wanted to try to keep everyone up to speed.
For a time, I was creating a number of different presentations in
fairly short order. Thus, I ended up learning by experiment and
iteration (a technique that also works well in C++ program design).
Eventually I developed a course using everything I had learned
from my teaching experience. It tackles the learning problem in
discrete, easy-to-digest steps and for a hands-on seminar (the ideal
learning situation) there are exercises following each of the
presentations. You can find out about my public seminars at
www.BruceEckel.com, and you can also learn about the seminars that
I’ve turned into CD ROMs.
The first edition of this book developed over the course of two
years, and the material in this book has been road-tested in many
forms in many different seminars. The feedback that I’ve gotten
from each seminar has helped me change and refocus the material
until I feel it works well as a teaching medium. But it isn’t just a
seminar handout; I tried to pack as much information as I could
within these pages, and structure it to draw you through onto the
next subject. More than anything, the book is designed to serve the
solitary reader who is struggling with a new programming
language.
until I feel it works well as a teaching medium. But it isn’t just a
seminar handout; I tried to pack as much information as I could
within these pages, and structure it to draw you through onto the
next subject. More than anything, the book is designed to serve the
solitary reader who is struggling with a new programming
language.
.
.
ไม่มีความคิดเห็น:
แสดงความคิดเห็น