|
|
All sorts of C++ programmers use Standard Components, using all sorts of design philosophies. However, a particular type of programmer, the ``skeptical'' C++ programmer, may find special assurance in using Standard Components.
Such programmers are C programmers, skilled at writing tight, compact, yet portable C code. They have recently switched to C++, but are using it as a ``better C'' because they are just learning the language and don't want to use too many new features at once. Although they have heard about the benefits said to derive from the data abstraction and object-oriented mechanisms of C++, they are unwilling to sacrifice efficiency in order to obtain those benefits. For this reason, such users may have avoided language features (like virtual functions) thought to have unacceptable overhead.
For the same reasons, our skeptical programmers may have also avoided (until now) using any of the existing libraries of C++ components, preferring instead to link ``type-safely'' to existing C libraries. For them, any library of reusable C++ components worthy of serious consideration would have to offer the same efficiency and quality as existing C libraries: they must be small (in text size), they must be fast, and they must localize costs (you don't pay for functionality you don't use). Libraries modeled on the Smalltalk hierarchy may be elegant, extensible, and fully object-oriented, but they would be unacceptable because of the way they distribute costs. For example, to use a single component from such a library, a program must pay for static initialization and finalization of the entire hierarchy. Of course, these users would also reject any library of C++ components that failed to offer at least some degree of object-orientedness, or was incompatible with the object-oriented approach. After all, what benefit would such a collection offer over existing C libraries?
If you share the concerns of these ``skeptical'' C++ programmers, then C++ Standard Components may have particular appeal for you.