Декларативное программирование

В статье рассматривается доминирующая парадигма обширного и разнообразного набора областей – декларативное программирование.

Декларативное программирование – это парадигма компьютерного программирования, в которой разработчик определяет, что должна делать программа, а не явно определяет, как она должна это делать. Этот подход естественным образом подходит для программного определения систем формальной логики и имеет то преимущество, что упрощает программирование некоторых приложений параллельной обработки.

Как работает декларативное программирование?

Правильная работа декларативного программирования зависит от логики и ограничений для определения установки и результата. Ограничения определяют свойства, которые выполняются в конкретном сценарии программирования и устанавливаются в программных библиотеках.

Логическое программирование выражает правила и факты, касающиеся области, в которой используется декларативное программирование.

Предметно-ориентированный язык (англ. domain-specific language, DSL) используется вместе с декларативным программированием, так что поток управления встроен в язык и существует отдельно от логики.

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

Декларативные языки

Декларативный язык программирования – это тип языка программирования, не требующий от программиста определения шагов, которым должна следовать машина. Вместо этого он объявляет и описывает факты и отношения между точками данных и элементами.

Существует два наиболее распространенных видов декларативных языков: функциональные языки и языки логического программирования. К тому же, декларативные языки программирования ещё могут быть классифицированы как программирование с ограничениями, логическое программирование и логическое программирования с ограничениями.

Языки логического программирования

PROLOG (сокращ с англ. программирование в логике) – известный пример языков логического программирования. Эти языки представляют программу в виде набора логических связей. Языки логического программирования аналогичны языку баз данных SQL (сокращ. с англ. язык структурированных запросов). Программы выполняются механизмом вывода, который отвечает на запрос путем систематического поиска этих отношений с целью создания выводов, которые будут отвечать на запрос. PROLOG в большинстве случаев использовался в обработке естественного языка, а также в других программах искусственного интеллекта.

Функциональные языки

Эти языки имеют математический стиль. Можно построить функциональную программу, применяя функции к аргументам. Функциональные языки, например, LISP, ML и Haskell, используются как исследовательские инструменты при разработке языков, в автоматических средствах доказательства математических теорем и даже в некоторой степени в коммерческих проектах.

Достоинства декларативного программирования

Существует несколько преимуществ декларативной парадигмы:

Читабельность/удобство использования

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

Краткость

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

Повторное использование

Проще создавать код, который можно использовать для разных целей; то, что заведомо сложно при использовании императивных конструкций.

Идемпотентность

Декларативное программирование позволяет начать с конечного состояния и позволить программе понять его за вас.

Исправление ошибок

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

Ссылочная прозрачность

Выражения можно заменить их соответствующими значениями, и поведение программы не изменится.

Коммутативность

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

Стоит ли использовать декларативное программирование?

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

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

Но на практике часто используются смешанные формы парадигм, когда декларативные языки программирования дополняются императивными методами. Однако это увеличивает подверженность ошибкам и может ухудшить разборчивость кода.

Поделиться:

Теги:

    Сделаем это вместе -
    У вашего бизнеса есть история

    Заказ обратного звонка

    Мы перезвоним вам в течение часа или в удобное для вас время

    Live Chat
    ×
    Мы используем файлы cookie, чтобы обеспечить вам максимальное удобство на нашем веб-сайте. Если вы продолжите использовать этот сайт, мы будем считать, что вы согласны с их использованием.
    Политика конфиденциальности