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]- Codd, E. F. (1970). "A Relational Model of Data for Large Shared