פתיחת התפריט הראשי

תכנות גנריאנגלית: Generic Programming), הוא סגנון פיתוח תוכנה בו אלגוריתמים נכתבים במונחים של טיפוסים שיוגדרו בהמשך, וסוג הטיפוס יוגדר על פי הצורך ואז יתבצע שימוש באלגוריתם עבור הטיפוס המסוים שנקבע. גישה זו, שהשפה שנקטה בה ראשונה הייתה ML בשנת 1973, הרשתה כתיבת פונקציות משותפות או טיפוסים השונים רק בקבוצת הטיפוסים עליהם הם משמשים, ועל ידי כך מופחתת כפילות בקוד.

ישויות תוכנה מסוג זה נקראות:

תמיכה בתכנות גנריעריכה

שפות מונחות עצמיםעריכה

כאשר יוצרים מחלקה בשפות תכנות בעלות טיפוסים סטטיים, לא נוח לכתוב מימוש עבור כל אחד המטיפוסים המוכלים. דוגמה ב-C++ למחלקה הנמנעת מהכפילות הזו על ידי הגדרת template:

template<typename T> 
class List 
{ 
 /* תוכן המחלקה */ 
};

/* דוגמה ליצירת רשימה גנרית המקבלת אתחול של הטיפוס */
List<Animal> list_of_animals;
List<Car> list_of_cars;

דוגמה למימוש מחסנית גנרית בשפת C#:

public class Stack<T>
{
 T[] items; 

// שימוש פונקציונלי באותו משתנה גנרי שהתקבל בהגדרת המחלקה בזמן ריצה
 public void Push(T item)
 {...}
 public T Pop()
 {...}
}

// שימוש במחלקה הגנרית - הגדרת מחסנית ואתחול למשתנים מסוג מחרוזת
Stack<string> stack = new Stack<string>();

// שימוש בפונקציות הגנריות עם הסוג המתאים
stack.Push("Edo");
stack.Push("Tzumer");
string str = stack.Pop();

שפות פונקציונאליותעריכה

שפות אחרותעריכה

במשפחת שפות ML, ישנו פולימורפיזם פרמטרי, ומודלים גנריים הנקראים "functors". גם Standard ML וגם OCaml תומכים ב-functors, המתפקדים באופן דומה ל-"class templates" בחבילה הגנרית של Ada. אבסטרקציה סינטקטית ב-Scheme בעלת קשר לגנריות, אלו הם למעשה קבוצה מכילה של templating המצויה ב- C++.

מודול של ורילוג יכול לקבל פרמטר אחד או יותר, אליהם ערך אחד או יותר משויך באתחול המודול. דוגמה לכך היא מערך רגיסטר גנרי, כאשר גודל המערך ניתן כפרמטר.

VHDL הנגזרת מ-Ada מכילה אף היא יכולות גנריות.