Programiranje z omejitvami je oblika deklarativnega programiranja, ki uporablja matematične omejitve za opredelitev, kako so spremenljivke v programu povezane med seboj. Te vrste programskih tehnik običajno sodelujejo z drugimi vrstami tehnik programiranja, kot so logične in imperativne tehnike. Te logične in nujne tehnike naredijo točno tisto, čemur se izogiba programiranje z omejitvami, logično napreduje skozi računske stavke in izvaja spremembe. Programiranje z omejitvami se pogosto kombinira z logičnim programiranjem, da se oblikuje logično programiranje z omejitvami, ki je razširjena različica logičnega programiranja. Logično programiranje vključuje dobesedne zahteve in primerjave spremenljivk, logično programiranje omejitev pa to razširi na omejitve.
Omejitev je napreden matematični izraz, vendar je v bistvu pogoj, ki mora biti izpolnjen pri sprejemanju odločitve. To je poenostavljena definicija in paradigmo programiranja je najbolje razumeti, če uporabnik dobro razume matematiko. Ko gledamo na omejitve, ki se nanašajo na programiranje omejitev, omejitve prikazujejo, kako se morajo spremenljivke v programu povezati med seboj.
Deklarativno programiranje je programska paradigma, ki ne vključuje narekovanja, kako se izvaja ali izvaja vsak posamezen korak programa. Namesto da bi se osredotočili na korake, te vrste jezikov določajo ali deklarirajo računske odnose. Programiranje z omejitvami je vrsta deklarativnega programiranja, ker je logika izražena in razložena, namesto da bi se sistematično izvajala korak za korakom.
V računalniškem programiranju imajo spremenljivke definicijo, ki se lahko nekoliko razlikuje od njihove matematične definicije. Spremenljivka lahko pomeni karkoli, razen če računalniški program definira njen pomen. Na prvi pogled, ko se reče, da programiranje z omejitvami uporablja omejitve za opredelitev, kako se morajo spremenljivke povezati med seboj, se morda sliši, kot da to ni dovolj za pisanje celotnega računalniškega programa. V resnici, ker lahko spremenljivke računalniškega programiranja obsegajo neomejeno količino podatkov, ima opredelitev posebnosti, kako se morajo med seboj povezati, zelo visoko raven programske moči.
Programiranje z omejitvami je programska paradigma, kar pomeni, da navaja temeljne ideje o tem, kaj pomenijo osnovne stvari, ki so lahko radikalno drugačne v primerjavi z drugimi programskimi paradigmami. Različne paradigme lahko naredijo skoraj vse na drugačen način kot drug jezik. En jezik lahko uporablja zaporedno logiko, drugi pa ne. Različne paradigme pogosto uporabljajo različne osnovne bloke informacij in odnosov za predstavljanje navodil. Številne stvari, ki so temeljne za druge paradigme programiranja, kot je logično izvajanje številnih vrstic zaporedoma, se ne uporabljajo pri programiranju z omejitvami.