Reactive Programming is a style of DataflowProgramming where changes in input values are propagated through a function call graph. This should be familiar to users of spreadsheets. This is naturally expressed in FunctionalProgramming, resulting in FunctionalReactiveProgramming.
Related to EventDrivenProgramming, EventDrivenArchitecture, ComplexEventProcessing, EventStreamProcessing. These aren't associated with 'changes to inputs', but rather to external discrete observations; however, the relationship is a close one.
ObserverPattern can be used to implement ReactiveProgramming, but requires explicit caching, far too much SelfDiscipline and knowledge to avoid problematic SideEffects that bite you in the arse later. Most programmers screw up. (Related: DeprecatingTheObserverPattern)
FlowBasedProgramming may also be leveraged into ReactiveProgramming, but isn't ideally suitable for it.
A new ReactiveProgramming model is under development, called ReactiveDemandProgramming, supporting bi-directional communication of demands (making it more suitable for open modularity, constraint programming, distributed programming).