لغة برمجة مقيدة

لغة برمجة مقيدة Constraint هي نمط من انماط البرمجة بيحث تكون العلاقات بين المتحولات معرفة على شكل قيود . تختلف القيود عن الاوليات في البرمجة الامرية بان القيود لا تحدد خطوة او مجموعة خطوات ليتم تفيذها ,وانما تحدد خاصية حل ليتم إيجاده .هذا الامر يجعل من اللغة المقيدة شكلاً من اشكال اللغات التصريحية . القيود المستعملة هي عديدة وشتى .

القيود عادة ماتكون مضمنة بلغات برمجة او مقدمة عن طريق مكتبات برمجية .

بدأت اللغات المقيدة مع لغات البرمجة المنطقية المقيدة constraint logic programming التي ضمنت القيود في البرامج المنطقية . يوجد الآن العديد من مفسرات لغات البرمجة المنطقية المقيدة كما في GNU Prolog على سبيل المثال لا الحصر .

ناهيك عن لغات البرمجة المنطقية , القيود يمكن ان يتم دمجها مع لغات البرمجة التابعية \الدالية functional programming , وfunctional programming و اللغات الامرية .

ان لغات البرمجة مع دعم للقيود تتضمن Oz في اللغات التابعية و Kaleidoscope في اللغات الامرية . غالباً القيود تكون في اللغات الامرية بواسطة ادوات لحل القيود التي هي مكتبة منفصلة مهصصة للغة برمجة امرية موجودة .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

مجالات القيود

القيود المستعملة في لغات البرمجة عادة ماتكون مقيدة بشروط محددة وفقاً لطبيعة القيود والمتحولات . من اشهر المجالات في البرمجة المقيدة هي :

  • مجال المتحول المنطقي boolean حيث القيود true/false هي الوحيدة المطبقة .بحيث تحقق SAT
  • مجال الاعداد الصحيحة هي مجال الاعداد الرياضية
  • المجال الخطي حيث التوابع الخطية هي التوابع التي يتم وصفها وتحليلها على الرغم من ان المشاكل الغير خطية غير موجودة .
  • المجال المنتهي حيث القيود تعرف بالمجموعة المنتهية .
  • المجالات المختلطة تتضمن اثنان او اكثر من المجالات آنفة الذكر


مكتبات القيود البرمجية للغات البرمجة الامرية

البرمجة المقيدة غالباً ماتكون متضمنة ضمن احدى لغات البرمجة الامرية بواسطة مكتبة برمجية منفصلة وهذه بعض اشهر المكتبات البرمجية :

  • Choco (Java library, free software: X11 style)
  • Comet (C style language for constraint programming, constraint-based *local search and mathematical programming, free binaries available for academic use)
  • Disolver (C++ library, proprietary)
  • Gecode (C++ library, free software: X11 style)
  • ILOG CP Optimizer (C++, Java, .NET libraries, proprietary)
  • ILOG CP (C++ library, proprietary)
  • JaCoP (Java library, open source) available here
  • JOpt (Java library, free software)
  • Koalog Constraint Solver (Java library, proprietary)
  • Minion (C++ program, GPL)
  • python-constraint (Python library, GPL)
  • Cream (Java library, free software: LGPL)
  • Emma (Python library, proprietary)
  • Turtle++ (C++ library - inspired by the Turtle Language, free software)