Bendrasis programavimas yra vienas iš populiarių kompiuterių programavimo būdų, parašytų taip, kad būtų sukurtas efektyviausias kodas, tuo pačiu leidžiant kodui pritaikyti kuo daugiau situacijų, nereikalaujant jokių paties pradinio kodo pakeitimų. Kai kodas parašytas, jis gali atlikti tik tas funkcijas, kurioms buvo parašytas. Naudodami bendrąjį programavimą, kad sukurtų kodus, kurie veikia įvairiose situacijose, tačiau vis tiek atlieka tą pačią pagrindinę, bendrą funkciją, programuotojai gali naudoti vieną kodo dalį skirtingose programose, niekada nekeisdami originalo.
Aštuntajame dešimtmetyje bendrasis programavimas debiutavo Ada ir CLU programavimo kalbomis. Netrukus po to kitos programavimo kalbos, tokios kaip Java ir C++, pradėjo naudoti bendrąjį programavimą, kad supaprastintų programavimo kodą, tuo pačiu leidžiant tą patį kodą naudoti keliuose scenarijuose. Kiekviena programavimo kalba turi tam tikrą šio kodo naudojimo būdą ir skirtingus terminus jam apibūdinti. „Bendrieji dalykai“, „šablonai“ ir „parametrų tipai“ buvo naudojami tam tikru ar kitu momentu, norint nurodyti bendrojo programavimo atvejus.
Norint suprasti tokio tipo programavimą, svarbu žinoti pagrindines programavimo kalbos veikimo sąvokas. Pavyzdžiui, jei Paulius nori parašyti programą, kuri sudeda du skaičius, jis įveda kompiuterio kodą, kad pridėtų du objektus. Tada jis pasakytų kompiuteriui, kad tie du objektai yra skaičiai ir kad galutinis atsakymas taip pat turėtų būti skaičius.
Nors programa veiks tol, kol Paulius prideda du skaičius, ji sugenda, jei jis bandys pridėti ką nors kita. Jei Paulius nuspręstų sujungti sakinius, kad sudarytų pastraipą, programa sugestų, nes rastų raides, o ne skaičius. Tačiau Paulius galėtų išspręsti šią problemą, naudodamas bendrąjį programavimą, kad nurodytų pradinei programai priimti daugybę kintamųjų – tiek skaičių, tiek raidžių – ir tokiu būdu programa galėtų kurti sakinius arba atlikti papildymą.
Ne visoms programavimo kalboms reikia bendrojo programavimo koncepcijos, kad jos būtų veiksmingos. Tos, kurios ją naudoja, yra statiškai įvestos kalbos. Tai tiesiog reiškia, kad kodas, taip sakant, yra iškaltas akmenyje ir negali būti pakeistas, kol programa veikia. Dėl šios priežasties, jei programuotojas nurodė, kad vartotojo įvestis būtų raidžių forma, o vartotojas įvedė skaičių, programa negalės naudoti įvesties. Taigi programuotojai stengiasi numatyti visus loginius duomenų tipus, kuriuos vartotojas gali įvesti, nesvarbu, ar tai būtų skaičiai, raidės ar simboliai, ir sukurti programą, kuri gali atitinkamai koreguoti.