Généricité
En programmation, la généricité d'une fonction repose sur son indépendance vis-à-vis du type de ses arguments.
Dans un langage à typage dynamique, on utilise le polymorphisme: les paramètres passés en arguments à la fonction doivent se conformer à une interface (un protocole définissant quelles méthodes sont supportées par cet argument) donnée. Ce mécanisme est supporté par tous les langages orientés objects, y compris ceux que l'on qualifie généralement comme étant à typage statique (Java, C++). Pourtant, même si le langage apporte des outils pour vérifier la cohérence des interfaces à la compilation, la détermination du type réel (c’est-à-dire la résolution de l'adresse du code implémentant les méthodes de l'interface) de l'argument est bien faite à l'exécution.
Dans certains langages à typage statique, il est possible d'utiliser des types générique ou « templates ». C'est par exemple le cas en Ada ou dans la Standard Template Library du langage C++, ou en Java, depuis la version 1.5. Ce mécanisme permet une programmation générique purement statique puisque l'ensemble des résolutions de types est faite au moment de la compilation.
Il est également possible de réaliser des fonctions génériques dans des langages non objects. Par exemple l'outil utilisé pour développer en C des fonctions génériques est le pointeur de fonction.
