Rating: Summary: Another (effective) way to teach Review: This book was awesome, one of the best i ever read. It says the same things of a miriad of other books, but in a exceptional way, simply, fast, correct. You'll be sing the stl in the first chapter, no mixed c/c++ programming here, only true c++. This book is small, but trust me it has all you need to start really using c++, no stupid example, no stupid code, every single page is filled with usefull information. Absolutely a must have.
Rating: Summary: My C++ Learning Experience Review: Since I'm reviewing both "Accelerated C++" as well as "Thinking in C++", I thought I'd post the review on both book links.
There have already been excellent reviews of this book, but I would think the main reason people purchase these books is because they have an explicit purpose, which is to learn Standard C++. That being said, C++ is one of the most powerful and multi-faceted languages around, and no other language provides both high level abstractions and low level control in one programming language as C++.
Because of these features, it is often opinied that C++ is too complicated, large and takes too long to master. While there are some merits to this criticism, many important real world systems are being bult with C++ and professional developers need to master the fundamentals of C++ now. With that in mind, and after spending (or wasting) much money on various books proclaiming to teach C++ from the ground up, it was not until reading Konig and Moo's "Accelerated C++" and Eckel's "Thinking in C++" and in that order, that I finally "got it".
Why I emphasize "in that order" in the last paragraph, is due to the methodologies used to teach C++ by ACPP and TICPP, and due to this, its best to read ACPP first, then TICPP for the most effective learning. Here's my reasons:
ACPP teaches C++ in a top down fashion. What I mean by this, is that the higher level Standard Libraries are integrated right from the start to teach programming contructs such as looping, selection and decisions making using library facilities such as <vector>, <list>, and <map>. The Standard <string> is utilized from chapter zero, and relieves much of the burden of C strings and all the low level details one would have to know to use them properly. This can be especially burdensome to the beginner.
As important as the container classes are to the Standard library, are the algorithms used with them. ACPP ulitizes these as well, and from chapters 0 to 7, the student is taught to use the common algorthms such as sort(), copy(), find() and accumulate(). By teaching these features right from the beginning, the reader is able to write some non-trivial programs without having to wade through the typical and troublesome C features typically taught in other books. Thus, by the time the Reader reaches the second half of the book (chapters 8-16), s/he is ready to understand how to build their own user defined types, and other important topics such as pointers, memory management, classes, as well as object oriented and generic programming.
In contrast, TICPP teaches C++ from a more traditional bottom up approach. Throughout the book, the assumption is that the Reader is comming to C++ from a C background. For example, throughout the book starting from chapter 4, Eckel demonstrates a Stash and Stack application, developed first as a "better C", then throughout the book adds features to them such as grouping data structures with the functions that act on them in the form of classes. The concepts of constructors and destructors, function overloading and default arguments, using const and static effectively, inlining, namespaces, references, copy constructors, operator overloading, using new and delete for dynamic objects, etc. are all covered.
In my opinion, the last two chapters where virtual functions, abstract classes, and an introduction to templates and iterators are covered, is where the book really shines, as these chapters allow the book to finally culminate the benefits of true object oriented programming and give a solid introduction to generic programming in the form of templates and iterators. By this point, the Stash and Stack examples are utilizing pure virtual functions and iterating through containers in an STL-like fashion that is similar to the ones in the Standard Library.
The current trend in C++ is to favor the abstractions provided by the Standard Libraries when developing professional software, and ACPP exemplifies this attitude throughout the book. The lower level C-like aspects of C++ can and have caused much trouble in the form of memory leaks, buffer overruns, etc. Nevertheless, certain class of applications require the ability to get close to the metal, and C++ allows this ability without restrictions when necessary. Also, there are many (and some could argue that most C++ based systems out there still adhere to this) legacy systems where C++ is still being used as a "better C". TICPP is the book that will teach one how to make these programs more type safe, as well as migrating it to take advantage of more modern C++ idioms. And in Volume 2 of TICPP which just came out, Eckel and Allison cover the Standard Library in depth, as well as other professional methodologies such as RTTI, Multiple Inheritence, Design Patterns and Concurrent programming.
But by careful and methodical study of both books, and as is recommended by me, reading ACPP first then TICPP, one will learn C++ from the highest layer to the lower, then from the lower back up the higher and obtain a through knowledge of the basics of C++. One can then effectively study the more advanced books, such as by Meyers, Sutter, Stroupstrup, etc. and have the confidence to tackle professional C++ projects.
Postscript - Though I advocate the above learning method for C++, I would like to add that the above two books presume a certain programming maturity, though one does not need to be a guru. A person with the experience typical of first year CS1 (and CS2) in a language like Java or Python (in fact, for a complete novice, I would recommend learning Python first) would be most suited to following the above presciption. Also recommened is to study a book about data stuctures and algorithms, which will provide the Reader with a solid understanding of the mechanisims that underly the STL (meaning the Standard Template Library which encompass the Containers, Iterators and Algorithms of the Standard C++ Library which was originally part of SGI's implementation).
Rating: Summary: A Gem! Review: It is one of the excellent book I have read. Down to earth approach and very practical. Breaks the tradition of distracting new comers by providing more relavant examples with hands-on approach. Some familiarity with C++ helps to achieve best results with this book.
This book will be useful for beginners to intermediate level people. Others can write their own book.
Authors set the expectation right in their preface and they maintained their claim all the way till the end. Courageous and very well-done.
Rating: Summary: Excellent guide for someone who has programmed before Review: I am a reasonably proficient programmer in C and Java, and I wanted to get up to speed quickly on C++. I found this book did the job admirably. It teaches "modern C++" which essentially means relegating traditional trouble areas such as arrays and pointers to much later in the book. Modern C++ is essentially that defined in the 1998 ISO standard, and it preaches the use of the Standard Library (a subset of which is the STL) which is an excellent library for common data structures and algorithms that operate on them. For example, using a vector you can store as many objects as you like without worrying about memory allocation or pointers. The book explains these concepts very well throught the ongoing development of a student grading program, going all the way up to using templates and class hierarchies. My only gripe is that this application is not particulary exciting to me, although it is a real world scenario.
Don't be deceived by the relatively small number of pages, there is a lot of dense prose in this book and it will take some time to read it all. Fortunately the authors have a good writing style and they explain every new feature very clearly.
I must admit this book has made me appreciate the power of "modern" C++ over the earlier pre-standard language. There is no doubt that C++ is an order of magnitude more complex than Java, but this book makes a good attempt at reducing the complexity and I think it succeeds. Once you finish it there is still a long path to tread, but I feel I can now read Stroustrup's book with a semblance of understanding!
Caveat - This is not a book to give to a complete novice who has never programmed before. For example, it does not explain how to compile programs, or even what compiling means. It does not give instructions for Visual C++, gcc, or any other vendor-specific compiler. It assumes you can use these tools or have another reference for them. IMHO this is the right attitude to take, because otherwise the book would contain a lot of fluff that is not relevant to teaching ISO C++.
Rating: Summary: Good book but steep Review: This is a good book on C++. But maybe a bit steep for those who have not had worked with C++ in real life scenarios. Coming from Java side of the world it was not difficult for me to pick up this book. But perhaps a bit more introductory materials may have been helpful.
Rating: Summary: the *only* book that teaches c++ Review: most books basically teach you how c++ is different from c, which distorts the perspective.
e.g. examples typically include creating a string class. as if c++ hasn't had one of those for a decade.
this book is the only one i have found that approaches c++ (and its libraries) as a language in its own right.
this approach allows the author to correctly prioritize the material, which ultimately will make you a more efficient and accomplished programmer.
this is the only book i would recommend to beginners.
Rating: Summary: The fastest way to learn C++ Review: There is a running debate as to weather this book is a book for beginners. The answer is yes and no. If you're an experienced "professional" programmer looking to learn C++ then this book is excellent. If you are new to programming and want to learn your 1st language then this book will be over your head. This is NOT an introduction to programming. It's a solid introduction to C++.I'm a 16 year developer who has worked in COBOL, Visual Basic, Delphi and Java. I ordered this book on the recommendation of a colleague and I started reading it on a Saturday morning. By mid afternoon I had completed the entire book and had a firm grasp on C++. The book is clear, concise and effective. After reading this book, your C++ foundation will be laid and anything else you need can be looked up on a reference basis. It's an excellent way to learn the language and get up to speed quickly.
Rating: Summary: Probably the Best C++ Tutorial Review: If you have programmed before--not necessarily in C++ or C--_Accelerated C++_ is probably the best C++ tutorial for you. If, however, you have never programmed before, you will probably want to do the exercises of an easier tutorial before using _Accelerated_. Not a primer to teach you how to programme, it is a primer to teach you the fundamentals of C++. _Accelerated_ is revolutionary, because, unlike typical primers, it uses C++'s standard library often and early. To get a better idea of how revolutionary, an explanation is necessary. Earlier versions of C++--known as "C with Classes"--have been in use since 1980. But many so-called C++ tutorials still treat C++ as an extended form of C instead of the completely separate language that it is today. It has its own idiom. These tutorials, for example, use C-style string literals instead of C++'s string type and use arrays instead of C++'s vector type. This traditional way of teaching C++ results in errors and frustration among beginners--a major headache when trying to learn C and an unnecessary burden when trying to learn C++. Fortunately, as implied, C++ has evolved, and a library--the standard library--has been developed to help programmers become productive more quickly and with less errors. _Accelerated_ is one of those few tutorials that uses this standard library early and often to quickly allow the beginner to write nontrivial programmes. On page 9, for example, you are already introduced to the string type. On page 12, you are already introduced to a member function of the string type. Compare this with common primers that tack on a chapter at the end about the standard library as an afterthought. The authors let you in on subtleties that most experienced C++ programmers know but may appear strange to novices. You learn, for example, why it is better to count from _0_ than from _1_ in for-loops. The authors never condescend. Their explanations are clear and convincing. The range of material covered and the depth of the coverage go beyond what you will find in an average tutorial. The discussion of controllable handles, for example, will probably be quite abstract for some beginners. Both authors are respected for their knowledge of C++. (Koenig is the Project Editor of the C++ standards committee.) Not only are their technical skills outstanding, they know how to teach. Who would choose to introduce pointers at the halfway point in the book and describe them as a kind of random-access iterator and only after you have had plenty of experience using iterators? The result is an easier time learning pointers. The authors have taught C++ at Stanford University, and this ability to teach is revealed throughout the book. At only 336 pages, you may wonder how such a small book can revolutionize learning C++, especially when other outstanding books like the special edition of _The C++ Programming Language_ by Bjarne Stroustrup is 1040 pages, and the third edition of the _C++ Primer_ by Stanley B. Lippman and Josee Lajoie is 1237 pages. Part of the reason is that the authors are excellent technical writers who have mastered the art of conciseness. Where example code is presented, if needed later, you are asked to refer to earlier pages clearly indicated instead of the code being reproduced verbatim. Sometimes you are briefly asked to rewrite the material in a chapter using classes that the authors have provided and that you have extended. Conciseness. Koenig and Moo say that they have concentrated on those parts of C++ that "are so universally important that it is hard to be productive without understanding them." The authors present standard C++ and ignore proprietary extensions. From the book's web site you can download source code for UNIX and similar systems, .NET, Visual C++ 6.0, and Borland C++Builder version 5 or later. There is also some support for Macintosh users. And how difficult are the exercises? The overwhelming majority is of no more than moderate difficulty, with some challenging ones sprinkled in. But this is only if you do the hard work of concentrating on what is written and doing your best to complete each exercise. Many of the exercises build on your answers to previous exercises. Be extra careful, because no solutions are provided. There is no answer book. The authors should, however, have indicated each exercise's level of difficulty, as this will give you some idea of what to expect. Do not let the long errata list discourage you. The authors are perfectionists. It is better, moreover, to have all the errata posted on the book's web site than to be pulling your hair, because just about every technical book is going to have errors. Neither the book nor, as this is written, the book's web site mention how to get started in using a compiler, so if you do not know how to use one, you will have to read the documentation that came with the compiler, ask someone, or use the Internet to find the answer. Near the end of the book, the authors recommend, for further study, _The C++ Programming Language_. I disagree. You should buy it along with _Accelerated_ not after it. It is useful for reference and for solving some of the exercises, as you can often find hints and helpful information in this book which is considered mandatory by many professional C++ programmers. _Accelerated_ and _The C++ Programming Language_ are widely regarded as the best as regular readers of the Usenet discussion forums alt.comp.lang.learn.c-c++, comp.lang.c++, and comp.lang.c++.moderated already know. When book recommendations are requested or the best C++ books are commented on in these forums, these books are, invariably, mentioned the most. They also received the Association of C & C++ Users' highest recommendation. These books are difficult and demand effort, patience, and persistence. A tremendous amount of thought and care and planning went on behind the scenes before Koenig and Moo approached their word processors. If you are serious about acquiring a solid C++ foundation, there is nothing better.
|