Softpanorama

May the source be with you, but remember the KISS principle ;-)
Contents Bulletin Scripting in shell and Perl Network troubleshooting History Humor

Best Books for Learning C++

News

Selected Computer Books Classic Computer Books

C++ as the first language

Intermediate Selected Topics
(optimization, pointers, memory management)
Reference
(STL, IOstreams, etc)
Best books about C++ debugging O'Reilly CD Bookshelf GCC Open books Best Compiler Construction Books

Linux

C++ as a Multiparadigm Language (without OO overdose ;-) The Art of Debugging

Microsoft

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:

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


Heelo
Top Visited
Switchboard
Latest
Past week
Past month


NEWS CONTENTS

Old News ;-)

[May 15, 2000] Sams Teach Yourself C++ for LINUX in 21 Days (With CD-ROM) by Jesse Liberty, David B. Horvath

Impressive number of pages :-)

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.

[Dec 6, 1999] Tom Swan's GNU C++ for Linux by Tom Swan

Amazon.com

Micah Cowan on July 28, 2000

Unforgivably lame

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.

Practical Visual C++ 6 by Jonathan Bates, Tim Tompkins, Timothy Tompkins

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 Australia
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.

Visual C++ 6 Programming Blue Book

nothing special, but can bought extremly cheaply. Usefil with the version 6 of MS C++ compiler.

Inside the C++ Object Model

Stanley B. Lippman / Paperback / Published 1996
Read review in ERCB

[Sep 1, 1999] Practical C++ by Rob McGregor

A very talented writer. A very good, excellent intro book. Second edition of Using C++.

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, FL

5 of 5 stars 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.

Phil (see more about me) from Woodstock, GA United States
5 out of 5 stars 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++.

Debugging C++ Troubleshooting for Programmers by: Chris Pappas & William Murray, III

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: 4.5 out of 5 stars
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:

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

[Jun 25, 1999] A First Book of C++ From Here to There by Gary J. Bronson

**** No e-text. There are second edition books dated 2000. Generally this is a good, well-written book. Many colleges use it as a textbook. The author provides "Common Programming Errors" sections in many chapters. And that's alone makes this books superior to many other similar books. Each chapter also contains carefully selected exercises after each chapter. The author generally treats C++ as a better C in the first ten chapters. On the negative side, constructors are covered weakly, exceptions are not covered at all

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 (jim@savagetranscendental.com) 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: tazam@filct.com.ac.uk from United Kingdom
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 (ziemkowski@hotmail.com) from Arizona, USA
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.

[March 1, 1999] Sams Teach Yourself C++ in 21 Days by Jesse Liberty

***+ Very inexpensive (zero price if you would like to use the second edition -- it's available from the WEB; that means the book is risk free) book that in some topics head-to-head competes with Prata's book and Bronson's book. But generally its weaker.
You need to have some programming experience to benefit from this book, but this is true for any C++ book. I never saw the book that got so many 5 stars reviews on Amazon. It can be "lemming effect", but in this case it's not ;-). This would be a 4-star book, if the title was changed to C++ in 21 months (advanced C++ concepts really require a lot of time and effort) or at least they add a zero after the number 21 (which would make a more realistic 210 days :-).
All-in-all very readable up-to-date book by a very gifted educator with good advice and a nice set of examples, summaries, do's & don'ts, and quiz questions with solutions. The various Bug Busters ARE REALLY GREAT. Important little tips and warnings are scattered throughout the chapters. Most importantly, it's not BORING.
Classes are given a solid coverage in this book, and the author explains this topic well (may be constructors deserve a little bit more elaborate coverage). Jesse Liberty seems to be able to teach the advanced concepts without wading through unnecessary detail and/or overcomplicating things -- the favorite hobby of so many C++ textbook authors. The third edition is better, but the second edition is not bad.
What make this book attractive for me is that the author is trying to teach you programming, not just a language. Another important plus is that there is a Q&A and Quiz section (with answers) for each chapter of the book. The author supports every important language construct with at least one code example that really needs to be typed in and compiled in order to understand what the author is talking about.
Doing all exercises is also absolutely necessary in order to get a good understanding of the material. Do not move to the next chapter unless you did all the exercises.
There are typos and errors in the code as in any C++ book, however identifying and correcting them is a very educational experience so I would not object about them too much. BTW Jesse recommends reading Effective C++ by Scott Myers as your next C++ book. See
Day 6 -
Basic Classes
Day 12 -
Inheritance
Day 13 -
Polymorphism
I would recommend the Compiler Edition of this book (but throw away the DJGPP compiler that is included ASAP :-) because it contains a CD with some useful exams to take after each chapter and all the source code (mostly error free) and some exercises.

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: 4 out of 5 stars


Table of contents (for the 3d edition)

4 of 5 stars 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.

5 of 5 stars 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.

5 of 5 stars 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!


4 out of 5 stars Great intro to OOP and pointers, but take your time, January 5, 2000
Reviewer: mniesen (see more about me) from Ames, Iowa

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.

5 out of 5 stars 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.

3 out of 5 stars Starts Well, Gets Confusing, March 25, 2000
Reviewer: Geoff Thornton (see more about me) from Oakey, Australia
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 Brookings, OR
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!

Who's Afraid of C++? by Steve Heller

**** Full e-text is available here.
This is a very fresh approach to a technical text but I would only recommend this book if the student was using it along with another textbook. The "conversational technique" is useful but you need a reference too.
Please remember that for any book you need to get a good compiler (Visual C++ 6.0 teaching edition or at least Borland free compiler available from the Borland site).
If you have such a compiler this can probably be the best introductory book with full text available online. Bravo Steve ! BTW the author managed to find his spouse from early testers of the book ;-). You can read an interview with Steve Heller. Here is an interesting detail:
Amazon.com: Do you meet your readers at book signings, conventions, or similar events? Do you interact with your readers electronically through e-mail or other online forums?
S.H.: I met my fiance through our email interaction about my latest book. I put a notice on a Compuserve forum asking for someone who wanted to learn programming from scratch, and she replied via email. One thing led to another, including my moving to Texas from Long Island; we expect to be married before the end of this year.

Paperback / Published 1998

Amazon price: $31.96
Amazon.com Sales Rank: 3,772
Avg. Customer Review: 4.5 out of 5 stars
Number of Reviews: 73

4 out of 5 stars Far and Away the Best Book for Teaching Yourself C++, May 17, 2000
Reviewer: A reader from Seattle, Washington
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! :)

5 out of 5 stars Get this book!!!!, June 18, 1999
Reviewer: A reader from Queensland, Australia
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.

5 out of 5 stars A necessary read, regardless of your background., July 13, 1998
Reviewer: A reader from NJ, USA
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!
1 out of 5 stars If you want to learn C++, skip this, and buy a good book., December 16, 1998
Reviewer: A reader from Dallas, Texas
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.

Using C++ by Rob McGregor, Robert W. McGregor, Jerry Anderson

**** 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

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: 4 out of 5 stars
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

4 of 5 stars 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: 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++.

C++ Primer Plus by Stephen Prata

****no e-text. 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).

Source Code

Updates & Corrections

Softpanorama Review

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:

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.

5 out of 5 stars Definitely for Beginners, June 4, 2000
Reviewer: A reader from UC Berkeley
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.

5 out of 5 stars Clear, concise, and easy to read while staying informative., January 31, 2000
Reviewer: Robert Gamble (gambler@vxc.uncwil.edu) (see more about me) from USA
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).

5 out of 5 stars A great book for beginners, March 15, 2000
Reviewer: Neurite from Florida
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.

C++ How to Program by Harvey M. Deitel, Paul J. Deitel

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: 3.5 out of 5 stars

Number of Reviews: 40

3 of 5 stars 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.

5 of 5 stars 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++.

5 of 5 stars 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's Beginning C++ : The Complete Language

***+ This book competes with Stephen Prata's C++ Primer Plus, but does not contain full C intro. You need to know C to benefit from this book.

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

C++ Strategies and Tactics by Robert B. Murray

5 out of 5 stars Brain embedding knowledge, July 9, 1999
Reviewer: A reader from Los Angeles, California

For 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 Customer

5 out of 5 stars A "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++.

C++: An Introduction to Data Structures by Larry R. Nyhoff

**+ Junk. Avoid it.

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 :-).

3 of 5 stars 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.

3 of 5 stars 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.

More Exceptional C++ by Herb Sutter


Paperback - 256 pages 1st edition (December 17, 2001)
Addison-Wesley Pub Co; ISBN: 020170434X

Amazon.com Sales Rank: 5,740


5 of 5 stars 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.


5 of 5 stars 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.


5 of 5 stars 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.



Etc

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 in our efforts to advance understanding of environmental, political, human rights, economic, democracy, scientific, and social justice issues, etc. We believe this constitutes a 'fair use' of any such copyrighted material as provided for in section 107 of the US Copyright Law. In accordance with Title 17 U.S.C. Section 107, the material on this site is distributed without profit exclusivly for research and educational purposes.   If you wish to use copyrighted material from this site for purposes of your own that go beyond 'fair use', you must obtain permission from the copyright owner. 

ABUSE: IPs or network segments from which we detect a stream of probes might be blocked for no less then 90 days. Multiple types of probes increase this period.  

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least


Copyright © 1996-2016 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. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License.

The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

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

Disclaimer:

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: November 09, 2015