Der verlinkte Artikel erklärt zwar relativ ausführlich "Reactive Systems" im Sinne des Reactive-Manifesto, lässt aber bezüglich "Reactive Programming" meiner Ansicht nach zu wünschen übrig.
Der Begriff "Functional Reactive Programming" (FRP) wird in einem kurzen Absatz abgetan und danach der Begriff "Reactive Programming" (RP) definiert, wobei aber so getan wird, als wäre es etwas ganz anderes und die Namensähnlichkeit nur zufällig. Tatsächlich existiert der Begriff "RP" schon länger und wird quasi Äquivalent zu FRP benutzt, einfach weil die funktionale Variante die häufigste (aber nicht einzige) Umsetzung der generellen Idee von "Reactive Programming" ist. Um einen wirklichen Einstieg in Reactive-Programming zu bekommen würde ich z.B. eher das Paper "Survey on Reactive Programming" (http://soft.vub.ac.be/Publications/2012/vub-soft-tr-12-13.pdf) empfehlen. Da ist auch nur von RP die Rede.
Im hier verlinkten Beitrag wird Asynchronität als wesentliche Eigenschaft von Reactive-Programming bezeichnet. Das ist meiner Ansicht nach ebenfalls nicht zwingend der Fall, zumindes wenn man die ursprünglichen Papers liest. Die Kern-Idee von RP ist, mit "zeitlich veränderlichen" Werten zu Programmieren. Der Wert eines Ausdrucks ist nicht festgelegt in dem Moment, in dem der Ausdruck ausgewertet wird sondern der Wert kann sich mit der Zeit verändern. Beim Ausdruck "x = a + b" ist x also eben nicht die Summe von a und b zum Zeitpunkt der Auswertung sondern auch darüber hinaus. Ändert sich z.B. "b" ändert sich "unmittelbar" auch "x".
Ob diese Änderung asynchron oder synchron passiert ist dabei erstmal egal. Man kann diese Grund-Idee auch in Sprachen/Frameworks anwenden, die nicht asynchron arbeiten, z.B. mit JavaFX-Properties (z.B. hier beschrieben: https://jaxenter.de/einfach-und-effizient-reactive-programming-mit-javafx-28498). Das ist trifft zwar strenggenommen ebenfalls nicht die Original-Definition von Functional-Reactive-Programming nach Conan Eliot, aber aus ganz anderen Gründen, nämlich dass die zeitlich-variablen Werte nicht kontinuierlich sind, d.h. dass der Faktor "Zeit" nicht beliebig skaliert werden kann, genau wie bei RxJava und allen anderen eventbasierten reactive-Bibliotheken. Mit Asynchronität hat das nix zu tun.
Mein genereller Eindruck ist, dass im Zuge des Reactive-Manifesto der Begriff "Reactive" ein wenig gekapert wurde. Das Manifesto selbst verwendet zwar den Begriff "Reactive Programming" selbst garnicht, aber die Ähnlichkeit bewirkt eben viele Missverständnisse. Die werden hier aber ebenfalls nicht ausgeräumt weil man zu sehr aus der Blickrichtung "Reactive Manifesto" auf die Sache schaut.
Das Posting wurde vom Benutzer editiert (10.02.2017 18:54).