|Home||Switchboard||Unix Administration||Red Hat||TCP/IP Networks||Neoliberalism||Toxic Managers|
May the source be with you, but remember the KISS principle ;-)
Skepticism and critical thinking is not panacea, but can help to understand the world better
|Selected Computer Books||Classic Computer Books||Intermediate||
(optimization, pointers, memory management)
(STL, IOstreams, etc)
|Best books about C++ debugging||O'Reilly CD Bookshelf||GCC||Open books||Best Compiler Construction Books|
|C++ as a Multiparadigm Language (without OO overdose ;-)||The Art of Debugging||C++ Humor||Etc|
Unlike C, which was an interesting blend of simplified PL/1 and BCPL pointer arithmetic, but still was/is a pretty simple language, C++ is a complex programming language, actually more complex than PL/1. The latter got a bad name in 70th from structured programming and verification zealots because of complexity, accusations that now looks like a joke. To a certain extent all C family of languages can be considered as a PL/1 family as well. If you accept this, than one can think about C++ as a revenge, an coupe to raise the complexity of C back to ( and then above) the PL/1 level :-). But C++ in some respects (exceptions, strings, etc) is still inferior to the prototype :-(. C++ was influenced by Simula67 but unlike the latter, C++ does not support coroutines and this is a major drawback from my point of view. Exception handling is pretty primitive. Garbage collection is not automatic and here C# might have an edge.
C++ supports a wide spectrum of diverse programming paradigms (especially after the revamping occurred in the last five years period) and countless high- and low-level techniques from its C heritage. During the last ten years, the power factor seems to have outperformed the complexity factor in universities and many universities started giving intro programming classes in C++ which in my opinion is a big mistake. For any C++ programming course, whether or not you take C first, a good C book like "The C Programming Language, 2nd edition," Kernighan/Ritchie, might help you better understand the language.
C++ is still evolving language. To a certain extent all C++ textbooks published before 1998 should now be considered obsolete. New books based on the ISO standard started to appear in late 1998 and the standard was fully implemented in compilers only in early 1999. That means that any non-introductory book should better be from this century, not the last century ;-)
Universities (and even community colleges) usually propose three courses for the language:
introductory, often called Programming I (sometimes called OO programming)
intermediate, often called Programming II (sometimes called Advanced OO programming)
advanced, usually called Algorithms & Data Structures (even if instructor spends more than half of the time explaining templates and STL ;-), C++ and Data Structures or C++ Patterns or something like this depending on the current fashion.
While those three courses definitely require different books, due to complexity of the language you probably need three or more books for each course as no book explains all C++ topics equally well: difficulties you will encounter trying to understand a particular construct might be cut in half or less if the book explains those things well. For example, for the intro course my recommended troika would be:
Each of the have unique strength and weaknesses. All of them can be bought with deep discounts (non-latest editions, just for peanuts). But in any case you need at least one book that contains lists of typical C++ related pitfalls and beginners errors like in A First Book of C++ From Here to There. See C++ Debugging. Due to included files and related macro generation, diagnostics in C++ compilers is notoriously bad and without a good list of typical errors (and maintaining your own) you might be a toast pretty soon, unless you can hire somebody to debug your homework and projects ;-).
For the same reason the availability of all examples from the book from WEB or CD is a must: it's much safer to create your own programs by modifying the existing examples, that typing them from scratch . Bu reusing already typed code you can avoid some typical but badly diagnosed C++ errors like omitting a semicolon after the class declaration. etc. I never understood students who type examples from the book. This is not a course in typing, you better copy and modify the example in question and try to spend more time in the debugger trying to understand underling concepts and semantics of C++ constructs.
Be skeptical. Suggestions below should be critically evaluated, but for introductory book published after 1999 the core changes are not that significant and often the quality of the author presentation matters more than the level of adherence to the latest changes in the C++ standard or the latest fashion like programming patterns.
You can also get comments from others about any C++ book in the comp.lang.c++ newsgroup. If you're not sure if this is the book for you, try posting an inquiry there, and you might get some good feedback.
Please remember that C++ is not the best first language and although it is possible to go from knowing absolutely nothing to being an entry level C++ programmer, it probably will take for average person at least two years. Learning C before C++ can shorten this period, sometimes substantially: C is a simpler language and thus more suitable for the intro course.
Aviod books that claim otherwise. Unless you have really great natural abilities you probably will end with a lot of frustration. Learn slowly... Do not rush to kill your interest in C++ or programming in general, if any ;-(. The problem here is that to master the language you need to conceptualize a lot of things and to write a lot of code and that takes time -- really a lot of time, I mean years...
The best introductory C++ books treat C++ as a better C (see for example C++ Primer Plus or A First Book of C++). And IMHO this is the best way in the circumstances, although nothing prevent you from trying to learn C on your own in parallel with the C++.
Please avoid object-oriented fundamentalists. Object oriented constructs are important and need to be understood, but they are not all that the language contain and far from what should be used in each and every case like some stupid teachers are trying to enforce on unsuspecting students acting against their own and students' interests. Please note that stupid person is not necessary is an idiot; on the contrary he/she can be quite an intelligent person:
Stupidity is not the same as a lack of intelligence...It's an independent dimension, quality of its own. It's unwitting self-destruction, the ability to act against one's best interests... It's a typical programmers talent.
C++ is a multi-paradigm language and you can use different approaches depending on the task in hand, you do not need to be married to OO, unless you really want to ;-). For example in his paper Object Oriented Programming Oversold! B. Jacobs wrote:
OOP became popular primarily because of GUI interfaces. In fact, many non-programmers think that "Object" in OOP means a screen object such as a button, icon, or listbox. They often talk about drag-and-drop "objects". GUI's sold products. Anything associated with GUI's was sure to get market and sales brochure attention, regardless of whether this association was accurate or not. I have even seen salary surveys from respected survey companies that have a programming classification called "GUI/OOP Programming".
Screen objects can correspond closely with OOP objects, making them allegedly easier to manipulate in a program. We do not disagree that OOP works fairly well for GUI's, but it is now being sold as the solve-all and be-all of programming.
Some argue that OOP is still important even if not dealing directly with GUI's. In our opinion, much of the hype about OOP is faddish. OOP in itself does NOT allow programs to do things that they could not do before. OOP is more of a program organizational philosophy rather than a set of new external solutions or operations.
In his old Usenix paper Objecting To Objects Stephen C. Johnson wrote
Object-oriented programming (OOP) is an ancient (25-year-old) technology, now being pushed as the answer to all the world's programming ills. While not denying that there are advantages to OOP, I argue that it is being oversold. In particular, OOP gives little support to GUI and network support, some of the biggest software problems we face today. It is difficult to constrain relationships between objects (something SmallTalk did better than C++). Fundamentally, object reuse has much more to do with the underlying models being supported than with the object-ness of the programming language. Object-oriented languages tend to burn CPU cycles, both at compile and execution time, out of proportion to the benefits they provide. In summary, the goods things about OOP are often the information hiding and consistent underlying models which derive from clean thoughts, not linguistic cliches.
Please remember that for any book you need to get a good compiler. Among them: Intel C++ compiler (free for adacemic use, Visual C++ 6.0 or .Net academic edition or at least Borland free C++ compiler available from the Borland site). Using gnu C++ compiler is possible but that's a more difficult path. Even on Linux, Intel C++ compiler should probably be used instead.
Despite its usage in Ms Windows, even question whether C++ is a viable alternative to C as a system programming language is still open to debate. There is an influential school that claims that combination of C with the scripting language (for example TCL) will get you farther and faster that plain-vanilla C++. TCL is probably the most underutilized language that any C++ programmer can benefit from. Expect is perfect testing tool for majority of C++ programs. See also DejaGnu
From the other hand for a lot of problem where speed is not that critical Python or other scripting language are as good as C++. But easier to debug because you need to write less lines of code (higher level languages in academic speak ;-) . Please beware that Java took a simplistic approach of enforcing OO as the only implementation paradigm and its JVM (Java Virtual Machine) is useless in many practical situations (server side Java is one example). Foe more skeptical information about Java please see Java links
You can walk around this limitation by using some Java compiler, but bad taste remains. Also the quality of diagnostics in Java is as bad or worse than in C++. Moreover debugging of complex errors in Java is very problematic and needs good knowledge of VM internals (Java uses virtual machine and that means that even if you know assembler for a particular platform you will not be able to debug on machine level directly). If you do not believe me ask any professional Websphere developer and he/she will tell you a couple of impressive horror stories in no time :-).
See my C++ links and Skeptical OO links for more information and a critical discussion about OO benefits.
Many C and C++ experts recommend against using any book written by a certain Herbert Schildt. To see why, read the answer to question 16 of the C++ FAQ. The "Dummies" series of books is not particularly well-regarded either.
[alt.comp.lang.learn.c-c++] - FAQ list
15: What are the best books I can learn C++ from? Before going further, I should mention that I am not a C++ programmer myself, and the recommendations listed here are based on positive comments I have heard from others. The C++ equivalent of K&R2 is "The C++ Programming Language", 3rd Edition, by Bjarne Stroustrup. Experienced C++ programmers love it; however, many beginners seem to find it very hard going indeed. Like K&R2, it assumes basic familiarity with programming concepts and is not really intended for the absolute beginner. It does not assume any previous knowledge of C. http://www.research.att.com/~bs/about_3rd.html A more accessible book that is intended for beginners is "C++ Primer", 3rd Edition, by Stanley Lippman and JosИe Lajoie. This book is thorough, and conforms to the C++ standard. It is reportedly extremely clear and detailed, and, again, does not assume any previous knowledge of C. Another text I've seen particularly recommended is "C++ - How to Program", 2nd Edition, by H M Deitel and P J Deitel. Again, this text does not assume prior knowledge of C. Other texts I have seen recommended a number of times on the C++ newsgroups include the badly-named-though-often-recommended "Teach Yourself C++ in 21 days" by Jesse Liberty, "C++ Primer Plus" by Stephen Prata, and "Thinking in C++" by Bruce Eckel. Bruce Eckel has also placed a "beta" of the second edition of his "Thinking in C++" online as well. Do remember that it isn't the final version and that there might remain some as-yet undetected errors. The C++ FAQ contains some recommendations for C++ books as well.
Dr. Nikolai Bezroukov
- Paperback: 1110 pages
- Publisher: Sams (May 1, 2000)
- Language: English
- ISBN-10: 0672318954
- ISBN-13: 978-0672318955
- Product Dimensions: 7.4 x 2.4 x 9.1 inches
- Shipping Weight: 4.2 pounds
Christopher Culver TOP 1000 REVIEWER on September 9, 2002
Solid language tutorial, but not really dedicated to Linux
TEACH YOURSELF C++ FOR LINUX IN 21 DAYS, while it may seem the ideal book to the budding Linux programmer because of its size, is a poor book for the beginner, and indeed for most programmers hoping to use C++. The book is a so-so introduction to C++ the language, but doesn't offer any useful Linux-specific information (if you want to program in Linux, you probably already know what vi and emacs are, and how to open a command-line). The CD-ROM, containing a distribution of Mandrake Linux, is three years old and thus already ancient compared to today's Linux scene.
The book is not really a "21 day" course, but rather a course made up of 21 units. Some units are too big to tackle in one day, such as the chapters on references and error-handling, unless one has 8 hours to dedicate to this. I'd say three months is a reasonable amount of time to complete this book.
When this book came out, in 1999, the K Desktop Environment (KDE), programmed in C++, was the most popular desktop and thus budding programmers could find plenty of code to work with and improve. In the years since, however, the GNOME desktop, programmed in C, has gained ascendency among power users, and is now the default in many distributions. So, learning C++ on Linux nowadays as a first step in programming gives one very little to work with, as C is the primary language. While in many operating systems one doesn't have to learn C before C++, in Linux it is almost essential because the kernel, most if not all GNU software, and GNOME programs are all in C. So, for the beginning Linux programmer I'd advise first going through Sam's C FOR LINUX PROGRAMMING IN 21 DAYS. Afterward, one could use this book, or ideally a more Linux-centric book, to reap the object-oriented benefits of C++.
Unfortunately, it is quickly apparent that TEACH YOURSELF C++ FOR LINUX IN 21 DAYS is actually just Sam's TEACH YOURSELF C++ in 21 DAYS with a couple of token references to the GNU Compiler Collection, and a very out-of-date "bonus week" added.
This becomes particulary obvious as every chapter has talks about how to compile each example on, of all things, DOS. Another problem stemming from the fact the most of the authors aren't Linux programmers, one that consistently shows throughout the book, is the authors' lack of familiarity with free software and the GPL.
As a result, the chapter on software design shows a process best suited to the programming department of a corporation, where everyone can get together every morning to discuss the project, and this would not be very efficient in the Linux world of international contribution over distance. A glance at the authors' experience shows they may not be dedicated to ideals of the GNU Public License and open-source software, for example Jesse Libery is now consulting on the .NET project. I would urge anyone wishing to program on Linux to use resources written by actual Linux programmers.
Bottom line, get Sam's C FOR LINUX PROGRAMMING IN 21 DAYS first if you're a beginner. If you're an experience programmer who already knows C, this book may be helpful, but it has its problems.
- Paperback: 848 pages
- Publisher: Que (December 6, 1999)
- Language: English
- ISBN-10: 0789721538
- ISBN-13: 978-0789721532
- Product Dimensions: 9.1 x 7.4 x 2 inches
- Shipping Weight: 3 pounds
Micah Cowan on July 28, 2000
While this book *was* helpful to me as a reference, I could never, ever recommend this book to anyone, least of all beginners. It is horribly inaccurate - he even claims that the NULL macro may be used as the 'null' termination character - and then complains that many compilers don't properly allow that without giving errors! (NULL is only for the use of null pointers). There are numerous cases where his lack of understanding in certain areas could lead beginning programmers down very bad coding paths, causing buggy or insecure code.
On the plus side, he covers linux-specific issues of programming C++ very well, especially the use of emacs and gdb. I have found it useful despite it's flaws, but would contend that it is only worth reading to someone already quite fluent in C, so s/he may avoid the pitfalls that this book just walks right through.
booklover on December 18, 1999
Excellent self-contained introduction to LINUX and C++
This book comes with the LINUX operating system and a full program development environment on CD.
The book does not require any previous knowledge of C++ or LINUX or UNIX or the GNU tools. All commands are carefully explained. It even explains how to use a Zip drive with LINUX. It even explains how to work around certain bugs in gdb.
The book uses the step-by-step approach, with fully worked exercises in the text. All the code in the text comes on CD ROM. At each point in the learning process, the reader produces working code.
There are helpful notes and warnings that are highlighted to emphasize their importance.
It is both a tutorial and a reference, 800 pages of solid information. A full reference on every aspect of C++ on LINUX would take thousands of pages, and the book refers to the on-line LINUX documentation for topics (such as calloc) it does not cover in depth. The choice of the topics covered seems excellent. One will be quite competent in C++ if one works one's way to the end of the book.
The one thing I find questionable is the author's choice to teach Xlib and V rather than the more popular GTK. On the other hand, covering GTK requires its own book, and an introductory book has to draw the line somewhere at what it teaches.
I should also point out that there are lots of programming languages one can use on LINUX besides C++, for example, Perl, Java, Python, and Tcl/Tk. I don't mean this as a criticism of the book but if you want to start LINUX programming and you are new to programming one of these languages might be a better place to start since they are easier to learn than C++.
As an ad says in the back of the book, Welcome to the Revolution.
Que classifies the knowledge level as Intermediate . This is fair. While the book is self-contained, some knowlege of how to program and "computer maturity" will be very helpful.
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
Austin, TX USA
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.
Stanley B. Lippman / Paperback / Published 1996
Read review in ERCB
Paperback - 889 pages (September 1999)
MacMillan Computer Pub; ISBN: 0789721449 ; Dimensions (in inches): 2.09 x 9.27 x 7.42
Rob McGregor is a seasoned expert in C++, specializing in business and 3D graphics applications for Windows. He has nearly 20 years of programming experience and is the founder of Screaming Tiki Interactive, a software development company. He wrote Peter Norton's Guide to NT Programming with MFC, and coauthored Peter Norton's Guide to Windows '95.
A reader from Tampa, FLPhil (see more about me) from Woodstock, GA United States
Excellent learning tool! Finally!, August 6, 2000
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.great for beginners, March 8, 2002
I gave this book 5 stars, even though it doesn't completely cover C++, and here's why: it accomplishes what it sets out to do. Like the back cover says: "Instead of ... having you gain mastery of C++, this tool focuses on ... the most commonly used features." It doesn't get into advanced topics, like multiple inheritace. It keeps it simple, and as a result it's very easy to read and understand. It helped me big time in college.
The only warning I would give is that the author is used to programming in a Microsoft environment, and so he uses conventions like prefixing class names with a "C" and pointer names with a "p", a few examples use the Visual C++ IDE, and many screenshots are of Windows message boxes, etc. But the code is largely standard C++.
Paperback - 523 pages (April 21, 2000)
Osborne McGraw-Hill; ISBN: 0072125195 ; Dimensions (in inches): 1.29 x 9.05 x 7.41
Amazon.com Sales Rank: 293,721
Avg. Customer Rating:
Number of Reviews: 3
Free code: debuggingcplus.zip
Prevent problematic code and fix bugs with help from the expert techniques and strategies found in this unique resource. Debugging C++ shows you how to recognize and stamp out common and little-known code bugs quickly and easily. You'll get complete coverage of procedure-oriented debugging in terms of STL and Windows applications, as well as object-oriented debugging with respect to MFC code. Software bugs cause chaos and downtime which can result in lost revenue. Save the day––use the real-world solutions in offered this handbook to prevent bugs from crippling your company's systems.
Inside, learn to:
- Optimize your code with the compiler
- Understand the differences between logical and syntactical errors
- Debug code in the procedure-oriented environment––at the command line and in Windows
- Locate, analyze, and repair object-oriented code errors at the command line and in the Microsoft Foundation Class (MFC) Library
- Handle Standard Template Library (STL) code debugging
- Work with DLLs and fix ActiveX and COM errors
- Write error-free programs from development to deployment!
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 2nd edition (June 25, 1999).
Brooks/Cole Pub Co; ISBN: 0534368018
Table of contents
Avg. Customer Review: *****
Number of Reviews: 4
***** Absolutely top notch introduction to C++, November 7, 1999
Reviewer: James Weisbin (firstname.lastname@example.org) from
New York City
In trying to make the transition from procedural languages learned years ago to C++, I kept finding myself stumped by books with indecihperable prose and leaps of logic. While authors like Stroustrup, Ellman, etc obviously know their stuff, they don't know how to explain it to the average person. This book is the best textbook that I have *ever* owned, bar none. It is crystal clear and logical from beginning to end, and assumes no prior kowledge. I highly recommend it! --This text refers to the Paperback edition.
***** A Fanastic book on the subject of C++, August 6, 1999
Reviewer: email@example.com from
I've been trying to learn C++ for a year and a half with no success. I tried the learn C++ in 21 days series and the Teach Yourself C++ by Herbert Schildt, but none of these came close the Gary Bronson's book. His style and explanation of fundamental concepts are to be be applauded. This book focuses on the fundamentals and gradually builds up your skill to a competent level. Its a great book for beginners and I guarantee you will not be dissapointed. I also purchased his other book The First Book of C which was equally good. I am eagerly awaiting his book on Java --This text refers to the Paperback edition.
***** Yavapai College uses this book to teach C++, July 8, 1998
Reviewer: Adrian Ziemkowski (firstname.lastname@example.org) from
I loved this book. I had tried to learn C++ before with no success. After reading this book I was able to get right into coding, even the class followed the book verbatum, it's that good. None of the code relied on other project in the book I didnt care about. And all the examples come on a diskette included. A great way to learn! I suggest it to anybody that wants to learn to code without OS specific APIs. --This text refers to the Paperback edition.
Day 6 -
Day 12 -
Day 13 -
Amazon price: $23.99
Paperback - 878 pages 3rd Updtd edition (March 1999)
MacMillan Publishing Company; ISBN: 0672315157 ; Dimensions (in inches): 2.05 x 9.13 x 7.45
Amazon.com Sales Rank: 2,082
Avg. Customer Review:
Table of contents (for the 3d edition)
Great Author, great primer, December 22, 2000
Reviewer: Jonathan B. Smith from Lincoln, NE United States
For an introduction to C++, I really think this is a great book. While no primer can be all things to all people, I think for most folks who have little programming experience at all or little C++ experience, this is a good choice.
Make no mistake, C++ is a very complex language and a person could spend his or her whole programming life learning different ways to solve problems with it. What I like about Jesse Liberty's approach is that he assumes no prior programming experience. He does a good job of explaining the basics and providing examples to work on.
Another thing to consider is that different people learn in different ways, and J.L. has written another book called "C++ from Scratch". It takes the approach of diving into the middle of a programming problem with an experienced programmer and learning from doing. I have both books and they both have taught me a lot.
With something as complex as C++, no one book can teach you everything. From my perspective, if you're a relative new comer to programming or new to the C++ language this is a great book.
C++ in 21 days is selling like hot cakes!!!, October 3, 1997
Reviewer: GTI7321 from Orlando, Florida
I am a new student at Florida Tchnical College and I am enrolled in the C++/Java course. Until my purchase of Jesse Liberty's " Teach yourself C++ in 21 days" I was in serious danger of failing my C++ course. In just one week of reading Mr Liberty's book I have made a dramatic turnaround. This increase of understanding has not gone unnoticed. Several of my class mates have gone out and purchased a copy of the book and have asked the school to consider adding the book to the curriculum. This book is the best so far for the new programmer. My professor has also purchased a copy of the book and is encouraging students in his other classes to do the same. Thank you very much Mr. Liberty for sharing your knowledge of C++ in such a comprehensive way! The knowledge gainned far over rides the Typo's. Future C++/Java programmer! --This text refers to the Paperback edition.
excellent foundation, with templates & uml, October 31, 2000
Reviewer: Norman Bo Graham from Morristown, NJ United States
my experience is the following: I have been a C/C++ programmer for 11 years.
my reason for purchasing the book is the following: When I went on interviews lately, I realized that my experience was more C then C++, and I had no UML or template (stl) knowledge. (I DIDNT EVEN USE INHERITANCE!). This is what happens when we keep our noses to the grindstone for too long. I purchased this book fully expecting to return it, but will not (it's an inexpensive great book). I am almost ashamed to admit, I quickly purused most chapters but took three pages of notes, of things I did not fully know.
You should expect the following from this book:
* An up to date intro to C++ (only experience will make you a C++ master).
* To spend beween 21 and 63 hours to read the entire book. (see the sams note above that some lessons may take you 3 hours).
Remember that C++ is still evolving, and this book can provide you with an uptodate intro, for a sawbuck and change. I am truely impressed by this book, and it's value. When I have no more use for the book, I may consider donating it to the local library, as it's probally timeless in some respects.
As for UML, it is the greatest thing to happen to C++ since the Booch notation was the flavor of the month (some sarcasm there). Seriously, UML is a must know, because the UML tools allow easy integration into your language of choice right now. Rational Rose has created documentation, that prototypes your code for you, the world is a great place right now!. This book, gives you an intro of all the UML you'll need to know to start using it right away.
As for templates, they are just wonderful. This is one of the coolest things to happen to C++.
One of the other reviewers refered to the beast of C++, yes, C/C++ is a beast, but it is a language like most others. When you break down the walls of "i'm an z programmer", then you will realize that your mental skills transend the language, and your a problem solver, with debugging skills. C++ is a beast, and this book will allow you to pick up the foundation in 21 courses!
Great intro to OOP and pointers, but take your time, January 5, 2000
Reviewer: mniesen (see more about me) from
Any review is only useful to people with similar backgrounds, so here is where I came from: 1 semester of a beginning (non-comp sci major) university C++ course, a lot of (gasp) FORTRAN, a little PASCAL, and some BASIC.
I used the 2nd edition of this book which had a lot of code errors, although I found that finding the errors was also an excellent (unintended) learning experience, even if it did take me longer to get through the book and cause some undo frustration.
Pretty much every topic is backed up with code examples, which really helps me - a hands on type of person. I took extra time and went over some sections more than once to get a good hold on the info, especially pointers and the object oriented sections like inheritance and polymorphism. These topics can be confusing for people without experience in C++, so I wouldn't expect to get it the first time -- expect to spend extra time on some subjects, especially the traditional killer of C/C++: pointers! I know feel like I have a very good understanding of how they work.
After reading this book, I went on to do a lot of WindowsAPI and XWindows programming and found the foundation I gained from this book invaluable.
This is definitely a masterpiece!, July 12, 2000
Reviewer: Ivan (see more about me) from
Saint Petersburg, Russia
Hmmm... It's always difficult to write a review about such a good book. But let me explain... I'm a former C programmer who once decided to learn C++. And I decided to start learning from the very beginning. It was really difficult to choose a book for that purpose, cause amount of C++ tutorials is really huge. But finally I made my choice. I choose "Teach Yourself in C++ in 21 Days".
Why did I do that? Because this book was written by Teacher. It's very easy to read and understand, but in spite of simplicity it's really comprehensive. Every word is on it's place, every example of source code is well thought-out. I have seen some reviews blaming this book for something, but I'm sure - if you have some brain and are ready to think and learn this book will help you. I do recommend this book to EVERYBODY.
Starts Well, Gets Confusing, March 25, 2000
Reviewer: Geoff Thornton (see more about me) from
The book starts well enough for the first several chapters and gives good examples that are relevant to the topic
However as the book progresses the author delves very quickly into complex programming examples and explanations that gloss over a lot of subject matter and soon leave the begginer scratching his head.
Some of the examples are indeed too complex for where they are placed in the book, for example the example on strings makes use of passing references to a function, which hasn't been covered yet leaving the beginner scratching his/her head trying to figure out what's going on without understanding the program.
This book is best used as a companion book to other C++ references.
From Wright brothers to rocket science!, June 11, 2000
Reviewer: Jim Frerichs (see more about me) from
My boss gave me the assignment to learn C++. He gave me a couple of books that he though were good. I banged my head against the keyboard many a night in pure frustration trying to absorb the material and searching the Web for additional help. I next tried an on line computer course by a noted and popular school. Everything was geared to people who already knew C. The material was dated. It was like trying to learn rocket science by studying the notes the Wright brothers wrote when they were trying to figure out which way a propeller should turn.
I finally came across Jesse's 3rd edition of "Leaning C++ in 21 Days" and life if beautiful again. His examples and easily read text gave me the knowledge to read code, and more important to understand it. The book takes the time to explain terms, definitions and the why's and wherefores of the C++ language. Particularly interesting to me was memory management and why I should be concerned about it. I no longer bang out code that "just" works. I assimilate the books ideas into programs that one may call an art form.
You will never know how grateful I am to have this book as a resource. I have scribbled in the margins, highlighted, dog-eared, paper clipped important pages, made a file of example programs and on long study nights used it as a pillow. I can't wait to get "C++ Unleashed" and abuse it in the same loving way!
If you don't have prior programming experience this book is a must. If you are a C programmer you need this book to get with the new way of doing programming!
The Beginning C++ Book To Use!, August 7, 2000
Reviewer: cc00001 (see more about me) from
Las Vegas, NV
Mr. Liberty is one of the foremost authorities on C++ and at the same time is an excellent, methodical teacher. This is the book to work with if you're just starting out. As with most disciplines, everything builds on the basics, so go slow and make sure you understand all of the material before moving on. All of the basics are covered most thoroughly and are very understandable. This book will prepare you to go in any direction as a C++ programmer, be it Windows, Linux, Visual C++, etc... In fact there's now a Linux version available. Highly recommended!
Paperback / Published 1998
Amazon price: $31.96
Amazon.com Sales Rank: 3,772
Avg. Customer Review:
Number of Reviews: 73
Far and Away the Best Book for Teaching Yourself C++, May 17, 2000
Reviewer: A reader from
It's a little sad that this is truly the best book there is for learning C++ on your own, because Steve's teaching method is good but the format is still a little shaky.
The way the book is presented, with the discussions with a complete novice (Susan) is at times helpful, unless you do understand what is being discussed. If you use this book (and you should), and you understand what Steve is writing about (and most of the time you will), when you get to the discussions he has with Susan, skip them! Her bone-head questions will only get you confused again!
The idea is good, it's true. It really makes you feel like you're in a classroom setting and Steve is teaching you and there is some classroom discussion. However, it is as if there is one really, really big-mouthed dumb chick sitting in the front that never shuts up and keeps asking the same stupid questions again and again and again! Just when you think Steve has pounded a topic so far into the ground that no one will ever see it again, we find out that Susan still has no idea what's going on! Arrgh! :)
Get this book!!!!, June 18, 1999
Reviewer: A reader from
You will not be sorry with the purchase of this book. I have spent considerable money on many 'Teach Yourself' titles, only to find myself giving up half-way through, or still feeling bewildered at the end. Most books really only teach you the constructs of a language, and really do not delve into the basics of programming. Here is one exception. Steve Heller makes no assumptions of the reader's experience, except that they have a willingness and desire to learn, and can at least issue commands at the DOS prompt. The journey takes you through the inners of your computer, looking at programming firstly at its lowest, then its highest level, using C++ as the language. What makes the book even more unique is the inclusion of an email tutorial between Steve and his now wife Susan, who was a complete novice. She often becomes bewildered with Steve's explanations (even though they are very clear), and he draws out the explanation until she understands. In this way, no reader should finish the book without a fundamental grasp in programming. The book does not make you a C++ programmer - it merely acts as a starting point, giving you enough to be able to go onto more advanced material. If you have any interest in programming yet have found it difficult to get started, do yourself a favour and buy this book - you won't be disappointed.
A necessary read, regardless of your background., July 13, 1998
Reviewer: A reader from
This truly is one of the finest instructional books I've ever read. The author makes a bold statement in the world of technical instruction by approaching a difficult subject in a totally original manner. I've read many technical books targeted at various experience levels and the majority fall into one of two categories; the "light-hearted, light-coverage" category and the dry, "IBM-style Technical Reference Manual" category. This book defies either and for that matter any category. Certainly, it is an excellent tutorial for beginner programmers or C++ newbies. Besides excellent coverage of the basics, it is one of the few books targeted at the beginner that details the inner workings of the machine. However, this book is also essential reading for technical writers, trainers, and departmental mentors as well, regardless of the languages or tools they use. Heller teaches much more than C++ in this text. For instance, excellent examples of transferri! ! ng technical knowledge to others can be found throughout the text, as he includes an extensive one on one dialogue with an absolute beginner. For the astute reader, there's much more that can be gleaned from this book than most other programming books. This is a real find!
If you want to learn C++, skip this, and buy a good book., December 16, 1998
Reviewer: A reader from
This book is best viewed as two halfs. The first half was actually not too bad giving the reader a quick course in computer rudements. Then something happened, I think the author did a word count and found he was half way through the amount of book he had agreed to write. The problem was that he was only about a tenth through the material he wanted to cover. The resulting chaos is a mix of too much detail, too little detail and great gobs of print devoted to his "reader" and her confusions. One is left wondering what the purpose of the book was. It was certainly NOT to teach anyone C++! The signal to noise ratio is incredably low. And at the rate the author uses you would need about 20 of these books to get the fundamentals of the language. The author himself admits that the book covers only about 5% of what one would need to program. Add all this to a writeing style that is at best, annoying, and this book is pretty much a waste of time and money. Ive read 5 books recently on the subject and this one is at the bottom. My recommendation to the determined student would be to learn the language elsewhere, from the ground up. To summarize: The first half is not too bad and should have been a seperate book on computer rudements. The second half is a chaotic mix of too quick, too slow and too much "reader". A waste of time and money.
Paperback - 889 pages (July 1998)
Que; ISBN: 0789716674 ; Dimensions (in inches): 1.77 x 9.06 x 7.33
Amazon.com Sales Rank: 252,911
Avg. Customer Rating:
Number of Reviews: 9
table of contents
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 text or support text. But I found very simple 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 to OOP
Good C++ introduction - but a little simple!, August 31, 1999
Reviewer: Nikolay Qviller 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: email@example.com 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: firstname.lastname@example.org (see more about me) from Philadelphia
This book was invaluable in my experience with C++. I recommend it to anyone trying to learn C++.
- Paperback: 800 pages ; Dimensions (in inches): 2.33 x 9.02 x 7.58
- Publisher: SAMS; 4th edition (December 15, 2001)
- ISBN: 0672322234
- Other Editions: Hardcover (3rd) | All Editions
- Average Customer Review: Based on 88 reviews. Write a review.
- Amazon.com Sales Rank: 5,585
Updates & Corrections
This very good book that contains a little bit more information than a newcomer to C++ probably can digest in one semester course (even at the university level).
Still this is an extremely good deal. Not only the book itself is very well written and has an excellent typographic quality. Despite its very low ($28) price this is a 1040 pages brick with CD/ROM that contains a nice and pretty rare for an introductory book product Metrowerks CodeWarrior Lite - Cross platform edition (if you buy separately a learning edition 2.0 it will cost you $49). Book covers new ANSI Standard.
Generally this is a good all-around C++ book. Examples are downloadable from Waite Group's C++ Primer Plus Third Edition. This is one of a few books on C++ that does not presuppose substantial C knowledge and first eight chapters (almost 400 pages) are introduction to a "better C" .
Lots of good examples. Each chapter has a review questions (usually 10-15 questions on the contents of the chapter, to which the answers can be found in an Appendix) and a programming exercises section.
Loops are explained using flowchart which is an optimal pedagogical method for this constructs but exceptions were not even mentioned in the chapter.
As for complex features of C++ it's unrealistic to expect that one book can provide the best explanations of all such features. Initially an author is stronger in a particular subset of them and is weaker in another. Here is my estimates of the quality of explanation of particular features:
- static variables -- very good
- namespaces -- excellent
- classes -- weak. Stock.cpp program on p. 384 is too complex (more than one page in length). It overplays the American preoccupation with the stock market :-). I think that such a length is a blunder and explanations are weak too. A car or employee examples are probably better as an introductory for classes. IMHO Jesse Liberty has a substantial edge here.
- friends functions explanation really sucks. It is somewhat artificially bound to overloading of operators.
- inheritance is explained very well with a proper attention to the initializer lists in constructors. Actually here Prata is better than both Liberty and Bronson. The assignment operator problem is also explained well.
- virtual functions -- OK
- multiple inheritance -- OK,
- templates are explained well and the importance of templates for the code reuse is properly stressed,
- exceptions -- late but above average. Rather complex question of stack maintained after exception are addressed well, but the concept that exception are stooped coroutines never appeared in the text. Author does mention the possibility of using exceptions as a control structure mechanism, for example for i/o controlled loops but gives no examples. Problems with C++ exception model are not shown at all and exceptions interference with stack model is shown inconsistently.
The programming exercises at the end of every chapter are decent and worth doing.
The book offers a nice balance between the theory of C++ and the practical aspects of programming. I generally agree with one of the readers reviews:
This book is unique in that no assumption is made of the reader's prior experience, and yet it is not "C++ for dummies". You will learn more from this book than you would from several good courses in C++ and OOP. "
On the negative side I would like to mention that problems with C++ as a language and C++ object model are almost completely omitted from the book. There is no list of pitfalls after each chapter and that diminishes usefulness of the book for a newcomer. That might provide readers with the false sense of security (the authors does mention that multiple inheritance is a tricky thing, but gives no details). The complexity of features is also not discussed and many readers feel that after more of less manageable first 12 chapters they are thrown into a tar pit and every movement forward became so difficult and slow...
Exceptions, which are IMHO one of the central advantages of C++ over C, are introduced late and are covered weakly. It's not even a separate chapter (they are covered as a part of Ch. 14 pp 690-720 -- in just 30 pages). Interaction exceptions with other features of the languages is not discussed. The book completely avoid C++ history and without historic context it's difficult to understand why a particular feature was introduced into the language and how it interact with preexisting features. Here exceptions and templates are two examples that were introduced into a language late and conflict with some preexisting features and solutions.
Here are some relevant Amazon reviews:
Great Coverage, October 20, 2000
Reviewer: Philippe Remy (see more about me) from Newport, NSW Australia
This must be the first book on programming that I actually managed to read from start to finish, and I have tried a few.
Very good coverage of a great deal of subjects, very easy to read.
The explanations are very clear, most examples are very illustrative, and yet easy to follow. I do recommend anyone reading the book to try the examples on their own (well, with a little peek in the book when in doubt...).
The book also highlights potential compatibility issues between compilers (such as GNU G++, MS VC++ 5.0,...), which is great and helpful when trying out the examples. I personally used GNU G++ in a Linux environment, and found most of the examples working as presented in the book (only a few exceptions, especially in Chapter 15 on the STL).
Each chapter has got a review section with 10-15 questions on the contents of the chapter, to which the answers can be found in an Appendix.
The writing style of the author is very natural: everything seems logical, and plain simple (most of the time).
The examples are sometimes too simple to my liking, but then again, that is a very subjective topic.
A few remarks:
- As has been highlighted by other readers, there are some typos, but not that many (some would say that one is one too many, but after having read the "SAMS Teach Yourself Visual Basic in 21 days", I really don't feel like complaining about "C++ Primer Plus);
- While the first 12 chapters are "light", the last 4 are not for the faint-hearted: the material covered is indeed heavy, and requires a lot of concentration. I found that I spent at least as much time on "studying" these last 4 chapters as I did on the rest of the book;
- Some examples in the text do suffer from inadequacies, and if you try the example code as it is in the book, you get compiler errors. This remark does not apply to the "full listing" examples, but to small code snippets within the text body. Most of the time, these inadequacies are obvious and do not impact the understanding;
- Some chapters do not go into enough detail (again, to my liking, and again, it is subjective). An example is the coverage of Exceptions: there is very little in the book about the interaction between exceptions and constructors, and yet, I would have personally thought pertinent to give a few examples of the types of exceptions a constructor can throw. In particular, there is no mention of the impact of throwing an exception from within a constructor.
These are the reasons why I did not give 5 stars, but the book is, by all means, a reference that I am sure I will go back to time and time again.
Enjoy the reading.
Definitely for Beginners, June 4, 2000
Reviewer: A reader from
This book was written for the beginner. If you have never seen C++ or any other computer language before or don't even have the slightest idea of computers, then read this book. The other customer reviews who gave this book a one star wrote their opinion from a professional point of view -- which is not the intended audience of this book. If you are an expert on C and C++ read another book. Beginners need a simple picture of C++ not tedious paragraphs. To understand the basics of the C++ language, a beginner needs only two things: 1) A simple summary of the command, and 2) an example. Unless your IQ is less than zero, then you will need extra help. C++ is a very complicated language; in other words, learning C++ is a never ending process -- you can be a professional and still learn new things about it; you can be a Phd. professor and still search for an explanation; you can even be working for Microsoft and still make new discoveries. As beginners, we want something quick. This book is like the first step on a long stairway. And if the beginner decides to pursue the depths of C++, the best resource would be your peers, colleagues, professors, and nowadays, we have the internet -- websites and chatrooms galore. All you have to do is ask. Besides, like basketball, the C++ language is self learned -- beginners need practice, practice, practice.
Clear, concise, and easy to read while staying informative., January 31, 2000
Reviewer: Robert Gamble (email@example.com) (see more about me) from
As a newcomer to C++ (and C), I had a previous background in Pascal and Quick Basic. I had looked through numerous books on the subject before checking the reviews here, and decided to pick up this book as my basic tutorial. One of the things that decided the issue for me was the apparantly extensive discussion of Classes and OOP.
Having had the book for 2 weeks now, and working through it while nailing down three jobs, I have to say that the money was well worth it. Complete examples are given, along with notes for the programs, for each new command and concept. The notable exception has been on the early section covering data formats similar to structures (Unions and Enumerations). I found this section to be confusing and thus skimmed it with hopes that they will be explained later.
The exercises in the back of each chapter are actually fun, mainly because they're manageable. As a side note, I do wonder how much material in this book overlaps that of the Waite's Guide to OOP using C++, since I am also thinking about getting that book. Any comments on this would be greatly appreciated (my e-mail is listed in this review).
A great book for beginners, March 15, 2000
Reviewer: Neurite from
When I am writing this review, I keep in mind this is a teaching book for novices. You can't ask too much for a book at this level. A seasoned programmer should look for other books. I have to say the author does his job of introducing C++ to beginners perfectly. The stuff in the book is always simple, straightforward, easy and fun to read. No other book at similar levels maintains this style of writing so well.
This book is also relatively new. I tried most samples using DJGPP and Visual C++ 60. I found few compatibility problems. If there are, they are most probably addressed following the samples.
Paperback - 1168 pages 3rd Bk&cdr edition (August 3, 2000)
Prentice Hall; ISBN: 0130895717 ; Dimensions (in inches): 1.45 x 9.14 x 7.03
Amazon.com Sales Rank: 2,574
Popular in: Nashua, NH (#12) , Richmond, CA (#4) . See more
Avg. Customer Rating:
Number of Reviews: 40
New Edition is Over-rated, April 30, 2001
Reviewer: A reader from Nebraska
This third edition is essentially the same as the second edition by Deitel, with the exception of two changes. One being that it has a couple additional chapters and two being that it comes with a sample Microsoft Visual C++ compiler. However, be warned, this MS Visual C++ is only a sample and distribution of executables ("exes") is prohibited by the EULA (End user license agreement.) Finally, the additional chapters which are added can only be understood by the experienced C++ programmer. So, if you are just starting out, I highly suggest you save yourself some money and buy an older edition, new or used. (1st or 2nd edit.)
If you need a C++ Compiler, I suggest buying the MS Visual C++ with full rights in the EULA so one can distribute whatever programs one produces. Or, save money by downloading a free one off the Net. Your choice.
Comprehensive and up-to-date, May 6, 2001
Reviewer: Jong Hang from Kuala Lumpur, Malaysia
I am a self-taught C++ programmer and already have quite a number of C++ books, from beginner's to advanced. Like it or not, I would say this book is the most up-to-date and comprehensive coverage. Very rarely I find other books, be it beginner's or advanced that cover topics like static cast (which is essential in game programming in which I am working on now), proxy class, string and STL so well. As for the elevator simulations using Object Oriented approach, well, what can I say, they are simply superb. They are some of the examples closest to the 'real world' compare to other examples found in other books. I strongly recommend this book for any self-starter in C++.
This book is da bomb!!, March 14, 2001
Reviewer: Absar Mirza from London, England
What can I say? This book is definitely the bomb, meaning the best. I cannot understand why some people do not like this book, it's probably cos they wanna spend under Ј20 only and buy one of them cheap, lame books that don't know where they're goin'. It might be even cos' these people can't read. I am currently studying computing at Westminster university, without having previous knowledge of computers. Previous knowledge? I never touched a computer before I started university, so it is obvious I wouldn't have the slightest clue about programming. Beginning with C++ is not the best introduction to programming because it such an advanced and complex language. I looked through many books including the C++ for dummies, as I am one myself, but it is way too complex, as it doesn't teach you the basics properly and jumps onto complex topics expecting a thicko like me to know the basics just like that. Even the basics are difficult to grasp. However, this book was recommended to me by some programming geniuses, and believe me, it is definately the book I'd recommend to everyone who is as thick as me. It covers and explains the most basic element, word for word to the most complex topics, and has key points to assist you with coloured illustrations to catch your attention. This is the the book for the beginners and the advanced students or those practicing programming. Although I've been doing C++ for nearly 7 months, I still haven't got a clue, not even the basics, as I only purchased this book 2 weeks ago. However, I have learnt more in the space of 2 weeks than I have learnt in the past 7 months, so there you go!!!
Ivor Horton / Paperback / Published 1998
Amazon price: $31.99 ~
You Save: $8.00 (20%)
Paperback - 950 pages 2nd edition (May 1998)
Wrox Press Inc; ISBN: 186100012X ; Dimensions (in inches): 2.07 x 9.21 x 7.19
Amazon.com Sales Rank: 9,427
Avg. Customer Review: ****+ Number of Reviews: 10
- Paperback: 304 pages ; Dimensions (in inches): 0.79 x 9.20 x 7.40
- Publisher: Addison-Wesley Pub Co; (March 1993)
- ISBN: 0201563827
- Average Customer Review: Based on 6 reviews. Write a review.
- Amazon.com Sales Rank: 101,056
Brain embedding knowledge, July 9, 1999
Reviewer: A reader from Los Angeles, CaliforniaFor the reviewer below that stated that this book is dated because it does not cover templates could not be farther from reality, as apparently he has not read the book nor has he looked at the table of contents. If my eyes are still functional, this book has two chapters consecutive dedicated to to templates, chapter 7 [Templates] and 8[Advanced Templates]. This book is easy to read and for the novice wanting to get up to speed on the syxtax of the language and more importantly when and how to use each contruct of the language, this book has no equal except two other books. The books are Kayshav Dattatri's C++ Effective Object Oriented Software Construction and James O. Copliens Advanced C++: Styles and Idioms from Prentice Hall and Addison Wesley respectively. This book is not even 300 pages which allows you to read it again and bolster what you vacumed on the first pass and ready for instinctive mastery for the second and third passes if you are really ambitious. The discussion on smart pointers is informative and will assist you in your way to patternizing COM code. This book is for all experience types and serves as a perfect desktop reference guide for C++ masters alike. With this book and the two mentioned above, plus the C++ IO Streams Handbook by Beale, there are no other books you should refer to, probably including Stroustrup's.
Reviewer: An Amazon.com CustomerA "must read" book for C++ programmers., December 13, 1998
Robert Murray's book is fantastic. It is very useful to help a programmer progress from being a beginner to at least an intermediate level C++ programmer. After having read 2 introductory books, I was having trouble finding a book that would help me progress as a C++ programmer. All the books were too elementary or too esoteric (like design patterns). Then I found "C++ Strategies and Tactics" and my prayers were answered. It's so good that I read it twice. I strongly recommend this book. I wish a 2nd edition would come out, now that we have an ANSI Standard C++.
Hardcover - 700 pages 1 edition (January 21, 1999)
Prentice Hall; ISBN: 0023887257 ; Dimensions (in inches): 1.60 x 9.58 x 7.23
This is a very expensive and pretty boring textbook is used in many colleges for Advanced Object Oriented programming course. If you use it in Advanced Object Oriented Programming course you need to cry and run or run and cry ;-). The writing is excruciatingly dull (tedium ad-nauseum), the organization of the material is non-existent, and it has a very poor index. All of that makes getting the information you need, when you need it, very difficult (or a matter of luck).
The individual features of C++ discussed in the book are not only complex by themselves, but when put together in a program they interact in highly non-intuitive ways. The author discuss each of the features very briefly and as an isolated entity, giving the readers the illusion of understanding but avoiding discussing any non-trivial issues that arise in practice as well as typical mistakes (this fault alone downgraded the book to below average). But when they try to program using the book, they're in for a painful surprise. Actually this book has a misleading title, this an intro to STL, not so much into Data Structures.
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.
Paperback - 256 pages 1st edition (December 17, 2001)
Addison-Wesley Pub Co; ISBN: 020170434X
Amazon.com Sales Rank: 5,740
Filled with forty all-new working strategies and solutions, February 9, 2002
Reviewer: Midwest Book Review (see more about me) from Oregon, WI USA
Part of the outstanding Addison-Wesley "C++ In-Depth Series", Herb Sutter's More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, And Solutions is the sequel to his popular and "user friendly" Exceptional C++: 47 Engineering Puzzles, Programming Problems, And Solutions (0201615622). Filled with forty all-new working strategies and solutions to solve real-world problems, More Exceptional C++ presents its valuable information in problem-and-solution format so that experienced programmers can streamline their code and improve their results. Chapters cover such topics as code optimization and so-called "lazy optimization"; the uses and pitfalls of multiple inheritance; how to properly use auto_ptr and much, much more. A valuable and informative resource for experienced C++ programmers.
Effective C++'s Big Brother, February 1, 2002
Reviewer: A reader from Sim City, CA (Somewhere in the Bay Area)
Addison Wesley's "C++ In-Depth Series" is showing an amazing consistency in producing one winner after the other. Any C++ programmer could almost blindly pick up any book in the series and learn some new valuable insights.
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.
The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D
Copyright © 1996-2018 by Dr. Nikolai Bezroukov. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) in the author free time and without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...
|You can use PayPal to make a contribution, supporting development of this site and speed up access. In case softpanorama.org is down you can use the at softpanorama.info|
The statements, views and opinions presented on this web page are those of the author (or referenced source) 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: March 12, 2019