リアクティブプログラミングとは

まず次のような定義を行います。
a = 1
b = a * 3
そしてaに2を代入してみます。
a = 2

そしてbを出力してみましょう。
通常の命令型言語であれば、この結果は、
b -> 3
となります。
しかし、リアクティブプログラミングでは、
b -> 6
となります。

b = a * 3
の意味が、命令型プログラミングとリアクティブプログラミングでは異なるわけです。
命令型プログラミングでは、そのときのaの値である1を用いて、
b = a * 3
b = 1 * 3
b = 3
という意味だと解釈され、bは3に束縛されます。
そのあとaの値が書き換えられても、bは変わらず3のままです。

一方、リアクティブプログラミングでは、
b = a * 3
は、
「bは、常にaの3倍である」
という意味になります。
時間がたち、aの値が変化しても、
b = a * 3
という関係は変わりません。

この一見奇妙な振る舞いは、日常の感覚からすると、実は普通だったりします。例えば、「温度計のさす目盛の位置は、温度の関数になっている」と言ったとき、温度によって目盛の位置が決まる、温度が変化すればそれに合わせて目盛りの位置も当然変化します。身長と体重からBMI値が求まるなら、身長や体重が変化すればBMI値も変化するのは当然です。
こういった関係のように、時間が経過し状態が変化しても一定して変わらない関係に着目するのがリアクティブプログラミングだともいえます。