Функциональное реактивное / реляционное программирование - есть ли разница?

12

Я использовал Reactive Cocoa (от GitHub), API-интерфейс для функционального реактивного программирования, который некоторое время использовался с библиотеками Какао, но только что прочитал «Out of the Tar Pit» , статью, которая предположительно представляет концепции, лежащие в ее основе, и я немного растерялся.

В статье представлено (насколько я понимаю) функционально- реляционное программирование, в котором отношения между данными создаются с условиями, которые должны соблюдаться системой FRP для уменьшения количества «случайной» логики и необходимого состояния.

Мой вопрос заключается в том, являются ли эти два понятия - FR (эффективный) P и FR (эляционный) P по существу одним и тем же (причем первый является лишь реализацией второго), или между ними есть принципиальное различие? К сожалению, на данный момент мои знания в области недостаточно хороши, чтобы я мог их достаточно дифференцировать.

Если есть разница, то, как следует из названия, это как-то связано с реакцией на изменения данных. Конечно, Reactive Cocoa (и Rx в C #) имеют концепцию создания сигналов, которые запускаются при изменении данных, и могут использоваться для постоянного изменения значения во времени.

В этом ли разница? Если нет, то что?

(Прошу прощения за плохую пометку, я не могу найти релевантные метки и пока не могу их создать - пожалуйста, обновите метки на что-то более подходящее, если можете.)

danpalmer
источник
2
«Из смоляной ямы» не представляет концепций, лежащих в основе функционально-реактивного программирования - это просто хорошая статья, чтобы понять, почему состояние вредно. Большинство из них относится к чистым FP, FRelP и FReaP.
Джастин Спар-Саммерс

Ответы:

5

Реакция может способствовать изменению без использования реляционной модели. C = A + B Изменение A и / или B и C отреагируют на изменение (но могут закончиться тем же значением). На стр. 42

Подход функционального реляционного программирования (FRP16) получил свое название от того факта, что основные компоненты системы (логика и существенное состояние) основаны на функциональном программировании и реляционной модели (см. Рисунок 2).

сноска 16

Не следует путать с функционально- реактивным программированием [EH97], которое на самом деле имеет некоторые сходства с этим подходом, но не имеет внутренней направленности на отношения или реляционную модель

JeffO
источник
Ах я вижу. Кажется, что существует много общего с реактивными структурами, которые я упомянул, и Функциональным реляционным программированием, конечно, есть некоторые из представленных концепций, но они также черпают свои концепции сигналов из Поведений и Событий этой второй статьи.
Данпалмер
3
Кроссовер в основном на уровне чистого FP. Относительные и реактивные парадигмы на самом деле не имеют много общего.
Джастин Спар-Саммерс