History:
The approach of generic programming has been started in 1983 by Ada programming language to reduce the duplication of code by writing a common set of methods and types that differ only by types or environment they are being used.
Introduction:
The term generic programming was originally coined by two guys named David Musser and Alexander Stepanov to describe an approach for software decomposition. In this approach fundamental requirements on types are abstracted from across concrete examples of algorithms and data structures.
So in general terms generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are instantiated when needed for specific types provided as parameters.