Douglas Gregor
Generic Programming is a programming paradigm for developing
efficient, reusable software libraries. Pioneered
by Alexander
Stepanov and David
Musser, Generic Programming obtained its first major success when
the Standard
Template Library became part of
the ANSI/ISO C++
standard. Since then, the Generic Programming paradigm has been
used to develop many generic
libraries.
The Generic Programming process focuses on finding commonality
among similar implementations of the same algorithm, then providing
suitable abstractions in the form of concepts so that a single,
generic algorithm can realize many concrete implementations. This
process, called lifting, is repeated until the generic
algorithm has reached a suitable level of abstraction, where it
provides maximal reusability without sacrificing performance. Dual to
the lifting process is specialization, which synthesizes
efficient concrete implementations for particular uses of a generic
algorithm. Only by balancing the lifting and specialization processes
can we ensure that the resulting generic algorithms are both reusable
and efficient.
Table of Contents
|