Разлика између релационих и функционалних програмских језика
Програмски језици представљају основу за решавање различитих рачунарских проблема, а два најистакнутија парадигматска приступа су релационо и функционално програмирање. Ови приступи имају различите концепте и методе за обраду података и имплементацију логике, и често се користе у различитим контекстима. У овом тексту ћемо детаљније размотрити разлике између релационих и функционалних програмских језика, као и њихову примену у пракси.
Релациони програмски језици
[уреди]Релациони програмски језици су усмерени на рад са подацима који су представљени као табеле (релације). Ови језици су засновани на релационом моделу података, а најпознатији је С-КЈУ-Л(Структурирани језик упита). Релациони језици се користе за управљање подацима у базама података, као што су упити, уметање, ажурирање и брисање података. Они омогућавају лаку манипулацију подацима и често подржавају трансакције и декларативни приступ (постигнуће резултата без бриге о имплементацији).
Пример: С-КЈУ-Л, LIN-КЈУ, КЈУ.
Функционални програмски језици
[уреди]Функционални програмски језици наглашавају употребу функција као основних градивних блока програма. У овим језицима, подаци су неизмењиви (имјутабл), а операције се своде на примену функција. Ови језици фаворизују чисте функције које не мењају стање програма. Функционално програмирање је идеално за комплексне математичке операције и рад са паралелним и расподељеним системима.
Пример: Хаскел, Лисп, Ерланг.
Основне разлике између релационих и функционалних језика
[уреди]Карактеристика | Релациони језици | Функционални језици |
---|---|---|
Основна концепција | Рад са табелама података и релацијама (С-КЈУ-Л,Линк) | Функције као основне грађевне јединице програма |
Манипулација подацима | Често се користе за управљање подацима у базама података | Рад са неизмењивим подацима и функцијама |
Стил програмирања | Декларативни (опишете шта желите, не како) | Декларативни, али више усмерен на функције као основне јединице |
Мутација стања | Могуће (посебно у С-КЈУ-Л базама података и ТЦМ управљању) | Нема мутирања стања, све је неизмењиво |
Подршка за трансакције | Да, често се користе за рад са великим базама података | Не подржавају директно трансакције, већ раде са неизмењивим подацима |
Сложеност имплементације | Често захтевају сложену имплементацију за оптимизацију упита | Већа једноставност у управљању стањем и тестирању програма |
Језици са подршком | С-КЈУ-Л,Линк, Кју | Хаскел, Лисп, Ерланг, Ф# |
Закључак
[уреди]Релациони и функционални програмски језици представљају два различита приступа у развоју софтвера. Док релациони језици највише одговарају за рад са подацима у базама података и трансакцијама, функционални језици су више усмерени на математичку логичку структуру и рад са неизмењивим подацима. Разлика у приступима значи да ће избор између њих зависити од врсте проблема који треба да се реши и контекста у којем ће програм бити примењен.
Референце
[уреди]- Codd, E. F. (1970). "A Relational Model of Data for Large Shared