I had always hated Deitel & Deitel's 'C++: How to program' iterations. I had always thought the book never quite lived up to its great potential because of its own ambition to be the best C++ textbook ever written. I had always thought the book was a terrible book not because of its contents, but how it presented them. I had also thought D & D were quite arrogant and obnoxious in terms of the rambling verbosity of translating their impressive knowledge into texts in elitist's fashion. That, along with the horrendous text fonds and repugnant color schemes, not to mention the ugliest coding presentation and the endless assult on my nerves launched by thousands of those ugly bees all over the textbook, literally made me nauseous (really). I think those were more than enough reasons to hate the book whether the actual contents were good.
The latest edition (5th) eradicates all sins, and rectifies the lows of the past editions. Well, except the bees... Even the bees manage to look kind of cute in light of the newest improvement.
The text fonds are all changed and color schemes are all toned down. It is so pleasant to the eyes. Ugly coding presentation and stiff graphic illustrations are replaced with much organized and refreshing style. Many of coding examples have also been replaced with more real world-oriented objects. The biggest improvement, in my opinion, is the writing style. Although the core contents are untouched, quite big chunks of the old contents were discarded and rewritten with much fluentness and simplistic style. The old D & D's infamous babbling out is significantly reduced. It is now actually quite enjoyable to read this book. Several chapters from the previous edition have been divided into smaller chapters and sequentially rearranged. Furthermore D & D will offer us free 'Multimedia Cyber Classroom' and 'C++ in the lab' along with free 'Student Solution Manual' available on the website. This is a very noble move by them and a very welcomed addition for people who try to learn C++. The only wish I have now is to ditch the somewhat out of place chapters like 'Web Programming' and 'Intro to XHTML' sections and beef up the advanced topics like 'Templates', 'File Processing', 'Data Structures' and 'STL'. I know individual book could be written for each of these chapters, but I'd rather have a little more in-depth knowledge on those topics over web programming. Overall, this is a vastly improved edition when compared to the previous editions. I am very happy with this book. D & D finally listened to readers' long time complains and delivered one of the best C++ textbook in the market. They completely redeem themselves with the newest iteration. I highly commend their lastest effort.
***My Previous Reviews on this book***
3rd Edition (3 stars out of 5)
'C++ How to Program' by Deitel & Deitel is one of those books that set out to be the one and only, the perfect textbook that teaches you everything about C++ to everyone from the absolute beginners to the truly advanced programmers all at once. The book falls very short under the weight of its own ambition. By just reading the table of contents, it seemed that the book properly offers the complete coverage of the syntax of the C++ language, and each topic seemed to be presented in the sensible order which facilitates the readers to learn C++ step by step without getting lost or tangled up with the bits of coverage all over the textbook. The only thing presented in the sensible order in this book is the table of contents. Despite the quite large volume, Paul and Harvey (D&D hereafter) decided to babble aimlessly in very verbose fashion without any focus or making any sense. I mean the language they employee is English only in appearance. D&D could have babbled in Russian and I wouldn't have known the difference. They don't seem to have the fundamental ability to deliver their knowledge to the readers in clear fashion, and the level of knowledge of C++ has nothing to do with it. Now 'C++ Primer' by Stanley Lippman and Josee Lajoie or 'The C++ Programming Language' by Bjarne Stroustrup are indispensable guides for the advanced programmers that will teach you so many techniques your ordinary textbook do not cover, and yes, they are definitely not for the novice programmers. This is not the case with D&D. I mean C++ is arguably the toughest programming language to master, but it doesn't have to be this painful just to browse through the textbook. From the get-go, D&D clearly aimed to please both "technically oriented people with little or no programming experience, and experienced programmers who want a deeper treatment of the language" (from chapter 1 section 1). This is such a contradiction. As a result, what could have been an impressive textbook became an expressway to frustration. Sentences tend to be written in the overly complex fashion without serving much purpose. They are just totally confusing and incomprehensive. Much concise, terse, and simplistic writing style is desired and would have done the job better for everyone. The higher level of knowledge on C++ doesn't have to be translated into more complicated writing. It gives out the wrong impression to the beginners that it is their lack of C++ knowledge that hinders the understanding of the book. D&D's ability to convey their knowledge to the readers doesn't match with their impressive programming career. The coding style is awful and definitely not recommended to anyone although it is not syntactically wrong. Too many details are explained in the context of C language as if the knowledge in C is assumed before learning C++. Layout and color scheme are extremely disoriented and tiresome to your eyes. The coverage of each topic is scattered all over the textbook. D&D just love to say "We will later discuss about...", "We previously discussed about...", and so on instead of focusing on each topic one at a time and then moving on. There are too many pop-out boxes for various tips and warnings that are repeated over and over and over to the point they are disturbing. D&D arrogantly try to write the textbook that teaches you all the syntax of the language and the lawbook that teaches you all the semantics and the techniques of the language at the same time. They set out to achieve the impossible and succeed to do neither. This book is too confusing for the beginners to the point that people will hate C++, and it is too repetitive and shallow for the advanced programmers. If anyone can overcome these difficult obstacles, however, this book has quite a lot of information. I would not recommend this book to anyone who just start learning C++. Believe me when I say this because you will be committed to the mental asylum within the first few minutes if you attempt to learn C++ with this book. Try 'Absolute C++' by Walter Savitch instead. If you have a solid knowledge on C++, D&D's book can be a decent reference book. Then again, you are better off with 'The C++ Programming Language' by Bjarne Stroustrup, 'C++ Primer' by Stanley Lippman and Josee Lajoie, and 'Effective C++ Series' by Scott Meyers if you are able to enjoy D&D's book.
4th Edition (3 stars out of 5)
The latest edition is marginally improved compared to the previous edition. The biggest difference is that the coding style is much easier to read now and more comments have been added to the program examples. The color has been toned down just a bit, but not enough to ease the pain to the eyes. Some of the lectures have been sequencially rearranged and some new methodology has been used for inheritance and polymorphism. But the core is essentially identical with the previous editions. Although this book has enormous potential to be the best C++ book in the market, the book still has the identity crisis. It really doesn't know which group of programmers it aims to help. It still is unfairly too complicated for the novice programmers and not enough substance for the advanced programmers. This is quite a book, a flawed masterpiece, so to speak. Only if D&D decide to shift the emphasis and focus on one group and lose the other, this could be a great book.
Some helpful tips for those who just started learning C++.
1) Keep in mind that C++ is a very hard and tough programming language to master.
C++ is arguably the most complicated programming language available today. It is by no mean THE perfect programming language, and it requires the tremendous amount of responsibilities from the programmer. However, no other language is as powerful, versatile, and flexible as C++. It gives the programmers the assembly-language-like freedom with the data types and the memory management. It offers the programmers the characteristics of both the high-level language and low-level language. It also provides the programmers both the efficient structure-oriented features and the strong object-oriented features at the same time.
2) C++ is not C, although C++ is derived from C language.
Although C++ is derived from C and inherited many features from C, C++ is NOT C. They are totally two different and separate languages just as Java is not C++. C is a structure-oriented language while C++ is object-oriented language. C++ has many new features that C can't even begin to dream about. Give C++ all due respect.
3) The perfect C++ textbook does not exist, so stop trying to find one.
Just about everyone who ever tried to learn C++ have attempted one way or another to find or to write that elusive perfect textbook that teaches you everything and satisfy the absolute beginners as well as the seasoned experts. The fact of the matter is there isn't one. Learning C++ can be a very long and frustrating process given the complexity of the language. It will take your full attention, devotion, and time to master C++ no matter which textbook you choose to use. Many books claim to be the one. Many programmers claim that the book they recommend is the one. But the experienced programmers will find the beginners' textbooks such as 'Starting out with C++' by Tony Gaddis insulting and waste of time while the novice programmer will find advanced textbooks like 'The C++ Programming Language' by Bjarne Stroustrup very intimidating and frustrating. It really depends on each individual's level of the knowledge on C++. One person's best textbook can be another person's total waste, and everyone has a different and unique way of digesting information. Make sure that you thoroughly check the contents before you choose to buy any C++ textbook. Instead of taking others' recommendations and advices for granted, you should try to find the right combination on your own. You will probably need to use a few different textbooks together, because single textbook cannot possibly cover all the topics and the required depth necessary to master C++. This is especially true for the advanced topics such as 'Templates', 'Data Structure', 'STL', and 'File Processing', which are broad and complicated enough to deserve a single textbook. I recommend 'Absolute C++' by Walter Savitch for the absolute novice programmers. If you have few or no prior programming experience, this will be one of the easiest textbooks available. If you are the advanced programmers, you really should be able to understand anything written about C++. 'C++ Primer' by Stanley Lippman and Josee Lajoie or 'Core C++: A software Engineering Approach' by Victor Shtern could substitute as the alternative textbook for the advanced programmers. If you are the expert programmers, 'C++ FAQs' by Marshall Cline, Greg Lomow, and Mike Girou, 'Effective C++' series by Scott Meyers and 'The C++ In-Depth Series' from Addison-Wesley should be adequate enough to satisfy your ego and to teach you many advanced techniques not found in other textbooks.