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]- 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.
- 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.
- 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, SKJUEL 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]- Tarner, D. A. (2000). Uvod u funkcionalno programiranje kroz lamda račun. Prentice Hol.
- Člipala, A. (2013). Sertificirano programiranje sa zavisnim tipovima. MIT Pres.
- Harel, D. (1987). O moći prostih programskih jezika. Springer-Verlag.
- Mejning, Dž., i Sanders, S. (2016). SQL: Potpuna referenca. MekGrav-Hil.
- Mejer, E. (1984). Deklarativno programiranje: principi i praksa. Vili.