Osobine deklarativnog programiranja

Deklarativno programiranje je paradigma programiranja u kojoj programer definiše šta program treba da uradi, a ne kako da to postigne. Za razliku od imperativnog programiranja, koje se fokusira na korake koje treba preduzeti kako bi se rešio problem, deklarativno programiranje podrazumeva opisivanje željenog rezultata, dok sve ostalo (kako će to biti postignuto) ostaje na okruženju ili interpretatoru. Ova paradigma omogućava programerima da se fokusiraju na probleme višeg nivoa, čineći kod lakšim za razumevanje, održavanje i proširenje.

Ključne osobine deklarativnog programiranja

uredi

Apstrakcija kontrole

uredi

U deklarativnom programskom okruženju, detalji o tome kako će se nešto izvršiti, kao što su redosled operacija ili konkretne implementacije, apstrahovani su od samog programa. Programer se ne bavi tehničkim aspektima implementacije, već samo definiše krajnji rezultat. Na primer, u CKJUEL-u programer opisuje koji podaci su mu potrebni, a ne način na koji će se podaci iz baze obrađivati ili sortirati.

Optimizacija izvršenja

uredi

Deklarativni jezici često ostavljaju mogućnost optimizacije koda na interpretatoru ili okruženju u kojem program radi. Na primer, SKJUEL upiti mogu biti automatski optimizovani od strane sistema za upravljanje bazama podataka (DBMS), što programeru omogućava da se fokusira na formulisanje upita, a ne na detaljnu optimizaciju.

Fokus na deklaraciju stanja, a ne na proceduru

uredi

Deklarativni pristup podrazumeva da se program ne bavi direktnim opisivanjem kako će se nešto desiti (npr. kakva će biti procedura za rešavanje problema), već samo opisuje kakvo stanje ili rezultat treba da bude postignut. To omogućava veću fleksibilnost i lakšu izmenu u budućnosti.

Bogatstvo izraza i deklaracija

uredi

U deklarativnim jezicima, kao što su SKJUEL i HTML, izrazi koji definišu strukturu i odnos podataka su veoma lako razumljivi i lako se modifikuju. Na primer, u SKJUEL-u programer definiše upit kao skup uslova i operacija nad podacima, ali ne razmatra nijedan konkretan korak koji će se koristiti za pretraživanje ili sortiranje podataka.

Deklarativni jezici

uredi
  1. SKJUEL – Jezik za rad sa relacionim bazama podataka, gde programer opisuje koji podaci su mu potrebni (upiti), ali ne razmatra kako se podaci pretražuju ili sortiraju.
  2. HTML – Jezik za strukturu veb stranica, gde se opisuje koji elementi treba da budu na stranici, ali ne i kako će se ti elementi renderovati.
  3. Funkcionalno programski jezici kao što su Haskel i Erlang – koriste deklarativne principe za rad sa funkcijama i podacima, često izbegavajući promenu stanja.

Prednosti i nedostaci deklarativnog programiranja

uredi

Prednosti:

uredi
  • Čitljivost i lakše održavanje: Kod je lakši za razumevanje i održavanje, jer programer opisuje samo šta želi da postigne, ne baveći se detaljima implementacije.
  • Lakša optimizacija: Okružje može automatski optimizovati kod (na primer, SQL upiti se automatski optimizuju za brže izvršavanje).

Nedostaci:

uredi
  • Mala kontrola nad performansama: Programer ne može uvek da kontroliše kako će biti izvedene optimizacije, što može dovesti do neefikasnosti u nekim slučajevima.
  • Složenost za kompleksne zadake: Za veoma složene i nestandardne zadatke, deklarativni pristup može biti manje fleksibilan i teže primenjiv.
Karakteristika Deklarativno programiranje Imperativno programiranje
Opis procesa Opisuje šta treba uraditi, ne i kako Opisuje konkretne korake koji trebaju biti preduzeti
Fokus Na rezultatu i stanju sistema Na koracima koji vode do rezultata
Primena Upravljanje podacima, grafički interfejs, web development Sistemi sa visokom potrebom za kontrolom izvršenja
Kontrola nad performansama Ograničena, optimizaciju radi okruženje Velika kontrola nad performansama

Primer deklarativne paradigme

uredi
  • SKJUEL : Za izvođenje upita u relacionim bazama podataka, programer može napisati:
SELECT * FROM корисници WHERE старост > 18;

Ovde se definiše šta treba dobiti (svi korisnici stariji od 18), ali ne i kako će upit biti izvršen.

  • HTML : Struktura veb stranice može biti izražena kao:
<html>
  <head><title>Моја веб страница</title></head>
  <body><h1>Добродошли!</h1></body>
</html>

Ovde, programer definiše strukturu stranice, ali ne razmatra način na koji će veb pregledač renderovati stranicu.

Istorijat deklarativnog programiranja

uredi

Deklarativno programiranje počinje sa ranim logičkim jezicima kao što je LISP iz 1958. godine, koji je omogućio veću apstrakciju u programiranju. Tokom 1970-ih, Prolog (1972) je popularizovao deklarativni pristup u rešavanju logičkih problema. U 1980-im, razvoj SKJUEL jezika za rad sa bazama podataka dodatno je unapredio deklarativne metode. Danas se deklarativni principi koriste u širokom spektru oblasti, od veb razvoja (HTML, CSS) do upravljanja podacima i funkcionalnog programiranja.

Pogledaj takođe

uredi

Literatura

uredi
  1. Tarner, D. A. (2000). Uvod u funkcionalno programiranje kroz lamda račun. Prentice Hol.
  2. Člipala, A. (2013). Sertificirano programiranje sa zavisnim tipovima. MIT Pres.
  3. Harel, D. (1987). O moći prostih programskih jezika. Springer-Verlag.
  4. Mejning, Dž., i Sanders, S. (2016). SQL: Potpuna referenca. MekGrav-Hil.
  5. Mejer, E. (1984). Deklarativno programiranje: principi i praksa. Vili.