Der Unterschied zwischen reaktiver und funktional-reaktiver Programmierung

75

Ich habe in letzter Zeit einige Forschungen zur reaktiven Programmierung durchgeführt und finde es schwierig, eine gute Beschreibung des Unterschieds zwischen reaktiv und funktional- reaktiv zu finden.

Ist es einfach so, dass die reaktive Programmierung mit funktionalen Methoden / Paradigmen implementiert wird, anstatt deklarative oder OO-Paradigmen zu verwenden?

seadowg
quelle

Antworten:

73

Functional Reactive Programming (FRP) ist ein spezifisches Programmiermodell mit einer spezifischen Semantik. (Tatsächlich gibt es zwei Varianten, die manchmal als "klassisches FRP" und "Pfeil-FRP" bezeichnet werden.) Ich habe eine Zusammenfassung in einer Antwort auf "Was ist (funktionale) reaktive Programmierung?" . Wie ich dort sagte, waren die beiden Schlüsseleigenschaften für mich immer (a) genaue und einfache Bezeichnung und (b) kontinuierliche Zeit. Ich bedauere, dass dieses Modell aus mehreren Gründen als "funktionale reaktive Programmierung" bezeichnet wurde:

  • Dieser Name lässt "Zeit" weg und Zeit ist für mich von zentraler Bedeutung.
  • Der Begriff "funktional" hat so wenig spezifische / klare Bedeutung. Ich bevorzuge Peter Landins vorgeschlagenen Ersatz "denotativ". (Siehe die Zitate und Verweise in diesem Blog-Kommentar .)
  • Es fällt den Menschen leicht, falsch zu glauben, dass sie wissen, was der Begriff bedeutet, weil sie die Bedeutungen (mehr oder weniger) jedes der drei Wörter kennen.

Aus Gründen der Beschreibung und Genauigkeit bevorzuge ich den Begriff "denotative zeitkontinuierliche Programmierung" (vorgeschlagen von Jake McArthur in einem Gespräch vor einiger Zeit) gegenüber "funktionale reaktive Programmierung".

Ich habe ein sehr kurzes Stück über den Ursprung von FRP im Blog-Beitrag Frühe Inspirationen und neue Richtungen in der funktionalen reaktiven Programmierung geschrieben .

Conal
quelle
22

FRP ist eine Kombination aus funktionaler Programmierung (Programmierparadigma, das auf der Idee basiert, dass alles eine reine Funktion ist) und reaktivem Programmierparadigma (basierend auf der Idee, dass alles ein Strom ist (Beobachter und beobachtbare Philosophie)). Es wird angenommen, dass es das Beste der Welt ist.

Die Definition von beiden gibt eine klarere Unterscheidung zwischen den beiden.

Krishna Ganeriwal
quelle
tolle Übersicht :)
Brahem Mohamed