Ani aktorzy, ani FRP nie chcą streamować. Aktorzy nie obsługują nawet zewnętrznej konfiguracji strumienia wyjściowego.
FRP silnie charakteryzuje się sygnałami i zdarzeniami modelującymi na liniowej osi czasu, co umożliwia komparację zachowań FRP w sposób deterministyczny. Aktorzy są silnie scharakteryzowani przez przetwarzanie komunikatów w niedeterministycznej kolejności i mają prawie żadne właściwości kompozycyjne (tzn. Nie można traktować układu dwóch aktorów jako większego aktora).
Jeśli szukasz podobieństw, zarówno aktorzy, jak i FRP mają bliski związek z rachunkiem lambda. Oba mogą modelować systemy reagujące na wkład człowieka. Oba obsługują modelowanie stanu wewnętrznego (lokalnego).
FRP obsługuje stan lokalny poprzez całki lub akumulatory (krotnie w czasie), podczas gdy model aktorów obsługuje stan, umożliwiając każdemu aktorowi określenie swojego zachowania dla następnego komunikatu w odpowiedzi na bieżący. Ta wszechobecna obsługa stanu lokalnego sprawia, że zarówno FRP, jak i Aktorzy nie są odpowiednie do programowania na żywo (lub aktualizacji kodu programu w czasie wykonywania); zbyt łatwo jest stracić ważny stan.
W odniesieniu do domen aplikacji:
Model aktorów doskonale nadaje się do otwartych systemów, w których możemy chcieć zainstalować lub utrzymywać aktorów w czasie wykonywania. Model aktorów jest również słabo dostosowany do systemów rozproszonych, ponieważ niedeterministyczne porządkowanie komunikatów może ułatwić implementację zgodną. (Powodem, dla którego aktorzy nie są bardziej przystosowani do systemów rozproszonych, jest to, że zapewnienie wiadomości przychodzącej „raz i tylko raz” jest dość trudne w obliczu zakłóceń, a aktorzy również często wymagają rozproszonej GC, co jest uciążliwe).
FRP jest dobrze dostosowany do zamkniętych systemów, które działają w czasie - np. Kontrolery robotów, programowanie muzyki, zabawki obliczeniowe. Determinizm i cechy kompozycyjne sprawiają, że FRP jest wygodniejszy w pracy niż aktorzy, przynajmniej w tych przypadkach, w których FRP może bezpośrednio modelować rozwiązanie. Integracja FRP z efektami (elegancko, bez hakowania modelu nieczystością) okazała się trudna. Niedawno pracowano nad skutecznym FRP poprzez „tunele czasoprzestrzenne” - efektywny, unikalny lub liniowy dostęp do zasobów.
Istnieją inne modele, które leżą gdzieś między FRP a aktorami.
Programowanie oparte na przepływie (FBP), opracowane przez Johna Paula Morrisona, naprawdę obsługuje przesyłanie strumieniowe wiadomości.
Protokoły Time Warp (lub nowsze prace nad Lightweight Time Warp (LTW)) umieszczają wiadomości podobne do aktorów na logicznej osi czasu, aby zapewnić bardziej kontrolowane i kompozycyjne pojęcie przekazywania wiadomości. Dopasowanie czasu jest często stosowane w dużych systemach równoległych i rozproszonych, np. W obliczeniach naukowych. Pierwotne dopasowanie czasowe nie było odpowiednie dla interaktywnych symulacji (reagowanie na wkład człowieka), a LTW jest tylko nieznacznie odpowiedni.
Zajmuję się programowaniem Reactive Demand Programming (RDP), które umożliwia responsywną, kompozycyjną, podobną do FRP manipulację i przetwarzanie sygnałów w systemach otwartych i rozproszonych oraz eliminuje stan lokalny. RDP osiąga się poprzez ograniczenie efektów ubocznych do przemiennego, idempotentnego wpływu na stan zasobów za pomocą sygnałów w czasie. RDP wymaga ponownego przemyślenia modeli zasobów i stanów.