Програмування в обмеженнях (або програмування обмеженнями) — парадигма програмування, у якій відношення між змінними зазначені у формі обмежень. Обмеження відрізняються від загальних примітивів мов імперативного програмування тим, що вони визначають не послідовність кроків для виконання, а властивості шуканого рішення. Це робить програмування в обмеженнях формою декларативного програмування. Обмеження, які використовуються в програмуванні в обмеженнях, бувають різних видів: ті, які використовуються в задачах задоволення умов (наприклад, «А або В істинно»), ті, які розв'язуються симплекс-алгоритмом (наприклад, «x ≤ 5») й інші. Обмеження, як правило, убудовані в мову програмування або здійснюються через окремі програмні бібліотеки.
Програмування в обмеженнях почалося із логічного програмування з обмеженнями, яке є вкладанням обмежень у логічне програмування. Поява цього варіанта логічного програмування пов'язана з іменами Jaffar і Lassez, які розширили в 1987 році певний клас обмежень, що були уведені в Prolog II. Першими реалізаціями логічного програмування в обмеженнях були Пролог III, CLP (R) і CHIP. Деякі інтерпретатори логічного програмування в обмеженнях існують і сьогодні, наприклад GNU Prolog.
Крім логічного програмування, обмеження можуть бути змішані з функціональним програмуванням, переписуванням термів та імперативною мовою. Мови програмування з убудованою підтримкою обмежень включають Oz (функціональне програмування) і Kaleidoscope (імперативне програмування). Головним чином, обмеження здійснюються в імперативних мовах через інструментальні засоби для розв'язування задач із обмеженнями, які є окремими бібліотеками для існуючих імперативних мов.
Логічне програмування в обмеженнях
Детальніші відомості з цієї теми ви можете знайти в статті Логічне програмування в обмеженнях[en].
Часові обмеження паралельного програмування (KTC) і недетерміновані часові обмеження паралельного програмування (NTCC) є варіантами програмування в обмеженнях, які можуть мати справу з часом.
Деякі мови, що підтримують програмування в обмеженнях
- Alma-0[en] невелика, строго типізована, мова обмежень з незначною кількістю функцій логічного програмування, що підтримують імперативне програмування.
- Common Lisp за допомогою Screamer — (вільна бібліотека програмного забезпечення, яке забезпечує відкіт і CLP(R), можливості CHiP).
Див. також
- Комбінаторна оптимізація
- Евристичний алгоритм
- Оптимізація (математика), (математичне програмування)
- Мова програмування п’ятого покоління
вікіпедія, вікі, енциклопедія, книга, бібліотека, стаття, читати, безкоштовне завантаження, Інформація про Програмування в обмеженнях, Що таке Програмування в обмеженнях? Що означає Програмування в обмеженнях?