Kas yra apribojimų programavimas?

Apribojimų programavimas yra deklaratyvaus programavimo forma, kuri naudoja matematinius apribojimus, kad nustatytų, kaip programos kintamieji yra susiję vienas su kitu. Tokio tipo programavimo metodai paprastai sąveikauja su kitų tipų programavimo metodais, pvz., loginiais ir imperatyviais metodais. Šios loginės ir imperatyvios technikos atlieka būtent tai, ko išvengia programavimo apribojimų, logiškai progresuodami per skaičiavimo sakinius ir vykdydami pakeitimus. Apribojimų programavimas dažnai derinamas su loginiu programavimu, kad būtų sudarytas apribojimų loginis programavimas, kuris yra išplėstinė loginio programavimo versija. Loginis programavimas apima pažodinius reikalavimus ir kintamųjų palyginimus, o suvaržymų loginis programavimas tai išplečia įtraukiant apribojimus.

Apribojimas yra išplėstinis matematinis terminas, tačiau iš esmės tai yra sąlyga, kurią reikia įvykdyti priimant sprendimą. Tai yra supaprastintas apibrėžimas, o programavimo paradigma geriausiai suprantama, kai vartotojas puikiai supranta matematiką. Žvelgiant į apribojimus, susijusius su apribojimų programavimu, apribojimai parodo, kaip programos kintamieji turi būti susiję vienas su kitu.

Deklaratyvus programavimas yra programavimo paradigma, kuri neapima diktavimo, kaip kiekvienas atskiras programos veiksmas yra atliekamas arba vykdomas. Užuot sutelkę dėmesį į veiksmus, šių tipų kalbos nurodo arba deklaruoja skaičiavimo ryšius. Apribojimų programavimas yra deklaratyvaus programavimo tipas, nes logika išreiškiama ir paaiškinama, o ne sistemingai vykdoma po vieną žingsnį.

Kompiuterių programavime kintamieji turi apibrėžimą, kuris gali šiek tiek skirtis nuo jų matematinio apibrėžimo. Kintamasis gali reikšti bet ką, nebent kompiuterinė programa apibrėžė jo reikšmę. Iš pirmo žvilgsnio, kai sakoma, kad apribojimų programavimas naudoja apribojimus, kad nustatytų, kaip kintamieji turi būti susiję vienas su kitu, gali atrodyti, kad to nepakanka norint parašyti visą kompiuterio programą. Iš tikrųjų, kadangi kompiuterių programavimo kintamieji gali apimti neribotą duomenų kiekį, jų tarpusavio ryšio specifika turi labai didelę programavimo galią.

Apribojimų programavimas yra programavimo paradigma, o tai reiškia, kad jame pateikiamos pagrindinės idėjos apie tai, ką reiškia pagrindiniai dalykai, kurie gali radikaliai skirtis, palyginti su kitomis programavimo paradigmomis. Skirtingos paradigmos praktiškai viską gali padaryti kitaip nei kita kalba. Viena kalba gali naudoti nuosekliąją logiką, o kita – ne. Skirtingos paradigmos dažnai naudoja skirtingus pagrindinius informacijos ir ryšių blokus, kad pateiktų nurodymus. Daugelis dalykų, kurie yra esminiai kitoms programavimo paradigmoms, pvz., logiškas daugelio eilučių vykdymas iš eilės, nėra naudojami apribojimo programavimui.