A philosophy of programming which emphasizes algorithms as the central concepts of software, as opposed to objects. Abstraction is viewed as a tradeoff rather than a virtue.

The primary tools in generic programming are:
Generic Programming's intellectual founder and main proponent (in 2000) is Alexander Stepanov. His enormously successful Standard Template Library, which he wrote in collaboration with Ming Lee when they both worked for Hewlett-Packard Corporation, was an expression of these ideas.

Generic Programming is, in part, a reaction to OOP, many of whose techniques have been overhyped, and whose misuse has damaged countless schedules and hurt program performance. Of couse there are other negative reactions to OOP.

Despite this, Stepanov has chosen C++ as the only language his ideas can be adequately expressed in, at least for the time being.

Many people who have been exposed to Generic Programming seem to think that Stepanov's objections to OO are limited to the notion of polymorphism, the central overhyped feature in the silly propaganda about the wonderfulness of OOP. These people imply that if polymorphism were de-emphasized, he wouldn't object so much. Maybe so, but my own reading between the lines seems to indicate that he doesn't think encapsulation's all its cracked up to be.