Очень очень лаконичное освещение.

Разница между этими двумя стилями кодирования не столь очевидна, и я надеюсь, что в этой статье я быстро извергну ее.

Взяв за основу комментарий к сообщению SO, но, по моим собственным словам, понятие декларативного программирования больше похоже на абстракцию некоторого базового императивногокода. 😎

Цитата с сайта WhatIs.com (указываю автору):

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

Пример использования JavaScript:
декларативный

Обратите внимание, что на приведенном выше изображении функция reduceсуммирует числа из массива для нас, мы не знаем, как работает эта функция.

Обязательно

Обратите внимание, что мы императивно указываем, как должна быть вычислена сумма на этом последнем изображении, мы могли бы в функциональном блоке forEach написать что-то вроде:

sum = sum + number

Который по-прежнему вычисляет сумму, но с другим выражением.

Вот и все, может быть, я добавлю сюда больше знаний в будущем.