What's the difference between declarative and imperative programming paradigms? Which one is React?