С популяризацией React начались дискуссии о декларативном программировании. Давайте посмотрим на разницу между императивным и декларативным программированием.

В императивном программировании вы даете компьютеру пошаговые инструкции о том, как выполнить задачу. В декларативном программировании вы упоминаете только то, что вам нужно достичь.

Например, если вы заходите к своему соседу и вам нужно воды, в императивной парадигме вы можете сказать:

  1. Возьмите стакан с полки
  2. Откройте кран
  3. Держите стакан под краном до тех пор, пока он не наполнится
  4. Закройте кран
  5. Дай мне стакан

В декларативной парадигме вам нужно только сказать: «Можно мне немного воды, пожалуйста».

В императивном программировании мы объявляем, как должна выполняться задача. В декларативном программировании программа сама решает, как выполнить задачу.

Большая часть C# и Java являются императивными. (Однако некоторые из них могут быть декларативными).

Вот пример, взятый из MS Docs для императивного программирования.

var numbersOneThroughTen = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = new List<int>();
foreach (var number in numbersOneThroughTen)
{    if (number % 2 == 0)
    {
        evenNumbers.Add(number);
    }
}

Вот та же задача, но на этот раз в декларативном программировании.

var numbersOneThroughTen = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = numbersOneThroughTen.Select(number => number % 2 == 0);