ماهي لغة prolog


لغة البرولوغ وجدت بالأصل لتحقيق أحد فروع الذكاء الصنعي وهو النظم الخبيرة وأحيانا يسمى الجمل الخبيرة

وما يميز هذه اللغة أنها ذاتية النمو والتطور بمعنى :

تعودنا أن التطبيق العادي هو ملف تنفيذي ثابت والذي يتغير هي ملفات أخرى تحفظ المعلومات والبيانات

أما هذا فهو يغير في الملف التنفيذي نفسه بمعنى البرنامج نفسه قابل للتطور والتعلم وذلك ليتفق ومبدأ اكتساب الخبرة التي ينبني عليها فرع النظم الخبيرة

و تقوم هذه اللغة على أساس تقديم حقائق و من ثم تعريف قواعد التي تمثل علاقات الربط

وبعدها يقوم البرنامج بتقديم كل الحلول المنطقية المحتملة التي تحقق علاقة الربط على مجموعة الحقائق

سأضرب مثالاً للتقريب :

لعلكم تذكرون الأحجية التي انتشرت تحت العنوان الساذج : لغز أينشتاين الذي حير العالم وزعم أن 99% من الناس لم يتمكنوا من حله.

طبعا لست بصدد إنكار أو إثبات أنه لأينشتاين ولكن طريقة التداول التي تثير الاشمئزاز بهدف لفت الانتباه.

رابط اللغز

http://ar.wikipedia.org/wik...

وهي تقدم مجموعة حقائق ومن ثم تعطي بعض العلاقات وتترك جزء من العلاقات ناقص

بعض الناس يستطيعوا حلها منطقيا على الورقة

ولكن ضربته كمثال أنه يصلح كمادة لاستثمار لغة البرولوغ أو النظم الخبيرة للوصول للحل

حيث تقدم الحقائق الموجودة و كذلك العلاقات ومن ثم يستطيع البرنامج إعطاءك كل الاحتمالات الناقصة ومن ضمنها جواب السؤال

لماذا قلنا أنها قابلة للتعلم ، ذلك لأن أي حلول منطقية يتم استنتاجها تستخدم كحقائق جديدة تضاف للأولى وتستخدم في الحلول في المرة التالية ، من هنا اطلق عليها النظم الخبيرة لأنها تكتسب خبرة مع كل عملية استفسار.

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

شوقتني لتعلمها

كمثال تطبيقي على لغة البرولوغ :

هي سهلة لأنها تفريعاتها قليلة جداً مقارنة مع اللغات المتقدمة ولكن تحتاج إلى تركيز لأن منطق التعامل معها مختلف كليا

لأنها ليست بمفهوم البرمجة الحالية مثل OOP أو البرمجة الشرطية والحلقات

يعني يمكن تقريب الأمر بمثال كما تقارن بين لغة برمجة متقدمة وبين لغة الاستفسارات SQL

ستجد في لغة SQL أنك تقدم في البداية مجموعة جداول من المعطيات تربطها علاقات ومن ثم تطبق استفسارات لتحصل على نتائج

بنفس المفهوم تقريبا هي لغة برولوغ

ولكن هنا ليس جداول وأعمدة وأسطر و بيانات وإنما حقائق وعلاقات وقواعد

سنضرب مثال عملي :


1- أحمد ذكر

2- خالد ذكر

3- فاطمة انثى


4- أحمد ابن خالد

5- فاطمة أم أحمد


6- س ابن ع => ع أب س | ع ذكر

7- س أم ع => س ابن ع

8- س ابن ع ، س ابن ص => ع ص زوجان | ع ذكر ، ص انثى ; ع انثى ، ص ذكر


9- زوجان ؟


10- خالد ، فاطمة


لنشرح المثال :

1 و 2 و 3 حقائق وهي ثلاث عناصر مع خاصية لكل منها

4 و 5 حقائق مع علاقة تربط بين العناصر السابقة

6 و 7 و 8 هي قواعد عامة استنتاجية

9 قمنا بالاستفسار والذي يقول : من هم العناصر التي تتحقق فيهما علاقة الزوجان

10 هو الجواب مع أننا لم نذكر أنهما زوجان صراحة

لأن حسب القاعدة الأولى لدينا أحمد ابن خالد وخالد ذكر إذا خالد أب أحمد

وبحسب القاعدة الثانية لدينا فاطمة أم أحمد إذا أحمد ابن فاطمة

وبحسب القاعدة الثالثة إذا كان لدينا عنصرين أحدهما ذكر والآخر انثى و كان هناك عنصر واحد هو ابن لكل منهما إذا هذين العنصرين هما زوجان

مع أننا ضمن التعريفات لم نذكر أن خالد وفاطمة زوجان وإنما قامت اللغة باستنتاجهما من خلال الحقائق والقواعد الموجودة مقدما.

طبعا هذا مثال بسيط ولكن تخيل لديك آلاف الأشخاص وآلاف العلاقات و من ثم تريد أن تستفسر عن مجموعة تحقق علاقة قرابة معينة

الأمر ينطبق على مبدأ الحصر والاحتمالات المستهدم في صيانة الحاسب أو السيارة أو أي شيء

بمعنى أنه إذا كان لدينا الحالة كذا وكذا فهذا يعني أن العطل محصور في الجزء الفلاني وإذا كانت حالة أخرى فهذا يعني أن العطل أصبح في مكان كذا

لو سمحتم شباب كيف نجعل procedureفي البرولوغ تقبل اكثر من قاعده

-3

شكرا, هذا مفيد

-3

اللغة مملة نوعا ما

تحتاج لتعلم الرياضيات المتقطعة أو المنفصلة قبل أن تخوض بها


برمجة

مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.

24.9 ألف متابع