DESIGN AND EVOLUTION OF C++
Ouvrage 9780201543308 : DESIGN AND EVOLUTION OF C++
Written by Bjarne Stroustrup, the designer of C++, this book presents the definifive insider's
guide to the design and development of the C++ programming language. Without omitting
critical details or getting bogged dovvn in technicalities, Stroustrup presents his unique insights
into the decisions that shaped C++. Every C++ programmer will benefit from Stroustrup's
explanations of the 'why's' behind the language.
The Design and Evolution of C++ is written in a well-organized, easy-to-read style which is often
instructive and occasionally entertaining. Key insights offer the beginner logical 'hooks' on
which to hang understanding of the details of the language. This book also provides information
and detailed discussions of key design decisions that will add to the expert's understanding.
FEATURES
* Provides insights into the aims, principles, and real-world constraints which shaped C++
* Describes design decisions for individual language features
* Shows the relationships between C++ language features and the design and programming
techniques supported by C++
* Discusses the design of the latest language features: templates, exceptions, run-time type
information, and namespaces.
In this book, Stroustrup dissects the decisions made in the development of the language to
present a case study in 'real object-oriented language development' for the working
programmer In doing so, lie presents his views on programming and design in a concrete and
useful way that makes this book a must-read for every C++ programmer.
ABOUT THE AUTHOR
Bjarne Stroustrup is the designer and original implementor of C++. He is a distinguished
member of the Computer Science Research Center at AT&T Bell Laboratories in Murray Hill,
New Jersey. Dr. Stroustrup received ACM's 1993 Grace Murray Hopper Award for his early
work laying the foundations for the C++ programming language. His research interests include
distributed systems, operating systems, simulation, programming, and design. Dr. Stroustrup
is the author of The C,++ Programming Language (first and second edition), and is an active
member of the ANSI and ISO C++ standards committees.
Review by Al Stevens
Copyright (C) Dr. Dobb's Journal, August, 1994
The Design and Evolution of C++
The Design and Evolution of C++ is Bjarne Stroustrup's account of the events and people that contributed
to the current condition of C++. In widespread use for many years, C++ has grown into a formidable
software-development environment that has progressed from a preprocessor that added classes to C to the
acknowledged language of choice for a generation of programmers. It is now about 15 years old, sports
compilers for virtually every major operating system and environment, and is undergoing formal standardization
and augmentation at the able hands of ANSI/ISO committees.
This isn't for everyone. You will understand and appreciate the story much better if you are a C++
programmer. Sometimes the book describes characteristics of the language and then explains the rationale
behind their inclusion in the language. Other times, it delves into particular arcane behaviors of C++. You need
to understand the nature of C++ and the potential implications of the hidden aspects of the language in order
to keep up. A lot of the book uses code to illustrate the point at hand, and a programmer who already reads
C++ has an advantage over one who does not.
This is an important book, an important addition to the culture, not only for its historical perspective, but for
the insight that it provides into the process of language definition, development, and specification.
You learn a lot about C++ programming, even though that's not Stroustrup's primary purpose. In explaining
why he accepted or rejected proposed features, Stroustrup offers examples of alternatives that reveal better
ways to use C++--ways made possible by the underlying behavior of the language, ways that programmers
discovered rather than designed. He often expresses his own surprise at their discovery, which adds insight to
the complexities of the language: Even its creator has to discover (or be told about) an idiom that applies the
language's underlying behavior to the expression of a particular solution.
The Design and Evolution of C++ is a study in language structure and design, revealing Stroustrup's
resolute philosophy about how a programming language should work and what compromises are necessary to
assure its success. Most criticisms of C++ fall into two categories--the legacy of language constructs that
descended from C, and its static (compile-time) type checking system, which purists view as being less than
object-oriented. Stroustrup deals with both of these. First, he could have built a better language instead of a
better C. He could have assigned less importance to compatibility with C. "Within C++, there is a much
smaller and cleaner language struggling to get out," which he says, "would ... have been an unimportant cult
language." Second, he is committed to the concept of static (as opposed to dynamic) type checking as being
inherently safer and essential to retain the efficiency of C. Without that guarantee, programmers used to C's
efficiency will not switch to a new language, no matter what promise it holds.
The book is Stroustrup's personal-historical perspective of the growth of C++. He approaches it
chronologically to provide a sense of when different features were realized. Then he addresses individual
programming issues and the features that support them without regard to their place in time. He chronicles the
successes, the failures, and the forces brought to bear on his decisions about the growth of C++.
We programmers sometimes believe that programming languages come from one of two places: large
paradigm-polluting bureaucracies belching out behemoths such as Cobol and Ada, or independent free spirits,
in one bright light of inspiration, sit down and cobble a terse, elegant, language like C and C++ to endure for
generations. This book tells a different tale, and you learn of the contributions of a number of collaborators
both within AT&T and later on the Committee. Stroustrup gives credit where it is due and names. Whether or
not you like a feature or bemoan the absence of another, you can usually find out whose idea it was by reading
this book. C++ is the product of the minds of many participants over a long period of time, with Stroustrup as
the focal point.
The book is at times a study in group dynamics. Not bound by the limits that the ANSI X3J11 Committee
imposed upon themselves--to codify existing C practice--X3J16 is inventing a lot of new language, and the
exercise makes for some dynamic interplay. Stroustrup chairs the Extensions group and tries to manage the
spate of new feature requests that pour in from users. He openly discusses his attitudes about features and tells
about the arguments and forces of logic that bear him out in some cases and convince him to change his mind
in others.
C++ is what is it is because of several criteria that the Extensions group applies before accepting a feature.
Those criteria reflect ones that Stroustrup applied as the language grew before the Committee was formed.
First, each feature is scrutinized for its need. Is it a provincial demand, or will the programming community
benefit from it? Passing that test, the feature is implemented and used before being formalized in a release. Its
acceptability is based on that experience. If the feature cannot be easily implemented, it is suspect. If it cannot
be explained to a C++ programmer in short order, it is suspect. If there are reasonable alternatives existing in
the language, the feature is suspect. If it breaks a significant amount of existing code, it is almost sure to be
rejected. If it involves a new keyword, it has two strikes going in. (Stroustrup has no apparent strong bias
against new keywords--he's introduced plenty of them himself--but he does want to avoid the inevitable
outcry of protest. Sometimes, he says, it's easier to find an alternative notation than to fight the new keyword
fight.) You will learn how these criteria were applied to requested features that were accepted or rejected
based on the outcome. It is as interesting to learn what didn't make it and why as to learn what did. If your
favorite feature isn't there, chances are it's been considered and rejected. Now you will know why.
Finally, this book prepares you for the inventions that are coming from the committee. We are properly
concerned about new language features that fall out of the deliberations of large numbers of people with
shared and diverse interests. We worry about issues being resolved with compromise based on the strength of
the debaters rather than technical merit. This book discusses them all and relates the content and context of
those deliberations and, for the most part, puts our fears to rest. What's coming? Templates are changing
significantly over their first definition in the ARM and from existing and different implementations. Run time
type identification has been approved and is already implemented in some compilers. Stroustrup explains his
theories about how this feature should and should not be used. There are a number of new cast conventions
intended to obviate C's inherently unsafe typecast mechanism. The new namespace feature solves a long
standing problem with name collisions among user code, standard libraries, and third party libraries. The
namespace mechanism reflects differing opinions about how names ought to be managed in a programming
environment. The results are several notations from which you can choose depending on where you stand on
the issue. They all work, and you can use the ones you like. The book explains the situation and how it came
to be.
The Design and Evolution of C++ expands your understanding of C++ by explaining how and why it
evolved. You will be more tolerant of some of its vagaries once you understand the alternatives. You will
embrace new features after you've learned their motivations. You will anxiously wait for your favorite compiler
vendor to release versions that implement the new features so that you can try them out. If you write C++
code, you need this book.
Auteur : STROUSTRUP
Editeur : ADDISON WESLEY
Nombre de pages : 462
Date de publication : 04 1994
Toute la sélection
Toutes les sélections
Toute la sélection
Site réalisé en partenariat avec Courbis
(Courbis - alternate link), acteur de l'Internet depuis 1988...