Programiranje s ograničenjima je oblik deklarativnog programiranja koji koristi matematička ograničenja kako bi definirao kako se varijable unutar programa međusobno odnose. Ove vrste tehnika programiranja obično su u interakciji s drugim vrstama tehnika programiranja, kao što su logičke i imperativne tehnike. Ove logičke i imperativne tehnike čine upravo ono što programiranje ograničenja izbjegava, logički napredujući kroz računske iskaze i izvršavajući promjene. Programiranje s ograničenjima često se kombinira s logičkim programiranjem kako bi se formiralo logičko programiranje ograničenja, što je proširena verzija logičkog programiranja. Logičko programiranje uključuje doslovne zahtjeve i usporedbe varijabli, a programiranje logike ograničenja to proširuje na ograničenja.
Ograničenje je napredni matematički pojam, ali je u biti uvjet koji mora biti zadovoljen pri donošenju odluke. Ovo je pojednostavljena definicija, a paradigmu programiranja najbolje je razumjeti kada korisnik dobro razumije matematiku. Kada se promatraju ograničenja koja se odnose na programiranje ograničenja, ograničenja prikazuju kako se varijable u programu moraju međusobno odnositi.
Deklarativno programiranje je programska paradigma koja ne uključuje diktira kako se svaki pojedinačni korak programa provodi ili izvršava. Umjesto da se usredotoče na korake, ove vrste jezika specificiraju ili deklariraju računske odnose. Programiranje s ograničenjima je vrsta deklarativnog programiranja jer se logika izražava i objašnjava, umjesto da se sustavno izvršava korak po korak.
U računalnom programiranju varijable imaju definiciju koja se može malo razlikovati od njihove matematičke definicije. Varijabla može značiti bilo što osim ako računalni program nije definirao njezino značenje. Na prvi pogled, kada se kaže da programiranje s ograničenjima koristi ograničenja kako bi definiralo kako se varijable moraju međusobno povezati, može zvučati kao da ovo nije dovoljno za pisanje cijelog računalnog programa. U stvarnosti, budući da varijable računalnog programiranja mogu obuhvatiti neograničenu količinu podataka, definiranje specifičnosti njihovog međusobnog odnosa ima vrlo visoku razinu programske moći.
Programiranje s ograničenjima je programska paradigma, što znači da iznosi temeljne ideje o tome što osnovne stvari znače koje se mogu radikalno razlikovati u usporedbi s drugim programskim paradigmama. Različite paradigme mogu učiniti gotovo sve na drugačiji način od drugog jezika. Jedan jezik može koristiti sekvencijalnu logiku, dok drugi ne. Različite paradigme često koriste različite osnovne blokove informacija i odnosa za predstavljanje instrukcija. Mnoge stvari koje su temeljne za druge paradigme programiranja, kao što je logičko izvršavanje mnogih redova u nizu, ne koriste se u programiranju s ograničenjima.