web-dev-qa-db-ja.com

ReactiveプログラミングとFunctional-Reactiveプログラミングの違い

最近、リアクティブプログラミングの調査を行っていますが、ReactiveとFunctional-Reactiveの違いを適切に説明するのが難しいようです。

単純に、反応型プログラミングは、宣言型またはOOパラダイムを使用するのではなく、関数メソッド/パラダイムを使用して実装されていますか?

69
seadowg

関数型反応型プログラミング(FRP)は、特定のセマンティクスを持つ特定のプログラミングモデルです。 (実際には、「クラシックFRP」と「矢印FRP」と呼ばれることもある2つのバリアントがあります。)私は要約を 「(機能的)反応型プログラミングとは何ですか?」の回答)に示しました 。そこで述べたように、私にとって2つの重要な特性は、常に(a)正確で単純な表記と(b)継続時間でした。このモデルが「関数型反応型プログラミング」と呼ばれるようになったのは残念ですが、いくつかの理由があります。

  • その名前は「時間」を省略し、時間は私にとって中心です。
  • 「機能的」という用語には、具体的/明確な意味はほとんどありません。私はピーター・ランディンの提案された「代名詞的」な置き換えをとても気に入っています。 (引用 このブログのコメント の参照を参照してください。)
  • 3つの単語のそれぞれの意味(多かれ少なかれ)を知っているので、人々がその用語の意味を知っていると誤って考えるのは簡単です。

説明と正確さのために、私は「機能的反応型プログラミング」よりも「代表的な連続時間プログラミング」(Jake McArthurがしばらく前の会話で示唆)を好む。

FRPの起源に関する非常に短い記事をブログの投稿 の初期のインスピレーションと関数型反応プログラミングの新しい方向性 で書きました。

65
Conal

FRPは、関数型プログラミング(すべてが純粋な関数であるという考え方に基づいて構築されたプログラミングパラダイム)と反応型プログラミングパラダイム(すべてがストリームであるという考え方(オブザーバーとオブザーバブルの哲学))を組み合わせたものです。それは世界で最高であると思われます。

両方の定義により、2つの違いがより明確になります。

15
kg11