برمجة عامة دعم لغات البرمجة للعمومية
حصلت أوبجكت باسكال (دلفي) على القوالب العامة في إصدار دلفي 11 عام 2007 بواسطة كود جير، في البداية مع المترجم .NET (الذي تم إيقافه لاحقًا) قبل أن يتم إضافتها إلى الشيفرة الأصلية في إصدار دلفي 12 عام 2009. تمت محاكاة دلالات وقدرات قوالب دلفي إلى حد كبير على قوالب .NET 2.0، على الرغم من أن التنفيذ كان مختلفًا بالضرورة. إليك ترجمة شبه مباشرة لأول مثال C# الذي تم عرضه أعلاه:
كما في C#، يمكن أن تحتوي الأساليب والأنواع الكاملة على معلمات نوع واحدة أو أكثر. في المثال، TArray هو نوع عام (مُعرف من قبل اللغة) وMakeAtLeast هو أسلوب عام. القيود المتاحة مشابهة جدًا لتلك المتاحة في C#: أي نوع من القيم، أي فئة، فئة أو واجهة محددة، وفئة بها مُنشئ بلا معلمات. القيود المتعددة تعمل كاتحاد إضافي.
تم تنفيذ القوالب العامة في فري باسكال في عام 2006، قبل دلفي وبصيغة ودلالات مختلفة. ومع ذلك، منذ إصدار FPC 2.6.0، أصبحت صيغة دلفي متاحة عند استخدام وضع اللغة {$mode Delphi}. وبالتالي، يدعم فري باسكال القوالب العامة في أي من الأساليب.
آلية فئة النوع في هاسكل تدعم البرمجة العامة. ست من فئات النوع المحددة مسبقًا في هاسكل (بما في ذلك Eq، الأنواع التي يمكن مقارنتها للتساوي، وShow، الأنواع التي يمكن تمثيل قيمها كسلاسل نصية) تتمتع بخصائص خاصة تدعم "المثيلات المشتقة". هذا يعني أن المبرمج الذي يعرف نوعًا جديدًا يمكنه تحديد أن هذا النوع سيكون مثيلاً لإحدى فئات النوع الخاصة هذه، دون الحاجة إلى تقديم تنفيذات لدوال الفئة كما هو مطلوب عادة عند إعلان مثيلات الفئة. سيتم "استخلاص" جميع الدوال اللازمة – أي، بناؤها تلقائيًا – بناءً على هيكل النوع. على سبيل المثال، الإعلان التالي لنوع من شجرة ثنائية يحدد أنه يجب أن يكون مثيلاً لفئتي Eq وShow:
ينتج عن ذلك تعريف دالة التساوي (==) ودالة تمثيل السلسلة النصية (show) تلقائيًا لأي نوع من النوع BinTree T بشرط أن يدعم T هذه العمليات.
يدعم استخراج المثيلات لفئتي Eq وShow جعل دوالها == وshow عامة بطريقة نوعية مختلفة عن دوال البوليمورفيك البراميترية: يمكن تطبيق هذه "الدوال" (أو بالأحرى، عائلات دوال مُؤشرة على النوع) على قيم من أنواع مختلفة، وعلى الرغم من أنها تتصرف بشكل مختلف لكل نوع من المدخلات، إلا أن القليل من العمل مطلوب لإضافة دعم لنوع جديد. أظهر رالف هينز (2004) أن تأثيرًا مشابهًا يمكن تحقيقه لفئات النوع المعرفة من قبل المستخدم باستخدام تقنيات برمجية معينة. اقترح باحثون آخرون نهجًا لهذا النوع وغيره من أنواع التعميم في سياق هاسكل وتوسعات هاسكل (والتي ستتم مناقشتها لاحقًا).
كان PolyP هو أول امتداد للبرمجة العامة في هاسكل. في PolyP، تسمى الدوال العامة بـ "بوليتبيك" (Polytypic). يقدم اللغة بناء خاص حيث يمكن تعريف هذه الدوال البوليتبيكية عبر الاستقراء الهيكلي على هيكل الدالة النموذجية لنوع البيانات العادي. أنواع البيانات العادية في PolyP هي مجموعة فرعية من أنواع البيانات في هاسكل. يجب أن يكون النوع العادي t من النوع * → *، وإذا كان a هو النوع الرسمي في التعريف، فيجب أن تكون جميع الاستدعاءات التكرارية لـ t على شكل t a. هذه القيود تستبعد أنواع البيانات عالية الأنواع وأنواع البيانات المتداخلة، حيث تكون الاستدعاءات التكرارية من شكل مختلف.
دالة flatten في PolyP هنا موضحة كمثال:
هاسكل العامة هي امتداد آخر لـ هاسكل، تم تطويره في جامعة أترخت في هولندا. توفر الامتدادات التالية:
القيم المؤشرة على النوع تُعرف كقيمة مُؤشرة عبر بناء الأنواع في هاسكل (الوحدة، الأنواع البدائية، المجاميع، المنتجات، وبناة الأنواع المُعرفة من قبل المستخدم). بالإضافة إلى ذلك، يمكننا تحديد سلوك القيم المؤشرة على النوع لمُنشئ معين باستخدام "حالات المُنشئ"، وإعادة استخدام تعريف عام في آخر باستخدام "الحالات الافتراضية".
القيمة المؤشرة على النوع الناتجة يمكن تخصيصها لأي نوع.
تقدم كلين البرمجة العامة عبر PolyP وهاسكل العامة كما يدعمها GHC ≥ 6.0. يتم برمجة القوالب باستخدام النوع، كما هو الحال في هاسكل، ولكنه يوفر التحميل الزائد (بالإنجليزية: Overloading).
اللغات في عائلة أم أل تدعم البرمجة العامة من خلال التعددية البراميترية والبرمجة التركيبية العامة المسماة "الدوال"، والتي هي مشابهة لقوالب الفئات في C++ وعبوات البرمجة العامة في لغة آدا. توفر كل من أم أل المعيارية ولغة كامل الموضوعية دوال (Functors)، التي تشبه قوالب الفئات في C++ وعبوات البرمجة العامة في آدا. كما أن سكيم توفر تجريدات تركيبية ترتبط بالتعميم - وهي في الواقع مجموعة شاملة من قوالب C++.
قد يتخذ فيريلوج وحدة برمجية واحدة أو أكثر من المعلمات، حيث يتم تعيين قيمها الفعلية عند تنفيذ الوحدة. أحد الأمثلة هو مصفوفة سجل (العتاد) عامة حيث يتم تحديد عرض المصفوفة عبر معلمة. يمكن لهذه المصفوفة، إلى جانب ناقل الأسلاك العام، أن تُشكل ذاكرة أو مخزن عام بعرض بت عشوائي من خلال تنفيذ وحدة واحدة فقط.
يشتمل في إتش دي إل، المشتق من آدا، أيضًا على قدرات عامة.
تدعم سي "التعبيرات العامة المرتبطة بالنوع" باستخدام الكلمة المفتاحية _Generic