إعلان: يُوجد عندي دروس تعليمية باللغة العربية حول لغة البرمجة PROLOG مدّتها 80 ساعة بصيغة فيديو MP4 مع بعض الكتب الإلكترونية المُختصّة, وأنا أعرضها للبيع على طريقة المزَاد, مع العلم أنّ هذه الدروس جمعتها من الأنترنت لِنفسي منذ سنوات, والمهتم يتواصل معي.

كتاب الذكاء الصنعي في لغة Prolog ومواضيع في الأنظمة الخبيرة


عنوان الكتاب: الذكاء الصنعي في لغة Prolog 
ترجمة: المهندسة زينب الزرقا - المهندس أيمن عودة
رابط شراء الكتاب: موقع مكتبة النّيل والفرات



1.1 مُقدّمة الكتاب: 
يقدّم هذا الفصل لمحة سريعة عن هذه اللغة ويحاول توضيحها, فإذا رغبت بتعلّم البرمجة مباشرة يمكنك تجاوز هذا الفصل. وقد تجد أنّه من المفيدة أن تعود إلى قراءته لاحقا.

أٌشتُقّت كلمة Prolog من كلمتي "البرمجة حسب المنطق Programming in logic " وهي لغة برمجة مخصّصة لتوجيه الحواسيب للقيّام بمهام متعدّدو.

يُعتبر المنطق أحد فروع الرّياضيات, وقد إهتمّ العديد من النّاس باشتقاق لغة برمجة من سيّاق المنطق ومن أبرزهم Robert Kowalski من جامعة Edinburgh. وقد تمّ استخدام Prolog في الحاسب لأوّل مرة على يد Alain Colmerauer وفريقة في جامعة Marseilles في أوائل السّبعينات.

سنحاول اّلاّ نُعطي الخلفية المنطقية للغة Prolog في هذا الكتاب ولن نتطرّق إلى العلاقة بينها وبين المنطق, بل سنعاملها كلغة برمجة عملية مفيدة في مجالات معيّنة.

2.1 لماذا نتعلّم Prolog ؟ 
لماذا تُدرّس لغة Prolog في الجامعات البريطانية أكثر من أيّ لغة برمجة أخرى؟.

تزامن نمو Prolog مع تطوّر أنظمة قواعد المعرفة (Knowledge Based System) KBS وهي أنظمة حواسب تتعامل مع كمّيات كبيرة من المعارف في قاعدة معطيات بتطبيق قواعد خاصّة.
أحد فروع أنظمة قواعد المعرفة هي Expert Systems ES التي تُحاول إحتواء معرفة التّجربة الإنسانية.
تُعتبر Prolog ملائمة لبناء أنظمة ES وKBS لأنّها تتألّف من مجموعة من القواعد (وأجزاء أخرى للبحث في قاعدة المعطيات).
تبيّن أيضا أنّه يُمكن إستخدام Prolog في عدد من تقنيات البرمجة التّابعة للذّكاء الصّنعي Artificial Intelligence AI كالشّبكات الدّلالية, حل المسائل المتصمّنة عمليات بحث, واللّغات الطّبيعية, وقد غطّينا هذه المواضيع بشكل مبسّط في هذا الكتاب. وقد إستحقّت Prolog بجدارة لقب "لغة الذّكاء الصّنعي".
وبالتّالي إذا كُنت عالم حواسيب ووجدت نفسك في أحد الأيّام تبني نظما خبيرة أو تقوم ببحث حول الذّكاء الصّنعي فإنّ لغة Prolog ستكون أداةً قيّمة لمساعدتك وبالأخص كلغة برمجة.
إنّ تعلّم Prolog مهم لأنّه متّصل بالمنطق, سنُحاول إبقاء هذا الكتاب بسيطا لكنّك ستجد بعض الحِيل التّقنية وتُحاول حل بعض المسائل الصّعبة في الذّكاء الصّنعي باستخدام Prolog المتطوّرة.
يتزايد إستخدام Prolog في اللّغات التّطبيقية والبرامج التّجارية, وتُحاول احتواء البرمجة الهيكلية والمحاكاة, ولأنّها لغة تفسيرية فلا حاجةَ للتّصريحات, وهذا يجعلها ملائمة لكتابة البرامج الأوّلية واختبارها. في حين أنّ اللّغات الإجرائية تأتي وتذهب, إلاّ أنّ Prolog ستبقة وقد حافظت على مستوى شعبيتها في حين أنّ لغات أخرة وصلت إلى القمّة وبدأت بالإنخفاض.

السّؤال 1.1 : ماهو نوع البرنامج الذي يُمكن استخدام Prolog لكتابته وما هو أفظل إستخدام لها؟.

3.1 أفكار وراء Prolog :
تُصمّم البرامج إعتمادا على مبادئ حل المسائل المنطقية بدلا من كتابتها بطريقة معتمدة على عمل الحاسوب, الصّيغة المُستخدمة تُشبه الصّيغة المنطقية مع أنّهما ليستا متماثلتين.
إنّ البرمجة في Prolog تصريحية أي أنّه يتمّ التّصريح عن المعطيات والحقائق المتعلّقة بالمسألة في قاعدة المعطيات. ثم تُصمّم القواعد لاستخراج المعلومات من قاعدة المعطيات حسب الحاجة.

قارن ما سبق مع البرمجة الإجرائية حيثُ يُعطى الحاسب لائحة بالتّعليمات والمهام ليعمل عليها, أو إجراء ليتّبعه, في Prolog تُقدّم المسألة من وجهة نظر المُعطيات وليس من وجهة نظر الإجراء.

تعمل Prolog دائما بالإعتماد على قاعدة المعطيات لذلك توجد آلية بحث مدمجة فيها للقيّام بذلك, لانجدُ ذلك في اللّغات الإجرائية حيثُ تجب برمجة كل عملية بحث وبذلك يُمكن تسهيل البرمجة واختصارها في Prolog, حيثُ تقوم اللّغة بكثير من الأعمال وراء الكواليس.

تُحاولُ Prolog أن تعمل إلى حد ما كالدّماغ البشري. إنّ طريقة عمل الدّماغ البشري معقّدة جدا ولا توجد طريقة لفهمها بالكامل, لكنّنا سنُقدّم طريقة طبيعية بسيطة للتّعرّف عليها, كاستجابة لمسألة ما نبحث في ذاكرتنا عن حقائق وتقنيات قد تُفيدنا في حل المسألة. بطريقة مُماثلة تبحث Prolog في قاعدة المعطيات عن حقائق وقواعد تُساعد في حلّ المسألة, لذا من الممكن تمثيل حقل من المعارف المصرّح عنها في Prolog ثم حل عدّة مسائل متنوّعة بطرح أسئلة مختلفة. قارن هذا مع طريقة كتابة البرنامج في لغة إجرائية مثل BASIC, PASCAL أو C لتنفيذ مهمّة معرّفة مسبقا.

إنّ Prolog موجّهة نحو المُبرمج وليس نحو الحاسب لذلك فإنّ صيغتها الكتابية أقرب ما تكون إلى النّص الإنجليزي ويُمكن كتابتها على سطر واحد بشكل كلمات وجٌمَل مع نُقَط وفواصل.
ومع ذلك مازال بعض المُبرمجين يُفضّلون كتابتها على شكل لوائح كما في اللّغات الإجرائية.

السّؤال 2.1 : هل هناك سبب آخر برأيك لانتشار تعليم Prolog؟.

4.1 هل Prolog مختلفة حقًا؟
يكتشف الطلاّب بسرعة تميّز Prolog عن اللّغات الأخرى. فهُم قد تعلّموا لغات أخرى قبل الوصول إلى Prolog, ومن بينها ADA, C, Pascal, Basic, Fortran, Modula2 وغيرها, وهي جميعا لغات إجرائية.

إذا كُنتَ قد برمجت من قبل فعليك أن تُدرك أنّ تعلّم Prolog يتطلّب أن تعود إلى البدائة وتتعلّم البرمجة من جديد بطريقة مُختلفة, لا تٌفكّر في Prolog كأيّ لغة إجرائية أخرة يُمكنك دراستها قبل الإمتحان بأسبوع, عليك متابعة المنهاج لأنّك إذا تخلّفت سيكون من الصّعب عليك أن تُتابع. هذه الأخبار جيّدة للذّين لم يُبرمجوا من قبل أو الذين وجدوا البرمجة الإجرائية صعبة نوعا ما.
لتوضيح إختلاف Prolog, فكّر بلغة لا تتضمّن أيًّا ممّا يلي: 

No REPEAT ... UNTIL loops
No FOR ... Do LOOPS
No WHILE ... DO loops
No IF ... THEN conditions
No GOTO jumps
No type declarations
No arrays

لا تحوي Prolog أيًّا ممّا سبق ولا حتّى بُنى تحكّم. طبعا هناك طُرق أخرى للقيّام بما سلف.

السّؤال 3.1 : هل تستطيع التّفكير بطريقة لإنجاز التّكرار دون حلقات (ستعرف الجواب فقط إذا صادفت الطّريقة في لغات برمجة اخرى).

5.1 خرافات حول Prolog :
بقيت هناك ملاحظة أنّه مازال البعض يقولون أنّ Prolog لغة مقيّدة تُستخدم فقط لمهام برمجة غريبة من قبل بعض المتحمّسين. هذا ليس صحيحا, فقد ظهرت هذه الفكرة في بدايات Prolog أثناء تطويرها واستمرّت حتّى الآن.
إنّ الإصدارات الحديثة اليوم مرنة ومجهّزة بشكل جيّد ويُمكن استخدامها لبرمجة أيّة مهام, يتضمّن إصدار  LPA Prolog معلنات تسمح ببرمجة النّوافذ, الألون وغيرها من المزايا, كما يمكن استخدامها لبناء تطبيقات تجارية إحترافية, تطوّرت LPA Prolog باتّجاهاتٍ عدّة من بينها Prolog لنظام Windows, و Prolog غرضي التّوجّه, ونُسخة تربط Prolog بقاعدة المعطيات العلائقية Oracle ويجري حاليا على نسخة قيّاسية من Prolog.

أٌستُخدِمَت Prolog منذُ فترة لتطبيقات النّظم الخبيرة التّجارية وقد إختارها Bacon و Woodrow لنظام بُنِي على قاعدة معرفة, و IBiS لنظام دعم القرار لتقديم النّصح في النّظام القضائي, لكن إستخدامها يتزايد اليوم لأغراض التّطبيقات التّجارية في الحياة الواقعية, تمّ اختِيارُها لتخطيط قواعد مٌعطيات الجينات في مشروع الجينات البشرية العالمي. إختارها فريق ICL لتطوير نظامهم الشّخصي, وكذلك مشروع ICCARUS لبرمجة نظام تدريب متعدّد الوسائط وتفاعلي لرجال الإطفاء, إنّ مُنظّمة البرمجة المنطقية ALP التي تهدف إلى توسيع استخدام Prolog تستطيع تزويدك بأمثلة تجارية أخرى.
إذًا Prolog ليست لغة عريبة, بل هي لغة مفيدة لكلّ يوم.

السّؤال 4.1 : إنّ تعليم Prolog مُنتشر بشكل واسع ولكن هل هي واسعة الإستخدام؟.

الخلاصة: 
إنّ Prolog هي لغة برمجة للحاسب تعتمد مبادئ المنطق وهذا ما يُفسّر إسمها,من الجيّد أن تتعلّم Prolog لأنّها تستخدم تُستَخدم بشكل واسع في الأبحاث وخاصّة الذّكاء الصّنعي, وفي النّظم الخبيرة, وقد تزايد إستخدامها في التّطبيقات التّجارية.
تتكوّن Prolog من قاعدة مُعطيات ستاتيكية نُصرّح عنها بدلاً مِن لائحة التّعليمات التي يعمل عليها الحاسب, يتم حل المسائل بطرح أسئلة مُصاغة بحذَر وتبحث Prolog عنِ الأجوبة في قاعدو المُعطيات باستخدام آلية بحث مُدمجة ضمنها وهكذا تُدعَى Prolog لغة تصريحية, على عكس مُعظم اللّغات الأخرى التي تُعتبر إجرائية.
عندما تتعلّم Prolog ستجد أنّها مختلفة تماما عن غيرها من اللّغات الإجرائية وإذا كُنت قد برمجت من قبل فعليك أن تتعلّم مجدّدا من البداية, هناك أمرٌ يجب تذكّره دوما وهو أنّه بعكس الإعتقاد السّائد فإن Prolog ليست غامضة أو مبهمة بل تتّبع مجموعة من الوقاعد كأيّ لغة أخرى.

الأجوبة عنِ الأسئلة السّابقة: 
الجواب 1.1 : يُمكن إستخدام Prolog لكتابة أيِّ نوع من البرامج, فهي لغة برمجة كاملة تماما كغيرها, كونها بشكل أساسي عمليات على قاعدة المعطيات فهي مثالية للمسائل التي تتضمّن كمّية كبيرة من المعطيات وخاصّة البرامج التي تُعرف بِنُظم قواعد المعرفة Knowledge-Based System KBS.

الجواب 2.1 : من المعروف أنّ تعليم Prolog مُنتشر بشكل واسع في المملكة المتّحدة, قد يكون السّبب أنّها تُدرّس في جميع الجامعات وكذلك الأمر بالنّسبة للّغات الإجرائية, لكن هناك الكثير من اللّغات الإجرائية لتختار إحداها, وكذلك هناك العديد من الجامعات التي تُركّز على لغات معيّنة.

الجواب: 3.1 : يُمكن إنجازُهُ بتقنيةٍ تُدعى الإستدعاء الذّاتي, التي تتضمّن إجراءً يستدعي نفسه وبذلك يتم الحصول على التّكرار. في Prolog تُعتبَر القاعدة مكافئة للإجراء وسنتطرّق للإستدعاء الذّاتي في الفصلين 11 و 12.

الجواب: 4.1 : إنّ إستخدامها مُنتشر في التّعليم العالي والأبحاث, لكنّها ليست شائعة في البرمجة التّجارية, حيثُ تُسيطر اللّغات الإجرائية مثل C و Cobol و Fortran.

فهرس الكتاب:

الأخير