ДП є цілісний мета-підхід до написання програм, тобто «парадигма», застосовна на мета-рівні до будь якої (процедурної, функціональної, декларативної, об'єктно-орієнтованої) машинній програмі на будь-якому машинному мовою;
ДП є система макро, створювана з фраз на людській мові, які стають «метамовою» над конкретним мовою програмування. Користування цими фразами подібно поясненню алгоритмів на «псевдокоді», але в разі ГП вони стають точними «новими операторами» метамови;
програма і документація більше не пишуться як машинний код з примітками. Само конструювання програми йде в порядку, що визначається логікою думки (або пояснень), де макро на «псевдокоді» грають роль абстракцій (над абстракціями та / або кодом) для ясності думки. Змінюється кардинально порядок проходження в програмі, він не машинний, а той, який вимагає логіка;
технічно ДП робиться за допомогою утиліти, яка однією командою запускає препроцесор, розкриває всі макро і «сплутувалися», «заплутує» («tangle») логічний виклад в машинний код, який потім можна компіювати або запускати як зазвичай. Інша команда «сплітає» («weave») з цього загального для програми і пояснень файлу сформатував документацію (для друку, веба і т. д.).
Іншими словами, програма мислиться не як ієрархія, top-down або bottom-up, але як «взаимозависимая мережу концепцій» (звідси назва першої системи ДП - «Web») і створюється як «потік думки», що проходить по цій мережі в зв'язному, логичном вигляді, що зовні робить форму опису схожою на літературне есе. Програміст, таким чином, відмовляється від прив'язки до написаним машиною порядку.
Декларативне програмування
Імперативні мови програмування протиставляються функціональним і логічним мов програмування. Функціональні мови, наприклад, Haskell, не являють собою послідовність інструкцій і не мають глобального стану. Логічні мови програмування, такі як Prolog, зазвичай визначають що треба обчислити, а не як це треба робити.
Структурне програмування — методологія програмування запропонована в 1970-х роках голландським науковцем Дейкстрою (Edsger Wybe Dijkstra), була розроблена та доповнена Ніклаусом Віртом.
Згідно з цією методологією будь-яка програма - це структура створена на основі трьох основних конструкцій:
- послідовне виконання - виконання операцій в тому порядку, в якому вони записані в тексті програми
- розгалуження - виконання одної з двох чи декількох операцій в залежності від виконання певної заданої умови.
- цикл - виконання операції доти доки виконується задана умова (умова продовження циклу)
Кожна конструкція являє собою блок із одним входом і одним або кількома виходами.
Блок Слідування передбачає лінійне виконання операторів програми.
Блок Вибір являє собою точку прийняття рішення про подальший перебіг виконання операторів програми. Вибір здійснюється однією із трьох структур:
- if (єдиний вибір)
- if...else (подвійний вибір)
- switch або case (множинний вибір)
Усі три структури при бажанні можна звести до однієї типу if.
Блок Повторення реалізується одним із трьох способів:
- структура while
- структура do/while
- структура for
Усі три структури можна звести до структури while.
Структурована програма складається із вищеназваних блоків за двома правилами: пакетування (вихід одного блоку з'єднується із входом наступного) і вкладення (будь-який блок може бути замінений на керуючу структуру вибору або повторення).
Таким чином, структуровані програми містять всього сім типів керуючих структур, які з'єднуються всього двома способами.
Такі програми легко створюються і тестуються. Розробка програм займає менше часу. Програми прозоріші і легко піддаються переробці.
Функціональне програмування - розділ дискретної математики і парадигма програмування, в якій процес обчислення трактується як обчислення значеньфункцій в математичному розумінні останніх (на відміну від функцій як підпрограм в процедурному програмуванні).
Протиставляється парадигмі імперативного програмування, яка описує процес обчислень як послідовна зміна станів (у значенні, подібному такому в теорії автоматів). При необхідності, у функціональному програмуванні вся сукупність послідовних станів обчислювального процесу представляється явно, наприклад як список.
Логічне програмування - парадигма програмування, заснована на автоматичному доказі теорем, а також розділ дискретної математики, що вивчає принципи логічного виведення інформації на основі заданих фактів і правил виводу. Логічне програмування засноване на теорії та апараті математичної логіки з використанням математичних принципів резолюцій.
Найвідомішим мовою логічного програмування є Prolog.
Першим мовою [джерело не вказано 871 день] логічного програмування була мова Planner, в якому була закладена можливість автоматичного виведення результату з даних і заданих правил перебору варіантів (сукупність яких називалася планом). Planner використовувався для того, щоб знизити вимоги до обчислювальних ресурсів (за допомогою методу backtracking) і забезпечити можливість виводу фактів, без активного використання стека. Потім була розроблена мова Prolog, який не вимагав плану перебору варіантів і був, в цьому сенсі, спрощенням мови Planner.
Від мови Planner також відбулися логічні мови програмування QA-4, Popler, Conniver і QLISP. Мови програмування Mercury, Visual Prolog, Oz і Fril відбулися вже від мови Prolog. На базі мови Planner було розроблено також декілька альтернативних мов логічного програмування, не заснованих на методі пошуку з поверненнями (backtracking), наприклад, Ether (див. огляд Шапіро [1989]).
Будучи декларативним мовою програмування, Пролог сприймає в якості програми деякий опис завдання або баз знань і сам виробляє логічний висновок, а також пошук вирішення завдань, користуючись механізмом пошуку з поверненням та уніфікацією.
Тим не менш, логіка програмування, в більш вузькому сенсі, в якому це зазвичай розуміється, є використання логіки і як декларативної і процедурний мови подання. Він заснований на тому, що міркування теореми Прувера застосовується до розповідних речень у вигляді наслідків:
Якщо B1 і ... і Вп, то Hлікує наслідки, як мета-скорочення процедур:, щоб показати / H вирішити, показати / B1 і вирішити ... і Вп.Наприклад, це відноситься до імплікації:Якщо ви натиснете на кнопку сигналу тривоги,то ви попередити водія про поїзд можливих надзвичайних як процедура:Щоб попередити водія про поїзд можливих надзвичайних ситуацій,натисніть на кнопку сигналу тривоги.Відзначимо, що це узгоджується з інтерпретацією ВНК конструктивної логіки, де наслідки можуть бути інтерпретовані як рішення задачі H даного рішення B1 ... Bn. Тим не менш, визначальною рисою логічного програмування є те, що множини формул можна розглядати як програми та пошук доказів можуть бути надані обчислювальний сенс. Це досягається шляхом обмеження логіки на "хороших" фрагмента таких як Хорна або спадкової формули Harrop. Див Д. Міллер і співавтор., 1991.