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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Парадигмы программирования

Рефлексивность
Гомоиконность

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

Декларативные программы не используют понятия состояния, в частности, не содержат переменных и операторов присваивания, обеспечивается ссылочная прозрачность. Наиболее близким к «чисто декларативному» программированию является написание исполнимых спецификаций. В этом случае программа представляет собой формальную теорию, а её выполнение является одновременно автоматическим доказательством этой теории[прояснить] (соответствие Карри — Ховарда), и характерные для императивного программирования составляющие процесса разработки (проектирование, рефакторинг, отладка и другие) в этом случае исключаются: программа проектирует и доказывает сама себя[прояснить].

К подвидам декларативного программирования также зачастую относят функциональное и логическое программирование. Несмотря на то, что программы на таких языках нередко содержат алгоритмические составляющие, архитектура в императивном понимании (как нечто отдельное от кодирования) в них также отсутствует: схема программы является непосредственно частью исполняемого кода[1].

На повышение уровня декларативности нацелено языково-ориентированное программирование.

«Чисто декларативные» компьютерные языки зачастую неполны по Тьюрингу — так как теоретически не всегда возможно порождение исполняемого кода по декларативному описанию. Это иногда приводит к спорам о корректности термина «декларативное программирование» (менее спорным является «декларативное описание решения» или, что то же самое, «декларативное описание задачи»).

Примечания[править | править код]

Литература[править | править код]

  • Зюзьков В. М. Математическое введение в декларативное программирование: учебное пособие. — Томск: ТГУ, 2003. — 83 с.

Ссылки[править | править код]