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

كتاب مقدّمة في لغة برولوك Prolog - تأليف زهير حسين علي

العنوان: مقدّمة في لغة برولوك Prolog
المؤلف: زهير حسين علي
عدد الصفحات: 106
رابط التّحميل: إضغط هنا


مقدمة الكتاب:
تعتبر لغة برولوك من لغات الجيل الخامس للحاسبات fifth-generation وذلك لأنها حولت برمجة الحاسبات الالكترونية إلى اتجاه جديد ومتطور، والسبب في ذلك يعود إلى طبيعة لغة برولوك المنطقية التي دفعت إلى بناء تطبيقات قوية وتصميمات مدهشة في زمن سريع نسبياً. تسمى لغة برولوك ايضا لغة الذكاء الاصطناعي وذلك لإمكانيتها في بناء برامج قواعد المعرفة والأنظمة الخبيرة ومعالجة اللغات الطبيعية، التي تعتبر من حقول الذكاء الاصطناعي.

اسم لغة البرولوك (Prolog) اختصار (Programming in Logic) أي البرمجة المنطقية. وصمم هذه اللغة أستاذ بجامعة مرسياتيا بفرنسا يدعى آلن كولمرير (Alan Colmeraur) وظل استخدام لغة البرولوك محصوراً في معامل أبحاث الذكاء الاصطناعي بقارة أوروبا حتى أكتوبر 1981 عندما أعلن اليابانيون أن لغة برولوك ستكون اللغة الرئيسية لحاسبات الجيل الخامس.

وإلى الآن لم تكتسب لغة البرولوك قبولاً وانتشاراً تجارياً واسعاً في أمريكا، ويرجع ذلك لسببين: الأول هو صعوبة اتصالها باللغات التقليدية مثل لغة فورتران (Fortran)، والثاني هو بطء برامج البرولوك في طور الإنتاج. وعلى الرغم من تغلب البرولوك السريع (turbo Prolog) على مثل هذه المشاكل إلا انه حقق ذلك على حساب خصائص أخرى للبرولوك مثل التوحيد (Unification).

وتعتمد لغة البرولوك على مفهوم البرمجة المنطقية (Logic Programming), والتي تتعامل مع جمل (Statement) تحتوي على أشياء (Objects) والعلاقات (Relationships) التي تربط بينها وبين الجملة:

Professor (Mohammad, Ali)

في هذه الجملة تسمى كلمة (Professor) بالمسند أو المحمول (Predicate) وتمثل العلاقة بين المعاملات (Mohammad) هو أستاذ (Ali).
وعلى هذا فإن لغة البرولوك تسمح للمبرمج بتمثيل العلاقات بين الأشياء وتجميع وتنظيم هذه العلاقات حتى يمكن الوصول إلى استنتاج منطقي من الحقائق التي تمثلها تلك العلاقات. وذلك على عكس اللغات التقليدية مثل الباسكال وسي التي تطلب من المبرمج كتابة الخطوات التفصيل الآتية التي يجب إتباعها.

تنقسم البرمجة بلغة البرولوك إلى ثلاثة مراحل هي:
1- إعلان الحقائق عن الأشياء (Objects) والعلاقات التي تربط بينها.
2- تعريف القواعد (Rules) التي تحكم كلاً من الأشياء والعلاقات التي تربط بينها.
3- السؤال عن الأشياء والعلاقات التي تربطها.
والمرحلة الثالثة يمكن أن تأتي بعد المرحلة الأولى مباشرة، إذ يمكن السؤال عن الأشياء دون تطبيق أي قواعد.

وهناك عدة إصدارات للغة البرولوك ولكن إصدار جامعة أدنبرة Edenburgh University يعتبر هو الإصدار القياسي.

1-2 اختلاف لغة برولوك عن اللغات الاعتيادية:
تقسم لغات البرمجة إلى قسمين بالاعتماد على نوعية البرمجة: 

1- لغات إجرائية Procedural Language
في هذا النوع من اللغات يقوم المبرمج بوصف خطوات البرنامج خطوة بعد خطوة step by step لوصف إيعازات للحاسبة عن كيفية حل المسألة بالضبط، وتسمى أحيانا Traditional Language اللغات التجارية أو التقليدية مثل لغة بيسك وباسكال، ... الخ.

2- لغات وصفية Declaration Language 
هذا النوع من اللغات يقوم المبرمج بإعطاء مجموعة من الحقائق facts، والقواعد rules عن المشكلة ويتم حلها من قبل لغة برولوك لاحقاً، هذا يعني فقط وصف المشكلة وانتظار الجواب الاستنتاجي من الحاسبة.
ويحتاج برنامج لغة برولوك إلى عُشر (0.1) من خطوات لغة باسكال عن حل نفس المسألة في مجال ما.

1-3 أساس لغة برولوك Original of Prolog 
أن فكرة البرمجة بالمنطق في لغة برولوك جاءت من أساس منطق الرياضيات كما في الشكل (1-1).


أن لغة برولوك تعمل بمبدأ عبارات هورن Horn Clause الذي جاء نتيجة تطور مبدأ المنطق من المنطق الرياضي وصولاً إلى صيغة برولوك.
بعد تطور منطق الرياضيات تم التوصل إلى منطق حساب Predicates، وهو ببساطة حالة خاصة للمنطق تستخدم هيئات ورموز تشبه الرياضيات إلا أنها تحدد العلاقات بين الجمل Object Formals بصيغة مبسطة ولذلك سميت First Order لأنها مرحلة تسبق منطق لغة برولوك. وهنا سيتم إعطاء أمثلة عامة عن كيفية استخدام هذا المنطق.


فهرس الكتاب
الفصل الأوّل: مقدمة في لغة برولوك Prolog
2.1 إختلاف لغة برولوك عن اللّغات الإعتيادية.
1 - لغات إجرائية Procedural Language
2 - لغات وصفية Declaration Language
3.1 أساس لغة برولوك Original of Prolog
1.3.1 منطق Clause Form
2.3.1 منطق عبارات هورن Horn clauses
4.1 المدخل إلى لغة برولوك
5.1 الهيكل العام للغة برولوك
6.1 التّوابث والمتغيّرات
7.1 كيف يتم تعريف العلاقة How to Define Predicate
8.1 العمليات الحسابية وعمليات المقارنة في لغة برولوك
9.1 عمليات القراءة والكتابة

الفصل الثّاني: البحث الرّاجع Backtacking
2-2 الهدف الدّاخلي والخارجي Internal and external goals
3-2 إيعاز القطع cut
4-2 إيعاز النّفي Fail

الفصل الثّالث: الإستدعاء الذّاتي Recursion
2-3 معالجة اللّغات الطّبيعية 

الفصل الرّابع: القوائم Lists
2-4 الإضافة للقوائم
3-4 الحذف من القوائم

الفصل الخامس: قواعد البيانات في برولوك
5-2 إضافة في قاعدة البيانات
5-3 حذف من قاعدة البيانات
4-4 برامج متنوعة على قاعدة البيانات