C++ Programming Language, The (3rd Edition)
|
| List Price: | $74.99 |
| Price: | $56.69 & eligible for FREE Super Saver Shipping on orders over $25. Details |
Availability: Usually ships in 24 hours
Ships from and sold by Amazon.com
96 new or used available from $10.50
Average customer review:Product Description
More than 500,000 programmers have benefited from previous editions! This is a complete rewrite of the most widely read and most trusted book on C++. Based on the ANSI/ISO C++ final draft, this book covers the C++ language, its standard library, and key design techniques as an integrated whole. The C++ Programming Language provides comprehensive coverage of C++ language features and standard library components. For example, it includes complete coverage of abstract classes as interfaces, class hierarchies for object-oriented programming, templates as the basis for type-safe generic software, exceptions for regular error handling, namespaces for modularity in large-scale software, run-time type identification for loosely coupled systems, the C subset of C++ for C compatibility and system-level work, standard containers and algorithms, and standard strings, I/O streams, and numerics. With this third edition, Stroustrup makes C++ even more accessible to those new to the language while adding information and techniques that even expert C++ programmers will find invaluable. A web page to support the book can be found at http://www.awl.com/cp/stroustrup3e
Product Details
- Amazon Sales Rank: #148108 in Books
- Published on: 1997-06-30
- Original language: English
- Number of items: 1
- Binding: Paperback
- 1040 pages
Editorial Reviews
Amazon.com Review
In this brand-new third edition of The C++ Programming Language, author Bjarne Stroustrup, the creator of C++, presents the full specification for the C++ language and standard library, a spec that will soon become the joint ISO/ANSI C++ standard.
Past readers will find that the new edition has changed a great deal and grown considerably to encompass new language features, particularly run-time type identification, namespaces, and the standard library. At the same time, readers will recognize the lucid style and sensible advice that made previous editions so readable and enjoyable. Probably the biggest change is a substantial new section, well over 200 pages in length, covering the contents and design of the C++ standard library, the most important new feature of the C++ specification. The author has also added a substantial number of new exercises while keeping many from previous editions that have retained their value.
While The C++ Programming Language is not a C++ tutorial, strictly speaking, anyone learning the language, especially those coming from C, will greatly benefit from the clear presentation of all its elements. It is impossible to overstate the importance of this book for anyone who is serious about using C++.
Review
Read the entire review, including a chapter-by-chapter analysis of this book.
Bjarne Stroustrup's The C++ Programming Language, Third Edition (Addison-Wesley, 1997) has been available for several months. This work, by the creator of C++, is the definitive treatment of the subject and has been since its first edition in 1987. I must confess that I did not care for the first edition. I had expected a tutorial approach as elegant as the classic K&R white book. But then, K&R was about C, a programming language that supported a familiar programming model. The C++ programming model was new to most of us ten years ago, and Stroustrup's first edition was daunting, to say the least. Looking at it now, I find it far less so and much easier to read.
Comparing the first and third editions of The C++ Programming Language provides insight into how the C++ language has grown and changed in the past decade. The third edition has almost three times the number of pages and a slightly different organization. Whereas the first edition included a 67-page language reference manual at the end, the third edition includes only a language grammar section to represent formal language definition. This is appropriate. The ANSI/ISO Standard document, which is now the formal language and library definition, is itself about 750 pages long. Stroustrup plans to publish The Annotated C++ Language Standard (coauthored by Andrew Koenig, the ANSI C++ committee's Project Editor) sometime this year.
The third edition takes a tutorial approach with many of Stroustrup's personal programming philosophies. The author's explanations of how he uses language features provide examples for learning the behavior of those features. He also explains code idioms that some programmers routinely use but that he finds inappropriate.
As much as possible, the third edition reflects Standard C++. When small language features are found to be missing, particularly new ones, Stroustrup pledges to add them to a future printing...
This book is an essential addition to a C++ programmer's library. It is not for dummies, and it wouldn't be my first choice for an entry-level, self-help tutorial on C++ for beginning programmers. It is, however, an excellent textbook for programmers who are self-motivated and students who study under the watchful care of a skilled instructor. As an experienced C++ programmer, I find the book useful as a reference to language usage and behavior. The author invented the language and then stayed close to the standardization and innovation process for the duration, always maintaining a careful vigilance over the evolution of his brainchild. Consequently, this book serves, for those who do not care to pore over the ANSI/ISO document (or the promised annotated version), as the authority on the Standard C++ language, how it works, and how you should use it. -- Al Stevens, Dr. Dobb's Journal -- Dr. Dobb's Journal
From the Inside Flap
"The road goes ever on and on".
----Bilbo Baggins
As promised in the first edition of the book, C++ has been evolving to meet the needs of its users. This evolution has been guided by the experience of users of widely varying backgrounds working in a great range of application areas. The C++ user community has grown a hundredfold during the six years since the first edition of this book; many lessons have been learned, and many techniques have been discovered and/or validated by experience. Some of these experiences are reflected here.
The primary aim of the language extensions made in the last six years has been to enhance C++ as a language for data abstraction and object-oriented programming in general and to enhance it as a tool for writing high-quality libraries of user-defined types in particular. A "high-quality library," is a library that provides a concept to a user in the form of one or more classes that are convenient, safe, and efficient to use. In this context, safe means that a class provides a specific, type-safe interface between the users of the library and its providers; efficient means that use of the class does not impose significant overheads in run-time or space on the user compared with handwritten C code.
This book presents the complete C++ language. Chapters 1 through 10 give a tutorial introduction; Chapters 11 through 13 provide a discussion of design and software development issues; and, finally, the complete C++ reference manual is included. Naturally, the features added and resolutions made since the original edition are integral parts of the presentation. They include refined overloading resolution, memory management facilities, and access control mechanisms, type-safe linkage, const and static member functions, abstract classes, multiple inheritance, templates, and exception handling.
C++ is a general-purpose programming language; its core application domain is systems programming in the broadest sense. In addition, C++ is successfully used in many application areas that are not covered by this label. Implementations of C++ exist from some of the most modest microcomputers to the largest supercomputers and for almost all operating systems. Consequently, this book describes the C++ langauge itself without trying to explain a particular implementation, programming environment, or library.
This book presents many examples of classes that, although useful, should be classified as "toys." This style of exposition allows general principles and useful techniques to stand out more clearly than they would in a fully elaborated program, where they would be buried in details. Most of the useful classes presented here, such as linked lists, arrays, character strings, matrices, graphics classes, associative arrays, etc., are available in "bulletproof" and/or "goldplated" versions from a wide variety of commercial and non-commercial sources. Many of these "industrial strength" classes and libraries are actually direct and indirect descendants of the toy versions found here.
This edition provides a greater emphasis on tutorial aspects than did the first edition of this book. However, the presentation is still aimed squarely at experienced programmers and endeavors not to insult their intelligence or experience. The discussion of design issues has been greatly expanded to reflect the demand for information beyond the description of language features and their immediate use. Technical detail and precision have also been increased. The reference manual, in particular, represents many years of work in this direction. The intent has been to provide a book with a depth sufficient to make more than one reading rewarding to most programmers. In other words, this book presents the C++ language, its fundamental principles, and the key techniques needed to apply it. Enjoy!
Acknowledgments
In addition to the people mentioned in the acknowledgments section in the preface to the first edition, I would like to thank Al Aho, Steve Buroff, Jim Coplien, Ted Goldstein, Tony Hansen, Peter Juhl, Brian Kernighan, Andrew Koenig, Bill Leggett, Warren Montgomery, Mike Mowbray, Rob Murray, Jonathan Shopiro, Mike Vilot, and Peter Weinberger for commenting on draft chapters of this second edition. Many people influenced the development of C++ from 1985 to 1991. I can mention only a few: Andrew Koenig, Brian Kernighan, Doug McIlroy, and Jonathan Shopiro. Also thanks to the many participants of the "external reviews" and the reference manual drafts and to the people who suffered through the first year of X3J16. Bjarne Stroustrup Murray Hill, New Jersey
Customer Reviews
Fundamental Book, but should be last read
This book is written in the way creator Bjarne Stroustrup sees his language and how his language should be used. This book is not thin on material for the intermediate to advanced C++ software engineer.
One word in warning to potential buyers: You better be sharp with your STL skills before reading this book. Stroustrup writes his implementations around the STL which is not covered from a tutorial style in this book before he introduces it, which tells you that he meant for this book strictly as a reference not as a readers book. This critism is constructive, not disruptive, but I have been programming in standard ANSI/ISO C++ for 9 years, this book is best understood if you read the following first, if not, this book for even an itermediate C++ program cannot be digested to the fullest and you will reading this book fooling yourself of how much knowledge you have attained, when in reality, all that you have accomplished is reading this book so that you can say that you read Stroustrup, which is foolish, so read these first:
1) C++ Primer 3rd Edition: Stanley Lippman Addison Wesley Books Strengths: If you are starting out with C++ with no C++ experience, this book covers every facet beginner to advanced topics, such as fundamental classes, class design covering nested class and intense class scoping rules, which Stroustrups book does not cover, there is no reference to nested classes and access privileges with nested classes with Stroustrup's book. The chapters on function templates and another chapter on class templates are the most complete and thorough beyound what you need to know for richness is explained brilliantly and better than scant coverage in Stroustrup's. The C++ Primer is long though, so if you want to learn C++ the right way, skills like this take time and effort, there is no free lunches here, but this is regarded as the best C++ book regardless of level: starter, intermediate, or very advanced master. It also serves a robust reference. This books covers the STL containers well in its own chapter and also two chapter on all the STL algoritms, plus an extended alphabetically ordered repitition in type out of the book and compile form. This book is not for the faint hearted or lazy, if you are ambitious, this book will make you a C++ king. Also get its companion C++ Answer book with all answers to the books exercise questions from author Clovis L. Tondo, also an Addison Wesley title.
2) C++ Algorithms 3rd Edition by Robert Sedgewick also Addison Wesley books. Why? You seriouly have to know your date structure skills, linked lists, stacks, trees, queues and its accompanying algoritms, such as: searching and sorting, merging and merge sorting. Stroustrups books assumes you know how these all come together, if you do not believe this, then look at his stark and algorithmically complex data structure examples, once this is read everything will be a piece of cake, believe this, do not fool yourself.
3) The C++ Standard Library Tutorial and Reference from Nicolai Josuttis, from Addison Wesley also, this book is the defacto bible on mastering the STL, which covers brilliant chapters on containers( vectors, lists, maps, sets, deques, and much more ). It also covers a huge chapter on standard IO streams, at least over 150 pages on this alone, as well a masterful chapter on STL strings. This should be read after Sedgewick's book. This book like all Addison Wesley books, is of the highest qualitiy and caliber of writing making it fun to read and plenty of type out of the book samples to bang in the concept. This books brilliantly also tutors you in function objects, iterators and all its variants, and STL algorithms.
Last Word: Stroustrups book is definite worth in purchase and you cannot consider yourself a C++ software engineer, or C++ Software/Systems architect without having this book in your library, but patience and read books 1,2, and three first in that order. And wheh you do the above, and are ready to read Stroustup's book, one reminder, you must know your templates, know your templates, know your templates, also get the accompanying answer book, C++ Solutions, by Vandervoode also an Addison Wesley title.
Good Fortune.
Are You Experienced?
Bjarne Stroustrup's THE C++ PROGRAMMING LANGUAGE is ideal for those potential buyers who already know 75% of what is written in the book. But please note that this is not necessarily a put-down or a bad thing. This book is reference material for people who are already familiar with the concepts and syntax of C++. If you're looking to learn C++ from scratch, then run far and run quickly away from this book. On the other hand, if you're an experienced coder who's looking to remember specific details, or an intermediate who's looking for some nitty-gritty information, then this is a highly recommended reference book.
The writing is meticulous and often obscure. But Stroustrup packs in a lot of detail into every page. The example code is short and to the point. He assumes that if you don't get what he's talking about the first time, then further examples aren't going to help; and most of the time this assumption is justified, as his terse code manages to convey everything that it needs to.
You really do need to have experience with C++ to understand a lot of his examples though, as often he will casually mention a concept or function that he won't get around to defining for another few hundred pages. After all, most of the features in C++ interact heavily with other functions, so it's not really possible to explain some things without explaining their relationships (even if they are relating to things that the text has not yet brought up). But, as I said, this is reference material, and such conventions are allowable and, at times, encouraged. I am much happier with a book like this that gives me all of the detail necessary than an introductory book that would only offer simplistic explanations in the beginning while holding out for the details towards the end.
The book covers virtually every major aspect of the C++ programming language. While everything is richly explained, I find the sections on the standard containers and their iterators to be particularly enlightening. There is a lot of overlap inherent in these concepts, but each individual portion is clearly and unambiguously explained. The sections on pointers, classes, and inheritance are similarly helpful. But, to be honest, there is no reason for me to list everything that the book explains, because it literally contains everything; if it's not in the book, then in all likelihood it's not in the language either.
THE C++ PROGRAMMING LANGUAGE is a dense book and is packed to the gills with invaluable information and a fair bit of insight. As the inventor of the C++ language itself, Stroustrup is the closest person to the actual syntax, and short of reading the ISO spec, you simply won't find a more comprehensive tome on the subject. Remember, if you're a beginner, stay away. If you're experienced or you plan on being so, then you need to own this book today.
Excellent, useful, complete. Requires interest and effort.
This book is inappropriate for a person who is new to programming. It is even more inappropriate for a quick-and-easy programmer who wants to learn practical skills as quickly as possible but lacks the interest and desire to achieve a high level of skill.
Bookshelves are overflowing with books for these two types of people. Instead of adding another title to that flood, Bjarne Stroustrup delivers a well-written, well-structured book that helps in a challenging area where good resources like this one are needed.
To those who dislike the writing style, I say "sorry, find another book." If you find the sentences hard to read, it is because they are written at a level of clarity and precision required by the concepts. If you find the concepts hard to understand, it is because they are presented with an insightfulness and thoroughness required by the academic/technical audience it is written for. This is neither your fault nor the author's: the book just wasn't written for you.
When I was learning C++, I also found this book difficult and challenging, but with effort I was able to read and understand it. The more I know, the more useful the book is to me, and the happier I am that I put in that effort. In a sense it is a complete reference not only to the language but also to the design paradigm(s) that inspired the language.
The concepts of OOP / generic programming aren't too bad at the surface level. But try and understand them enough to use them to construct complicated systems well, and they are genuinely hard. Every time I struggled with some aspect of the book, I realized once I understood it that Stroustrup had presented it in the best way possible. That's the best part of this book: you can trust that the author is guiding you from a position of knowledge and experience. But what else should we expect from the creator of C++? We are implicitly trusting him anyway by using his language.




