Generisk programmering, ävenmetaprogrammering, är enprogrammeringsmetod där utvecklaren definieraralgoritmer viadatatyper[förtydliga] vilka utelämnas för att specificeras vid en senare fas i programbyggandet. Programkoden blir med detta mer flexibel och modulär genom attalgoritmer kan användas och återanvändas för olikadatatyper. Idén kommer ursprungligen från programspråketML[1]. Beteckningen användes officiellt för första gången avMusser & Stepanov (1989).
En definition på generisk programmering finns iMusser & Stepanov (1989) och lyder,
Generic programming centers around the idea of abstracting from concrete, efficient algorithms to obtain generic algorithms that can be combined with different data representations to produce a wide variety of useful software.
Generisk programmering är en paradigm och ett angreppssätt för att strukturera mjukvara, där fundamentala krav på typer abstraheras bort från konkreta implementationen av algoritmer och datastrukturer och formaliseras som koncept (Concepts), analogt med abstraktionen av algebraiska teorier som förekommer i abstrakt algebra. Tidiga exempel på denna teknik hittas i Scheme och Ada[2] men den bäst kända är från C++ Standard Template Library (STL)[3][4] vilken utvecklade en teori för iteratorer som används för att skilja sekventiella datastrukturer från de algoritmer som används för att bearbeta dem.
Programspråket C++ utvecklareBjarne Stroustrup noterar,
Following Stepanov, we can define generic programming without mentioning language features: Lift algorithms and data structures from concrete examples to their most general and abstract form.
Det går att använda generisk programmering i en mängd olika programmeringsspråk. Nedan listas de mest välkända.