Императивное программирование описывает, как достичь желаемого результата, фокусируясь на последовательности шагов для изменения состояния программы.
Декларативное программирование описывает, что должно быть результатом, не вдаваясь в детали того, как именно этот результат будет достигнут.
Сравнение:
| Императивное | Декларативное | |
|---|---|---|
| Суть | Описывает шаги (как) | Описывает желаемый результат (что) |
| Фокус | Изменение состояния | Описание целевого состояния |
| Пример (UI) | "Возьми элемент, измени его цвет на синий, затем перемести его на 10 пикселей вниз." | "Элемент должен быть синим и находиться на 10 пикселей ниже своего исходного положения." |
| Примеры ЯП | C, Java, Python (часто используется императивно) | SQL, HTML, Prolog, React (в значительной степени), Flutter |
В Flutter UI строится декларативно: мы описываем, как должен выглядеть UI для текущего состояния, а фреймворк сам определяет и выполняет необходимые изменения для достижения этого состояния.
Пример императивного изменения текста Text виджета в гипотетическом приложении:
java
Пример декларативного изменения текста Text виджета в Flutter:
dart