Декларативное. Императивное. Интенциональное.
Разработчики постоянно говорят о парадигмах программирования.
Мы используем императивное программирование. Мы используем декларативное программирование. Мы используем функциональный или объектно-ориентированный стили.
Но нам не хватает еще одного уровня.
Будущее — за интенциональностью.
Императивное программирование говорит компьютеру точно, что делать. Вы предоставляете пошаговые инструкции. Вы фокусируетесь на процессе. Вы контролируете последовательность. Это дает точность, но вы берете на себя бремя каждого отдельного шага.
Декларативное программирование изменило это. Вы описываете, что вы хотите получить, а не как это сделать. SQL — идеальный пример. Вы запрашиваете данные. Вы не пишете циклы и не управляете памятью. Система берет работу на себя. Это повышает продуктивность.
Тем не менее, даже декларативные системы часто заставляют вас думать о реализации.
Посмотрите на адаптивный веб-дизайн. Вы пишете код для колонок и брейкпоинтов. Вы все еще описываете механику. Вы описываете, как должен работать макет.
Система знает, что вы делаете, но она не знает, зачем.
Интенциональное программирование меняет цель.
Вместо описания CSS вы описываете желаемое поведение. Вы говорите системе адаптироваться. Вы говорите системе перестроиться в зависимости от контекста. Фокус смещается с механизма на цель.
Программное обеспечение движется в этом направлении.
- SQL: Вы описываете данные.
- Infrastructure as Code: Вы описываете ресурсы.
- Nectarine: Вы описываете схемы и API.
Система берет остальное на себя.
Лучшие программные библиотеки делают больше, чем просто предоставляют функции. Они предоставляют язык. Они учат вас думать. Каждый API и каждое название помогают выстроить философию.
Реализация важна, но она не должна просачиваться на каждый уровень. Разработчики не хотят описывать механику. Они хотят выражать намерение. Они знают, чего хотят достичь.
Хорошие абстракции скрывают сложность. Великие абстракции делают намерение очевидным.
Императивный и декларативный стили никуда не денутся. Но мы движемся к системам, которые понимают цели. Нам нужны системы, которые переводят предназначение в результат.
Сосредоточьтесь на том, что вы имеете в виду, а не только на том, как это работает. Смысл важнее механики.
Источник: https://dev.to/stinklewinks/declarative-imperative-intentional-4j60