SWI-Prolog screenshot
SWI-Prolog

SWI-Prolog هو تنفيذ متعدد الاستخدامات وقابل للتوسع بشكل كبير للغة Prolog، الذي اكتسب شعبية في البداية في البيئات التعليمية ولكنه الآن يُستخدم على نطاق واسع لتطوير التطبيقات. يتم توجيه تطويره بشكل أساسي من خلال الحاجة إلى التكامل مع مكونات تكنولوجيا المعلومات الأخرى، ويوفر واجهة غنية لأنواع مختلفة من الوثائق والبروتوكولات الشبكية، بالإضافة إلى واجهة منخفضة المستوى كاملة بلغة C، التي تشكل أساسًا للواجهات عالية المستوى مع لغات مثل C++ وJava وC# وPython.

يعمل SWI-Prolog على توسيع لغة Prolog من خلال إضافة أنواع بيانات متقدمة مثل القواميس والسلاسل النصية، بالإضافة إلى دعم كامل لليونكود والأعداد الصحيحة غير المحدودة، مما يضمن تبادل بيانات سلس مع المكونات الأخرى. النظام مصمم ليعمل بكفاءة عالية، مع دعم قوي لتعدد المهام الذي يستغل بشكل كامل أجهزة المعالجة متعددة النواة، مما يجعله مثاليًا للتكامل في التطبيقات المتزامنة. يوفر آلية الفهرسة اللحظية (JITI) دعمًا فعالًا للعبارات مع الملايين من البنود، مما يضمن أن تعمل حتى التطبيقات الكبيرة بسلاسة.

يوحد SWI-Prolog أيضًا العديد من الإضافات التي طورتها مجتمع Prolog، مثل التبويب، القيود، المتغيرات العالمية، التخصيص المدمر، الاستمراريات المحددة والتفاعلات، مما يجعله أداة شاملة وقوية للمطورين.

الميزات التفصيلية لـ SWI-Prolog

  • تجميع سريع وكفاءة عالية:
    • تجميع سريع: تم تحسين SWI-Prolog للتجميع السريع، مما يضمن تقليل التأخير أثناء التطوير.
    • إدارة الذاكرة: النظام قوي وخالي من تسريبات الذاكرة، مما يضمن أداءً مستقرًا حتى للتطبيقات الطويلة الأمد.
    • قابلية التوسع: يتكيف SWI-Prolog بشكل فعال مع التطبيقات الكبيرة، حيث يدير مجموعات بيانات ضخمة ومنطق معقد بسهولة.
  • الحساب المتقدم وإدارة البيانات:
    • فهرسة لحظية (JITI): توفر فهرسة فعالة للكود الثابت والديناميكي على أي وسيطة، مما يبسط التعامل مع العلاقات متعددة الأنماط مع العديد من البنود.
    • الحساب بالأعداد غير المحدودة والأرقام الكسرية: يعتمد على مكتبة GMP، مما يدعم الحسابات المعقدة دون قيود على حجم الأعداد.
    • دعم اليونكود: إدارة كاملة لمجموعة الأحرف اليونكود داخليًا، مما يضمن التوافق مع مجموعات الأحرف العالمية.
  • توسيعات لغة Prolog:
    • الوحدات: متوافقة مع Quintus وSICStus، مما يسهل التطوير بطريقة وحداتية.
    • جمع القمامة: شفاف للكود C/C++، بما في ذلك جمع القمامة للأتمات والبنود، مما يضمن استخدام فعال للذاكرة.
    • تحسين آخر نداء: يحسن الأداء من خلال تحسين النداءات التكرارية.
    • توسيع ديناميكي لوقت التشغيل: يوسع مكدسات وقت التشغيل تلقائيًا حسب الحاجة، مما يمنع أخطاء تجاوز المكدس.
    • إدارة الاستثناءات: يشمل دعمًا كاملاً لإدارة الاستثناءات، متوافق مع واجهات C/C++.
  • هياكل برمجة متقدمة:
    • المتغيرات المعنونة والتزامن: دعم لتجميد/2، when/2، وdif/2، مما يتيح تقنيات تحكم في التدفق وبرمجة منطقية متقدمة.
    • المتغيرات العالمية والمصطلحات الدورية: توفر مرونة إضافية في إدارة هياكل البيانات والخوارزميات المعقدة.
    • إدارة occurs-check: إدارة يتم التحكم بها بواسطة العلم لـ occurs-check، مع خيارات false وtrue وerror، مما يضمن الاتساق في التقييم المنطقي.
  • دعم تعدد المهام والتزامن:
    • دعم تعدد المهام: مصمم للتعامل بكفاءة مع التطبيقات متعددة المهام، حيث يستغل بشكل كامل المعالجات متعددة النواة.
    • المحركات (التفاعلات): توفر تزامنات يمكن استخدامها لتراكم الحالة وتعدد التزامن على نطاق واسع، مثالية للتطبيقات مثل الذكاء الجماعي والمحاكاة.
    • استمراريات محددة: أداة قوية لإنشاء هياكل تحكم جديدة وبرمجة موجهة للجوانب.
  • حلول استعلام متقدمة:
    • التبويب (حل SLG): تقنية حل قوية تضمن إنهاء القواعد المعقدة المترابطة، مما يعزز من موثوقية نتائج الاستعلامات.
    • دلالات مؤسسة للنفي: يوفر أساسًا متينًا لإدارة النفي في البرمجة المنطقية.
    • التبويب المتزايد: يحدث الجداول المتأثرة تلقائيًا عندما تتغير قاعدة المعرفة، مما يضمن بقاء النتائج دقيقة وحديثة.
  • أدوات التطوير والبيئة:
    • محرر نصوص محلي: يتضمن SWI-Prolog محررًا مكتوبًا بلغة Prolog يشبه إلى حد كبير Emacs، مما يوفر ميزات مثل التمييز الدلالي بناءً على تحليل الكود في الوقت الحقيقي.
    • نظام الحزم: آلية لتوزيع وتثبيت الإضافات، مما يسهل إدارة التوسعات والمكتبات الخارجية.
  • تطبيقات الخادم:
    • إطار خادم ويب: يشمل إطار HTTP موسع لإنشاء تطبيقات خادم، يدعم كل من خدمات REST وتطبيقات المستخدم النهائي باستخدام HTML5 وCSS وJavaScript.
  • Prolog كلغة موحدة:
    • التكامل مع المكونات الأخرى: يعمل SWI-Prolog كمنصة متعددة الاستخدامات، حيث يعمل كلغة ربط توحد مختلف المكونات في أنظمة معقدة، مما يجعله خيارًا مثاليًا للتطبيقات التي تتطلب تكامل بين تقنيات مختلفة.

يبرز SWI-Prolog كأداة قوية ومتعددة الاستخدامات، سواء للأغراض التعليمية أو لتطوير التطبيقات المهنية. مع مجموعة ميزاته الغنية، وقابليته للتوسع القوي، ودعمه الواسع لهياكل البرمجة الحديثة، يعد اختيارًا لا غنى عنه للمطورين الراغبين في الاستفادة الكاملة من إمكانيات لغة Prolog.

SWI-Prolog - سجل التغيير:

  • مستند: شرح المشكلات والميزات الخاصة بوظائف C-API Boolean.
  • إصلاح: ظروف السباق في thread_signal/2 والاختبارات الأخرى.
  • اختبار: تجنب التداخل بين اختبارات thread_wait. ترسل الاختبارات إشارات متزامنة باستخدام خيط منفصل قد لا يزال قيد التشغيل، مما يؤثر على الاختبارات اللاحقة.
  • اختبار: قد ينجح اختبار الحصول على خطأ إدخال/إخراج على أنبوب مكسور. اتضح أن حجم الأنبوب على Asahi/Fedoare 40 هو 256 كيلو بايت. الآن يتم كتابة الحد الأقصى 1.2 ميجا بايت بدلاً من 100 كيلو بايت.
  • إضافة: يكمل علم Prolog dir_sep path_sep وpath_max للحصول على خصائص على اتفاقيات تسمية الملفات والحدود.
  • إصلاح: #1311 تلف المكدس المحتمل في PL_unify_text() سبب هذا التعطل هو الفشل في التحقق من الإرجاع من PL_new_term_ref(). كانت هناك مشكلات أخرى مع الكود
  • على الرغم من ذلك. قد يؤدي نقص المساحة المحلية إلى إتلاف سلسلة موجودة على المكدس. يمكننا تجاهل مرجع المصطلح.
تنزيل SWI-Prolog:
لويندوز 32 بت:
الحجم: 13.20 مب - تنزيل
لويندوز 64 بت:
الحجم: 13.19 مب - تنزيل