Разлика између релационих и функционалних програмских језика

Програмски језици представљају основу за решавање различитих рачунарских проблема, а два најистакнутија парадигматска приступа су релационо и функционално програмирање. Ови приступи имају различите концепте и методе за обраду података и имплементацију логике, и често се користе у различитим контекстима. У овом тексту ћемо детаљније размотрити разлике између релационих и функционалних програмских језика, као и њихову примену у пракси.

Релациони програмски језици

уреди

Релациони програмски језици су усмерени на рад са подацима који су представљени као табеле (релације). Ови језици су засновани на релационом моделу података, а најпознатији је С-КЈУ-Л(Структурирани језик упита). Релациони језици се користе за управљање подацима у базама података, као што су упити, уметање, ажурирање и брисање података. Они омогућавају лаку манипулацију подацима и често подржавају трансакције и декларативни приступ (постигнуће резултата без бриге о имплементацији).

Пример: С-КЈУ-Л, LIN-КЈУ, КЈУ.

Функционални програмски језици

уреди

Функционални програмски језици наглашавају употребу функција као основних градивних блока програма. У овим језицима, подаци су неизмењиви (имјутабл), а операције се своде на примену функција. Ови језици фаворизују чисте функције које не мењају стање програма. Функционално програмирање је идеално за комплексне математичке операције и рад са паралелним и расподељеним системима.

Пример: Хаскел, Лисп, Ерланг.

Основне разлике између релационих и функционалних језика

уреди
Карактеристика Релациони језици Функционални језици
Основна концепција Рад са табелама података и релацијама (С-КЈУ-Л,Линк) Функције као основне грађевне јединице програма
Манипулација подацима Често се користе за управљање подацима у базама података Рад са неизмењивим подацима и функцијама
Стил програмирања Декларативни (опишете шта желите, не како) Декларативни, али више усмерен на функције као основне јединице
Мутација стања Могуће (посебно у С-КЈУ-Л базама података и ТЦМ управљању) Нема мутирања стања, све је неизмењиво
Подршка за трансакције Да, често се користе за рад са великим базама података Не подржавају директно трансакције, већ раде са неизмењивим подацима
Сложеност имплементације Често захтевају сложену имплементацију за оптимизацију упита Већа једноставност у управљању стањем и тестирању програма
Језици са подршком С-КЈУ-Л,Линк, Кју Хаскел, Лисп, Ерланг, Ф#

Закључак

уреди

Релациони и функционални програмски језици представљају два различита приступа у развоју софтвера. Док релациони језици највише одговарају за рад са подацима у базама података и трансакцијама, функционални језици су више усмерени на математичку логичку структуру и рад са неизмењивим подацима. Разлика у приступима значи да ће избор између њих зависити од врсте проблема који треба да се реши и контекста у којем ће програм бити примењен.

Референце

уреди
  1. Codd, E. F. (1970). "A Relational Model of Data for Large Shared