Програмування в обмеженнях

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 06:19, 28 квітня 2019, створена InternetArchiveBot (обговорення | внесок) (Виправлено джерел: 2; позначено як недійсні: 0. #IABot (v2.0beta14))
Перейти до навігації Перейти до пошуку

Програмування в обмеженнях (або програмування обмеженнями) — парадигма програмування, у якій відношення між змінними зазначені у формі обмежень. Обмеження відрізняються від загальних примітивів мов імперативного програмування тим, що вони визначають не послідовність кроків для виконання, а властивості шуканого рішення. Це робить програмування в обмеженнях формою декларативного програмування. Обмеження, які використовуються в програмуванні в обмеженнях, бувають різних видів: ті, які використовуються в задачах задоволення умов (наприклад, «А або В істинно»), ті, які розв'язуються симплекс-алгоритмом (наприклад, «x ≤ 5») й інші. Обмеження, як правило, убудовані в мову програмування або здійснюються через окремі програмні бібліотеки.

Програмування в обмеженнях почалося із логічного програмування з обмеженнями, яке є вкладанням обмежень у логічне програмування. Поява цього варіанта логічного програмування пов'язана з іменами Jaffar і Lassez, які розширили в 1987 році певний клас обмежень, що були уведені в Prolog II. Першими реалізаціями логічного програмування в обмеженнях були Пролог III, CLP (R) і CHIP. Деякі інтерпретатори логічного програмування в обмеженнях існують і сьогодні, наприклад GNU Prolog.

Крім логічного програмування, обмеження можуть бути змішані з функціональним програмуванням, переписуванням термів та імперативною мовою. Мови програмування з убудованою підтримкою обмежень включають Oz[en] (функціональне програмування) і Kaleidoscope (імперативне програмування). Головним чином, обмеження здійснюються в імперативних мовах через інструментальні засоби для розв'язування задач із обмеженнями, які є окремими бібліотеками для існуючих імперативних мов.

Логічне програмування в обмеженнях

Детальніші відомості з цієї теми ви можете знайти в статті Логічне програмування в обмеженнях[en].

Часові обмеження паралельного програмування (KTC) і недетерміновані часові обмеження паралельного програмування (NTCC) є варіантами програмування в обмеженнях, які можуть мати справу з часом.

Деякі мови, що підтримують програмування в обмеженнях

  • Alma-0[en] невелика, строго типізована, мова обмежень з незначною кількістю функцій логічного програмування, що підтримують імперативне програмування.
  • Bertrand[en] — мова для побудови систем програмування в обмеженнях.
  • Common Lisp за допомогою Screamer — (вільна бібліотека програмного забезпечення, яке забезпечує відкіт і CLP(R), можливості CHiP).

Див. також

Посилання