Razlika između relacionih i funkcionalnih programskih jezika

Programski jezici predstavljaju osnovu za rešavanje različitih računarskih problema, a dva najistaknutija paradigmatska pristupa su relaciono i funkcionalno programiranje. Ovi pristupi imaju različite koncepte i metode za obradu podataka i implementaciju logike, i često se koriste u različitim kontekstima. U ovom tekstu ćemo detaljnije razmotriti razlike između relacionih i funkcionalnih programskih jezika, kao i njihovu primenu u praksi.

Relacioni programski jezici

uredi

Relacioni programski jezici su usmereni na rad sa podacima koji su predstavljeni kao tabele (relacije). Ovi jezici su zasnovani na relacionom modelu podataka, a najpoznatiji je S-KJU-L(Strukturirani jezik upita). Relacioni jezici se koriste za upravljanje podacima u bazama podataka, kao što su upiti, umetanje, ažuriranje i brisanje podataka. Oni omogućavaju laku manipulaciju podacima i često podržavaju transakcije i deklarativni pristup (postignuće rezultata bez brige o implementaciji).

Primer: S-KJU-L, LIN-KJU, KJU.

Funkcionalni programski jezici

uredi

Funkcionalni programski jezici naglašavaju upotrebu funkcija kao osnovnih gradivnih bloka programa. U ovim jezicima, podaci su neizmenjivi (imjutabl), a operacije se svode na primenu funkcija. Ovi jezici favorizuju čiste funkcije koje ne menjaju stanje programa. Funkcionalno programiranje je idealno za kompleksne matematičke operacije i rad sa paralelnim i raspodeljenim sistemima.

Primer: Haskel, Lisp, Erlang.

Osnovne razlike između relacionih i funkcionalnih jezika

uredi
Karakteristika Relacioni jezici Funkcionalni jezici
Osnovna koncepcija Rad sa tabelama podataka i relacijama (S-KJU-L,Link) Funkcije kao osnovne građevne jedinice programa
Manipulacija podacima Često se koriste za upravljanje podacima u bazama podataka Rad sa neizmenjivim podacima i funkcijama
Stil programiranja Deklarativni (opišete šta želite, ne kako) Deklarativni, ali više usmeren na funkcije kao osnovne jedinice
Mutacija stanja Moguće (posebno u S-KJU-L bazama podataka i TCM upravljanju) Nema mutiranja stanja, sve je neizmenjivo
Podrška za transakcije Da, često se koriste za rad sa velikim bazama podataka Ne podržavaju direktno transakcije, već rade sa neizmenjivim podacima
Složenost implementacije Često zahtevaju složenu implementaciju za optimizaciju upita Veća jednostavnost u upravljanju stanjem i testiranju programa
Jezici sa podrškom S-KJU-L,Link, Kju Haskel, Lisp, Erlang, F#

Zaključak

uredi

Relacioni i funkcionalni programski jezici predstavljaju dva različita pristupa u razvoju softvera. Dok relacioni jezici najviše odgovaraju za rad sa podacima u bazama podataka i transakcijama, funkcionalni jezici su više usmereni na matematičku logičku strukturu i rad sa neizmenjivim podacima. Razlika u pristupima znači da će izbor između njih zavisiti od vrste problema koji treba da se reši i konteksta u kojem će program biti primenjen.

Reference

uredi
  1. Codd, E. F. (1970). "A Relational Model of Data for Large Shared