مرجع
آخر الزيارات

برمجة منطقية

875 كلمة•0 مشاهدة•🗒️ منذ 14 يوماً
باختصار: البرمجة المنطقية (بالإنجليزية: Logic programming) هي بمفهومها العام استعمال المنطق الرياضي من أجل برمجة الحاسوب. في هذه المقالة 6 أقسام: «B1 and … and Bn → H»، «التاريخ» و«حلّ المشاكل» وغيرها.
المحتويات
  1. B1 and … and Bn → H
  2. التاريخ
  3. حلّ المشاكل
  4. نمط برمجة
  5. علم المنطق
  6. المنطق والتّوجيه
برمجة منطقية

في البداية، البرمجة المنطقية (بالإنجليزية: Logic programming) هي بمفهومها العام استعمال المنطق الرياضي من أجل برمجة الحاسوب. ويستعمل المنطق لغة تصريحية للتعبير عن المشكلة. خلاف الكثير من لغات البرمجة التقليدية فإن المبرمج في البرمجة المنطقية لا يقوم بحل المشكلة بشكل كامل، وانما يقع على عاتقه مسؤولية جزئية في حل المشكلة، وهي بتمثيل القضايا والمعارف بصفة منطقية (logical form)، ويقع الجزء الآخر لحل المشكلة على ما يدعى بمبرهن القضايا (theorem-prover) أو مولد النماذج (model-generator) الذي يقوم بحل المشكلة بشكل فعال. وفيما يلي تفاصيل أوسع عن ذلك.

B1 and … and Bn → H

من جانب آخر، مبرمجي اللغات المنطقية المحترفين يستعملون تفسيرات إجرائية ليكتبوا برامجهم وتفسيرات تصريحية للتأكد من خلو الهدف من اخطاء والوصول للهدف.

التاريخ

من جهة ثانية، أدّى ظهور لغة البرولوغ إلى ظهور لغات برمجة مثل لغة البرمجة الوظيفيّة المنطقيّة الجبريّة (ALF)، Fril، Gödel، Mercury، Oz، Ciao، فيجوال برولوغ، XSB، λProlog، فضلًا عن مجموعة من لغات البرمجة المنطقيّة المتزامنة ولغات البرمجة المنطقيّة القيديّة و Datalog.

وعلى صعيد آخر، على الرغم من أن لغة البرمجة «Planner» كانت تستند إلى طرق براهين منطقية–طُوّرت في معهد ماساتشوسيتس للتكنلوجيا- فإنّها كانت أوّل لغة تنشأ بهذا النمط الإجرائيّ. تميزت لغة «Planner» باستدعاء خطط إجرائيّة موجّهة بحسب نمط واضح من الأهداف «الحدُّ من الأخطاء في الهدف أو التسلسل الخلفيّ» ومن التوكيدات «التسلسل الأمامي». أكثر تنفيذ كان له تأثير بلغة «Planner» هو مجموعة جزئيّة منها تُسمى «Micro-Planner» نفّذها كل من جيري سوسمان ويوجين شارنياك وتيري وينوغارد. استُخدمت لتنفيذ برنامج وينوغراد لفهم اللغة الطبيعيّة والذي يُدعى SHRDLU، إذ شكّل حدثًا بارزًا في ذلك الوقت.

وفي هذا السياق، يمكن تعقّب البرمجة المنطقيّة بشكلها الحاليّ بالعودة إلى الوراء إلى مناقشاتٍ في نهاية ستينيّات القرن العشرين وبداية سبعينيّاته حول تمثيل المعرفة الإجرائيّ مقابل تمثيل المعرفة التعريفيّ في الذكاء الصنعيّ. لُوحظ أن الدّاعمين للتمثيل التعريفيّ كانوا يعملون في ستانفورد مُنضمّين إلى «جون مكارثي» و«بيرترام رافاييل» و«كورديل غرين»، وفي إدنبره مع «جون آلان روبنسون» (زائر أكاديمي من جامعة سيراكيوز) و«بات هايس». تركّز داعمو التمثيل الإجرائيّ بشكل رئيسيّ في معهد ماساتشوسيتس للتكنولوجيا (MIT)، وذلك تحت إشراف «مارفن مينسكي» و«سيمور بّابّيرت».

وفي السياق ذاته، يعتبر استخدام المنطق الرياضيّ لتمثيل وتنفيذ برامج الحاسب أحد مميزات حسابات اللامدا، التي طوّرها «ألونسو تشيرش» في ثلاثينيّات القرن العشرين. لكنّ أوّل من اقترح استخدام الصيغة الجُمليّة للمنطق –على شكل جُمل- من أجل تمثيل برامج الحاسب كان «كورديل غرين». استعمل تبسيط الحقائق لمجموعة جزئيّة من لغة البرمجة ليسب (LISP) -إلى جانب تمثيل علاقة الإدخال والإخراج- لحساب العلاقة من خلال محاكاة تنفيذ البرنامج في لغة ليسب (LISP). من ناحية أخرى استعملت لغة البرمجة Absys مزيجًا من معادلاتٍ وحساباتٍ للامدا في لغة برمجيّة توكيديّة لا تضع أيّ قيود على الترتيب الذي تُنّفذ فيه العمليات.

وفي هذا الصدد، للتعامل مع الأنظمة ذات الذواكر المحدودة جدًا في ذلك الوقت، استعملت لغة «Planner» بنية تحكم تراجعيّة إذ يمكن تخزين مسار حسابيّ واحد في وقت واحد. أدّت لغة «Planner» إلى ظهور لغات البرمجة QA-4، و Popler، Conniver، QLISP، واللغة المتزامنة Ether كذلك.

ومن ناحية أخرى، حاول كل من هايس وكولسكي في إدنبره التوفيق بين النهج التعريفيّ القائم على المنطق لتمثيل المعرفة مع نهج لغة «Planner» الإجرائيّ. طوّر هايس (1973) لغة تعادليّة –اسمها Golux- يمكن فيها الحصول على إجرائيّات مختلفة عن طريق تعديل طريقة معالجة مبرهن النظرية. من ناحية أخرى، طوّر كولسكي القاعدة المرجعيّة التي تُسمى «SLD resolution» –تختلف عن «SL-resolution»- وبيّن كيف تتعامل مع الاقتضاءات كإجرائيّات تسعى للحدّ من الأخطاء في الهدف. تعاون كولسكي مع كولميراور في مرسيليا الذي طوّر هذه الأفكار في تصميم وتنفيذ لغة البرمجة برولوغ (Prolog).

ومن ناحية أخرى، تأسّست جمعية البرمجة المنطقيّة لدعم البرمجة المنطقيّة في سنة 1986.

مفاهيم

حلّ المشاكل

وفي السياق ذاته، يمكن استخدام أيّ إستراتيجية بحث للبحث في هذا الفضاء. تستعمل لغة برولوغ إستراتيجية تعقّب خلفيّ تسلسليّة –ما يدخل أولًا يخرج أولًا- يُعتمد فيها بديل واحد وهدف فرعيّ واحد في الوقت نفسه. استراتيجيات البحث الأخرى مثل البحث التّفرّعي والتعقّب الخلفيّ الذكيّ أو بحث «الأفضل-الأول» لإيجاد حلٍّ مثاليّ هي استراتيجيات مُمكنة كذلك.

  • انظر كذلك
  • برمجة وظيفية
  • منطق ضبابي

في هذا الإطار، في الحالة الافتراضيّة المبسطة التي يكون فيها البرنامج المنطقيّ والهدف الأصغريّ عالي المستوى لا يحتويان على متغيرات، يُعرّف الاستدلال الخلفيّ شجرة «and-or»، التي تشكّل الفضاء البحثيّ لحلّ المشكلة الهدف. الهدف الموجود في أعلى مستوى للشجرة يُسمى جذر الشجرة. إذا أخذنا أيّ عقدة في الشجرة أو أيّ عبارة يتطابق رأسها مع العقدة، نلاحظ أنّه يوجد مجموعة من العقد الأبناء المُناظرة للأهداف الفرعيّة في بنية العبارة. تُجمع هذه العقد الأبناء من خلال « and». المجموعات البديلة من الأبناء والتي تكون مُناظرة للطرق البديلة لحلّ العقدة تُنظّم مع بعضها في « or».

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

نمط برمجة

Reflection (برمجة)

علم المنطق

وفي السياق ذاته، بكل الأحوال تستعمل اللغات المنطقية تكتيك السلسلة الخلفية لعملية الاستنتاج (backward reasoning) ويتم التعامل مع البرنامج على انه تساؤل يجب الإجابة عليه والبحث عن اجابته.

  • تعتمد اللغات المنطقية على قوانين هورن الممثلة بالشكل التالي:
  • H :- B1, …, Bn.
  • بحيث H هو الدالة الهدف و B1...n هي قضايا يجب البحث عن حلها لحل القضية الرئيسية.
  • ويمكن تأويلها بشكل إجرائي على الشكل:
  • كي تحل\تظهر H اظهر\حل B1 وقم بحل\اظهار B2...... إلى Bn
  • وبلغة المنطق الرياضي يمكن القول أن الجملة السابقة تكافئ:

المنطق والتّوجيه

وفي السياق ذاته، تُعتبر البرمجة المنطقيّة بمثابة استدلالٍ موجّه. يُوجد فكرة هامة في البرمجة المنطقيّة وهي فصل البرامج المنطقيّة إلى مكوّناتها المنطقيّة ومكوّناتها التوجيهيّة. في لغات البرمجة المنطقيّة البحتة، يُحدّد المكوّن المنطقيّ وحده الحلول الناتجة. يمكن أن يتنوّع المكوّن التّوجيهيّ بغرض توفير طرق بديلة لتنفيذ البرنامج المنطقيّ. استُوحي هذا المفهوم من الشعار:الخوارزميّة= المنطق + التّوجيهإذ يمثّل «المنطق» برنامجًا منطقيًا ويمثّل «التّوجيه» استراتيجياتٍ مختلفةً لإثبات النّظريات.

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.