|
Softpanorama |
May the source be with you, but remember the KISS principle ;-)
|
|
|
|
In the first three chapters the author delves into C++ arcana and I suspect that a student with just one (and semi-forgotten) course of C++ will be unable to understand this material no matter what. Examples are very sketchy and generally require work to make them run. the first three labs are of low quality and especially out of touch with the college reality when students that take this class barely can program in C++. They are simply unsuitable for most students after a year of C++ experience. And to add insult to injury none of tricky areas covered in the labs are explained well in the book.
Chapter 1 discusses software development. Extremely weak and superficial treatment of a pretty complex topic. It's clear that the author does not understands the subject in depth and the chapter is completely detached from reality. Any student would be better off reading the "Elements of the Program Style" or Fast project Developemnt" instead. No help of dealing with real problem, and no relevance to the rest of course. The waterfall model of software development is introduced without even mentioning alternatives. The "official" list of software development stages provided in a book is highly misleading. In practice, the phases are intermixed and the process in iterative -- often you need to return from coding to specification after discovering that the approach chosen does not work or that there is a better way to specify the task that leads to a cleaner and/or simpler solution.
Chapter 2 discusses relationship between data structures and abstract data types. Discussion of the primitive C++ data types contains some information that is more appropriate for the assembler class (like the way floating representation stores mantissa ). After that the author discusses arrays. Sparse arrays problem and the variant of storage of multidimensional arrays are completely ignored. Some author claims are suspect. For example of p.52 we read:
"One of the principles of object oriented programming is that an object should be self-contained, which means that it should carry within itself all the information necessary to describe and operate on it. Arrays violate this principle. in particular they carry neither their size nor their capacity within them..."
... " we must pass to Print() not only the array to be displayed but also its size, and this is not consistent with the aims of the object-oriented programming" (italics belongs to the Larry Nyhoff -- NNB).
It's because such nonsense I hate the books that mix OOP with data structures :-). It looks like the author does not understand that C++ implementation of arrays is not universal and in some old procedural languages like PL/1 the size of the array is passed as a hidden parameter and can be retrieved using build-n function ;-). Same is true for non-object oriented scripting languages like Perl. In those languages arrays are pretty much self-contain. Then the author tries to explain structures and fail to provide any reasonable treatment of the tickly aspects of this topic. For example is next to impossible to understand how unions work from the text and I highly recommend to get a different textbook for the topic At the end of the chapter the author extols the virtue of OOP in comparison with the procedure oriented programming although is algorithms and data structures this approach is highly suspect and might represents a contemporary religious aberration that will not survive the test of the time.
In Chapter 3 along with explanation of C++ class construct the author managed to discusses strings (without much details. A simple editor listing is provided, data encryption (DES and RSA are mentioned, and, to ensure that the student completely lost interest, the subject pattern matching is added to the mix :-).
After that the book changes the topic and became more introduction of STL library that a data structure course. As an introduction to STL it might makes sense but as an introduction to data structures probably not.
Chapter 4 discusses stacks. Chapter 5 queues. Chapter 6 is devoted to Templates and Standard containers. Chapter 7 is about ADTs.
Actually vectors are strings are explained not that badly and labs are much better than previous.
Chapters 8 and 9 discuss lists. Chapter 10 discusses binary trees. Chapter 11 discusses sorting. Chapter 12 tries to link OOP and abstract data types. Chapter 13 is devoted to trees. Chapter 14 discusses Graphs and Digraphs.
You cannot compare this text to Knuth were you really feel the class of author even if you do not understand half of the material (still you definitely feel the respect, that might help to return to the subject later in one's professional career.)
In this book a typical student probably will never understand two-thirds of the material because data structures are obscured by object-oriented arcana. And he/she will not receive anything in return other then strong desire not have anything in common with this subject for the rest of his/her professional life :-).
Less than helpful, May 13, 2000
Reviewer:
liz mccraven (see more about me) from New Jersey
I used this book as a student in an online version of a Data Structures class.
None of us liked this book. The examples are vague and some of the exercises
are misleading. I found the organization of the book to be confusing as well.
Not good for learning Data Structures on your own.
Not for the faint of heart, January 31, 2000
Reviewer:
Jim Hare (see more about me) from St Louis, MO
This book, while perhaps suitable for a more agressive Data Structures course.
Was unsuitable for most students in my college Data Structures class after a
year of C++ experience. The code presented in the text is very skeletal, with
far too many "left as an exercise to the reader" for my taste.
I like "More Exceptional C++" even more than the original. It's not clear to me whether this is because the book is better or because the subject matter has become more important to me. The "Exceptional C++" series is shaping up to be a big brother to the "Effective C++" series, covering areas somewhat more advanced than those in the Effective series, such as exceptions, templates, and namespaces.
One aspect of the book I don't particularly care for is the quizzes/points format that, I suspect, is due to the origins of the book in the author's "Guru of the Week" series.
This is a great book and should belong in every
advanced C++ programmer's personal library.
Picks Up Where The First Book Left Off, January 30, 2002
Reviewer:
Philip R. Heath (see more about me) from Plano, TX United States
More Exceptional C++ is every bit as good as the first offering from Sutter.
Like the first, this is an advanced text, and a solid working knowledge of C++
is necessary to get the most out of this book.
For those without experience with Sutter's previous book, this is divided into "Items" grouped together by broad subject area. Unless the the items make up a series such as Items 13-16, they can be read independently and in any order. This layout is helpful to the reader who doesn't have a lot of time to read a book from cover to cover. One can sit down and spend 30 minutes with an item and gain valuable insight into the specific subject matter Sutter deals with.
I enjoy the author's writing style because he tends to be more conversational than lecturing. He interjects humor - albeit it geek humor - from time to time. The presentation makes learning advanced techniques, dare I say, fun rather than dry and cumbersome.
It is also worth noting that being advanced
doesn't preclude being practical. Sutter deals with everyday topics such as
the STL, exception safety, and inheritance. If you are ready to make the step
to advanced C++ programmer, this book will guide you on your way in a
practical, enjoyable manner.
Paperback - 889 pages (September 1999)
MacMillan Computer Pub; ISBN: 0789721449 ; Dimensions (in inches): 2.09 x 9.27 x 7.42
Excellent learning tool! Finally!, August 6, 2000
Reviewer: A reader from Tampa, FL
This book is very well laid out! I sat in the book store for hours sifting through the barrage of C++ books before I decided on this one. For me, this is the perfect guide to the C++ language. I struggled to understand the language for years as a hack who vaguely understood the critical concepts, much less how to implement them. No longer! I think this book should be titled "Understandable C++". The only thing I would have him add to the book is a chapter on BSP, QUAD, and OCT, trees. All I need now is for Rob McGregor to write a book on how to handle MFC and Win32.
Very easy to read. Easy to understand explanations of difficult concepts in most situations. Quite comprehensive. Nice big margin to scribble notes in. Useful codes samples. Good price. A good starting textbook or supporting textbook. I found very good explanations of concepts like template and namespaces. Good book to understand concepts, may need little tweak in for the example code. Overall, a pretty good intro book.
Good C++ introduction - but a little simple!, August 31, 1999
Reviewer: Nikolay Qviller (nqviller@hotmail.com) from Norway
This book is a good one for people who has never before programmed in C++. For
those who has done that, I would not recommend this book. Then you should read
C++: The Complete Reference instead! The explanations of templates,
namespaces, exception handling and operator overloading are a little too
simple for me. Also, the last part of the book, The Standard C++ Library,
breaks the tutorial form of the book into a pure reference form!!! One of the
programs has a very nast bug in it that should have been checked. It
completely crashed my system, and I spent the rest of the day figuring out
what went wrong!
Nice!, June 7,
1999
Reviewer: lavender@concentric.net from Vermont
Fun to read. Clearly written. Great annotation of concepts in the margins.
Pretty colors. Comprehensive, detailed, concise. Excellent index. Wish it had
a workbook with examples. Would have given it a full 5 stars except for the
fact that it's a bit heavy to lug around -- so: ****1/2*.
The only good book
on c++ I came across!, January 16, 1999
Reviewer: A reader from USA
Well organised and appealing print. Examples are great. One of the best books
on c++. Reasonably priced. Concepts are very well explained. While most other
books are vague and make c++ appear like a monster (or do not deal with the
difficult parts ), this book makes it interesting.
Great First C++ Book,
January 8, 1999
Reviewer:
maxcomp@itw.com (see more about me) from Philadelphia
This book was invaluable in my experience with C++. I recommend it to anyone
trying to learn C++.
Inside, learn to:
This unique reference shows you how to prevent problematic procedure-oriented and object-oriented code and handle ActiveX, COM, STL, and MFC coding problems.
"Great advice with practical, real-world examples. C++ programmers will avoid all kinds of headaches with this book." --Elden Nelson, Editor-in-Chief, Visual C++ Developer's Journal
Paperback - 832 pages (September 1999)
MacMillan Computer Pub; ISBN: 0789721422 ; Dimensions (in inches): 1.93 x 9.07
x 7.36
Amazon.com Sales Rank: 7,504
Good book, Focuses on how
to use the IDE to access MFC, May 14, 2000
Reviewer:
Reader (see more about me) from
This is a great book for learning how to use the VC++6 software, and in so
doing, gain an understanding of how to use the easy stuff (like controls). It
doesn't do a lot to teach the syntax of C++, so if you want to know the key to
the language, this isn't the book for you. If you want a genuinely first class
tutorial on how to use the VC++6 software, this is it. And surprise surprise,
what code there is actually works (anyone who's read a few computer books
knows how rare that is!). To say that it will teach you intermediate C++ in a
few chapters is however an exageration. I've read some other C++ books (and
been programming several years in other languages) and as far as the actual
C++ language goes, this book is about as basic as it gets. But even so, it's a
great tutorial for the software and intro to basic MFC.
A revelation!, July
4, 2000
Reviewer:
Andrew Norris (see more about me) from
If I see one more hack write their version of Microsoft Documentation
Regurgitated I think I'm going to lose my lunch. Fortunately, this isn't one
of those. This book differentiates itself by what it leaves out--you won't see
nook and cranny of Visual C++ covered, and you won't get 800,000 lines of code
free on the CD. Instead, it picks out the key features you really need to know
to start getting a handle on Visual C++, and covers them clearly and
thoroughly.
This book assumes you know how to write C++, and it assumes you understand object oriented programming, so it doesn't waste your time trying to rehash them. If you don't know these things, get a different book. But if you know the language but are new to MFC and the specifics of Visual C++, you'll find yourself able to put together a program in surprisingly short order.
At first, I was surprised and alarmed by the fact that it contained no CD of sample code like I'm used to seeing. But upon reflection, this makes perfect sense. Many of the nuances of working with Visual C++ and MFC are in working with the Visual Studio GUI and various wizards, and the chapters that concentrate on a topic take you through all the steps needed to create sample programs. The code that *is* used in the samples is inline in the chapter, but by creating it all yourself (rather than just opening a file on a CD), you get a feel for really using the tools.
Frankly, I always thought Visual C++ and MFC were really complicated to program in. If you know C++ pretty well, after you've worked through the chapters of this book that are relevant to whatever you're trying to program, it will be as easy as working in Visual Basic, and you'll still get all the power of a real programming language.
Of course, if you're looking to do low-level systems programming in Windows
or tackle other advanced areas, this book isn't going to tell you how to do
it. But it will make hooking up the front-end GUI, connecting to a standard
ODBC database, and other common tasks quick and painless, so you can spend
your time concentrating on the hard parts.
Copyright © 1996-2007 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
Standard disclaimer: The statements, views and opinions presented on this web page are those of the author and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.
Created May 16, 1997; Last modified: February 28, 2008