از ویکیپدیا، دانشنامه آزاد
برنامهنویسی همگانی (به انگلیسی: Generic Programming) یک الگوی برنامهنویسی است که امکان نوشتن کدهای عمومی و قابل استفاده مجدد را فراهم میکند. این روش به توسعهدهندگان اجازه میدهد که الگوریتمها و ساختارهای دادهای را بدون وابستگی به نوع خاصی از دادهها طراحی کنند و از این طریق، انعطافپذیری و قابلیت استفاده مجدد کد را افزایش دهند.
اولین کاربرد رسمی برنامهنویسی همگانی در سال ۱۹۸۳ در زبان برنامهنویسی Ada ظاهر شد. این زبان از پارامترهای نوعی (Type Parameters) پشتیبانی میکرد و به توسعهدهندگان امکان میداد که توابع و انواع دادهای عمومی را بدون مشخص کردن نوع خاصی از دادهها، تعریف کنند.
در ادامه، این مفهوم در زبان ++C با معرفی Templates (قالبها) در دهه ۱۹۹۰ توسعه یافت. سپس در Java 5 (در سال ۲۰۰۴) و C# (.NET 2.0) نیز ویژگی Generics اضافه شد. امروزه این قابلیت در بسیاری از زبانهای برنامهنویسی مانند Swift، Kotlin، Rust و Haskell پشتیبانی میشود.
برنامهنویسی همگانی بر پایه استفاده از پارامترهای نوعی است. این بدان معناست که نوع دادهای مورد استفاده در الگوریتم یا ساختار داده در زمان تعریف مشخص نمیشود، بلکه هنگام استفاده تعیین میگردد. این روش موجب کاهش تکرار کد، افزایش خوانایی و بهبود مقیاسپذیری میشود.
#include <iostream>
using namespace std;
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
cout << add(5, 10) << endl; // خروجی: 15
cout << add(3.5, 2.1) << endl; // خروجی: 5.6
return 0;
}
در این مثال، تابع add
بدون مشخص کردن نوع دادهای خاصی تعریف شده و در زمان اجرا میتواند برای اعداد صحیح یا اعشاری به کار رود.
class Box<T> {
private T value;
public void setValue(T value) { this.value = value; }
public T getValue() { return value; }
}
public class Main {
public static void main(String[] args) {
Box<Integer> intBox = new Box<>();
intBox.setValue(100);
System.out.println(intBox.getValue()); // خروجی: 100
}
}
در این مثال، کلاس Box
برای هر نوع دادهای قابل استفاده است، بدون آنکه نیاز به تعریف چندین نسخه از کلاس باشد.
برنامهنویسی همگانی امروزه در بسیاری از زبانهای برنامهنویسی مدرن پشتیبانی میشود:
زبان برنامهنویسی | روش پیادهسازی |
---|---|
++C | Templates |
Java | Generics |
C# | Generics |
Swift | Generics |
Rust | Traits & Generics |
Haskell | Polymorphism |
برنامهنویسی همگانی یکی از مفاهیم کلیدی و پرکاربرد در توسعه نرمافزار است که به برنامهنویسان اجازه میدهد کدهای انعطافپذیر، بهینه و مقیاسپذیر بنویسند. با وجود پیچیدگیهای اولیه، این رویکرد باعث افزایش کارایی و کاهش تکرار در برنامهنویسی میشود و در اکثر زبانهای مدرن پشتیبانی میشود.
Seamless Wikipedia browsing. On steroids.