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

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

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

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

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

Определение

Декларативное программирование часто определяется как любой стиль программирования, который не является императивным. Ряд других общих определений пытается дать ему определение, просто противопоставляя его императивному программированию. Например:

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

Эти определения существенно перекрываются.

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

Читайте также:  Какие этапы существуют при программировании

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

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

Подпарадигмы

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

Программирование в ограничениях

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

Доменные языки

Хорошо известные примеры декларативных предметно-ориентированных языков (DSL) включают язык ввода генератора синтаксического анализатора yacc, QML, язык спецификации сборки Make, язык управления конфигурацией Puppet, регулярные выражения и подмножество SQL (например, запросы SELECT). Преимущество DSL состоит в том, что они полезны, но не обязательно должны быть полными по Тьюрингу, что упрощает чисто декларативный характер языка.

Многие языки разметки, такие как HTML, MXML, XAML, XSLT или другой пользовательский интерфейс языки разметки часто декларативны. HTML, например, описывает только то, что должно отображаться на веб-странице — он не определяет ни поток управления для рендеринга страницы, ни возможные взаимодействия страницы с пользователем.

По состоянию на 2013 год некоторые программные системы сочетают традиционные языки разметки пользовательского интерфейса (например, HTML) с декларативной разметкой, которая определяет, что (но не как) системы внутреннего сервера должны делать для поддержки заявленного интерфейса. Такие системы, обычно использующие доменное пространство XML, могут включать абстракции синтаксиса базы данных SQL или параметризованные вызовы веб-служб с использованием передачи репрезентативного состояния (REST) ​​и SOAP.

Гибридные языки

Make-файлы, например, декларативно определяют зависимости, но также включают обязательный список действий, которые необходимо предпринять. Точно так же yacc декларативно определяет контекстно-свободную грамматику, но включает фрагменты кода с основного языка, что обычно является обязательным (например, C ).

Логическое программирование

Языки логического программирования, такие как состояние Prolog и отношения запросов. Специфика ответов на эти запросы зависит от реализации и средства доказательства теорем, но обычно принимает форму некоторого вида унификации. Как и функциональное программирование, многие языки логического программирования допускают побочные эффекты и, как следствие, не являются строго декларативными.

Моделирование

Модели или математические представления физических систем могут быть реализованы в компьютерном коде, который является декларативным. Код содержит ряд уравнений, а не императивных присваиваний, которые описывают («декларируют») поведенческие отношения. Когда модель выражается в этом формализме, компьютер может выполнять алгебраические манипуляции, чтобы наилучшим образом сформулировать алгоритм решения. Математическая причинность обычно накладывается на границы физической системы, в то время как описание поведения самой системы является декларативным или акаузальным. Декларативные языки моделирования и среды включают Analytica, Modelica и.

См. Также

Ссылки

Внешние ссылки

На Викискладе есть материалы, связанные с Декларативным программированием.
  • Франс Коенен. Характеристики декларативных языков программирования. 1999.
  • Роберт Харпер.
    • Что, если что, является декларативным языком?. 2013.
    • Существует такая вещь, как декларативный язык, и это лучший DSL в мире. 2013.
  • Олоф Торгерссон. Заметка о парадигмах декларативного программирования и будущем определяющего программирования. 1996.

Источник

22. Декларативные языки программирования и их сфера применения.

Декларативные языки программирования — это языки объявлений и построения структур. К ним относятся функциональные и логические языки программирования. В этих языках не производится алгоритмических действий явно, то есть алгоритм не задается прграммистом, а строится самой программой. В декларативных языках задается, производится построение какой-либо структуры или системы, то есть декларируются (объявляются) какие-то свойства создаваемого объекта. Эти языки получили широкое применение в системах автоматизированного проектирования (САПР), в так называемых CAD-пакетах, в моделировнии, системах исккусственного интеллекта.

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

Декларативный язык программирования — это язык программирования высокого уровня, в котором вместо пошагового алгоритма решения задачи («как» решить задачу) описывается «что» требуется получить в качестве результата. Механизм обработки сопоставления с образцом декларативных утверждений уже реализован в устройстве языка. Типичным примером таких языков являются языки логического программирования (языки, основанные на системе правил).

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

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

Наиболее распространённым языком логического программирования является язык Пролог.

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

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

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

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

64. Системы автоматизированного проектирования (сапр).

Система автоматизированного проектирования (САПР) — это организационно-техническая система, состоящая из совокупности комплекса средств автоматизации проектирования и коллектива специалистов подразделений проектной организации, выполняющая автоматизированное проектирование объекта, которое является результатом деятельности проектной организации.

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

Источник

Оцените статью