ماهي لغة 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

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

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

معظم اجابات أسألتك

http://rosettacode.org/wiki...

شكراً على الرابط.

-1

هووو, الكثير من لغات البرمجة!

مشكلة هذه اللغة هي عدم وجود واجهات مستخدم جيدة لها

و حتى لا يمكن ربطها بلغات اخرى

جميع المفاهيم التي بها يمكن تمثيلها في لغات أخرى باستخدام عبارات الشرط

هذا مثال يستخدم البرولوغ لإيجاد أقصر طريق

http://blog.elyaski.com/por...ربما لم يتم التركيز على مسألة الواجهات لأن الذي يحتاج هذه اللغة يركز على النتائج التي سيحصل عليها ولا يهمه كثيرا جمالية الإظهار .

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

تقصد كتطبيق جافا myApp.jar الّذي يرسل معلومات لـ Thinker.pl الّذي يعالج المعلومات ويرسل النتيجة عبر 'تيار الإخراج القياسي' أو 'تيار الخطأ القياسي'.

كلام جميل و فيه تصحيح لمعلوماتي مشكور

لكن يبق السؤال : هذه النتائج الا يمكن الحصول عليها في لغات اخرى ؟

دعني أسألك سؤالا

الحصول على نتائج إحصائية من مجموعة معطيات يمكن أن تحصل عليها من خلال لغة عامة

ولكن أيهما تفضل لذلك استخدام لغة عالية المستوى أو أحد قواعد المعطيات مع لغة SQL ؟

لا شك أن الاختيار المثالي هو الجواب الثاني ومن ثم تسخير النتائج من خلال لغة أخرى

وهذا فحوى التمييز

أي أن لغة البرولوغ موجهة لتكون فاعلة في مجال النظم الخبيرة ومن ثم تسثمر النتائج من خلال لغات أخرى

لو راجعنا المثال :

https://arabia.io/go/12419/...

وبفرض لديك آلاف الحقائق والعلاقات والقواعد

تستطيع بسطر واحد استخلاص مئات الألوف من الاحتمالات

بينما لا أظن أنك تستطيع الحصول عليها بسطر واحد في لغة عادية وربما تحتاج إلى مئات الأسطر من تعليمات الشرط المتداخلة والاختيار المتعدد

لأقرب الصورة

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

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

كلام سليم لكل لغة استخدامتها

لكن سؤال اخير الذكاء الصناعي الخاص بالالعاب يمكن بناءه بهذه اللغة ام انها موجهة فقط للنظم الخبيرة ؟

-1

كل ما تريد معرفته موجود هنا

أليس من الأجدى وضع روابط مباشرة لبعض الصفحات؟

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

هذا لم يأخذ دقيقتين.

انت اعطيته 3 روابط , انا اعطيته 155,000

على العموم كان ردي من النوع أعطني سَمَكة؛ تُطعِمنـي يومــاً .. عَلمنـي الصَيـدَ؛ تُطعِمنـي كُل يـوم

-1

ممتع أن ترى من يكتب شيء عنك.

-3

لغة يقال انها تستخدم لبرمجة الذكاء الاصطناعي

لكن بامانه مافعلته بهذه اللغة تستطيع فعله باي لغة اخرى

انها لغة غباء اصطناعي !

درستها في الجامعة، للأسف الأستاذ المحاضر لا يعلم عنها شيئاً، ونفس الأمثلة جاءت في الامتحانات، ونجحنا بتقدير ممتاز.

لا تسألني عن التحصيل العلمي، فالنتيجة صفر.

أتذكر أن الأستاذ أخبرنا بأنها اللغة التي تحرك خطوط الإنتاج في المصانع، واكتشفت بعد تخرجي أنهم يعتمدون على PLC ولا أدري هل لها علاقة بـProlog أم لا.

انا ايضاً درست المادة وطبقت على اللغة وبامانه كل الذي انجزته بهذه اللغه انجزته بلغات اخرى مثل الجافا ! فلماذا العناء ؟

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

ربما يستطيع احد من اللي اعطوني تقييم سلبي التوضيح لي اليس افضل من التقييم السلبي ؟

لا أخي الأمر مختلف ، لغة البرولوغ لها خاصية قد لا تتوفر في اللغات التالية

وقد وضحت هذه الخاصية في تعليقي :

https://arabia.io/go/12419/...

فالكود الذي تكتبه أنت في لغة عامة يترجم إلى ملف ثابت لا يتغير

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

اذاً ماتوصلنا اليه انها تطبق قوانين مثل الفازي لوجك وسيكون اسهل باستخدام هذه اللغة واللغات الثانية تستطيع فعل نفس المطلوب ولكنها لم تصنع لهذا الغرض

هذا قصدك اليس كذلك ؟

"الفازي لوجك" Fuzzy Logic هو فرع آخر للذكاء الصنعي حيث كما هو مطروح هناك أربع أنواع شهيرة للذكاء الصنعي

  • منطق الغموض أو المنطق المشوش Fuzzy Logic

  • النظم الخبيرة

  • الخوارزميات الوراثية

  • الشبكات العصبية الاصطناعية

ولغة برولوغ مناسبة للنظم الخبيرة بشكل أكثر من البقية

أما الشبكات العصبية فتصلح لها أي لغة عالية المستوى

وهي التي حازت على الاهتمام والتطوير أكثر من البقية لمحاولتها محاكاة عمل دماغ الإنسان إلى حد ما.

جزاك الله خيراً ياستاذي عبدالرحمن وياليتك انت الذي درستني المادة !

أفهم من كلامك أنها شهادة بأن إجابتي أفادتك ツ

لأن هناك من يتهمني بغير ذلك !

https://arabia.io/u/%D8%B9%...

لا تلتفت الي هؤلاء الاطفال

الموقع فقد شيء مهم عندما تركت الموقع اسبوعا بعد رسالة ذلك الاحمق

مع اننا نختلف في أرائنا و لكن لا أريدك او اي احد يخالفني الرأي ان يذهب

فألانسان يتعلم من الناس الذين يخالفهم الرأي اكثر من الذين يوافقونه الرأي

يجب ان نحافظ على تنوع الافكار بالموقع لكي لا يتحول الموقع الى circle jerking

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

ويبدو لي أن معظم التقييمات السلبية على ردودك تخص هذه الكلمة وأمثالها ، وليس بسبب الرأي

معني كلمة أحمق "* يَأْتِي بِأعْمَالٍ لاَ مَعْنَى لَهَا نَظَرَ بَعْضُ الحُكَمَاءِ" أو "يَتَصَرَّفُ تَصَرُّفَ الغَبِيّ*"

لا اعرف هي شتيمة ؟ ام ان الناس حساسون أكثر من اللازم ؟

هل هناك برأيك كلمة ألطف لأستبدلها بها ؟

تستطيع أن تصل إليها بدون أن تتلفظها (ابتسامة)

يقال أن خليفة للمسلمين رأى في المنام أن أسنانه تتساقط فسأل المعبرين للرؤى ، فقال الأول: تفسيرها أن جميع أهلك سيموتون ، فقال الخليفة قاتلك الله ، اغرب عن وجهي

فجاء الثاني وقال: هذه بشرى يا أمير المؤمنين

قال الخليفة: هات ما عندك

قال المفسر: سيطول عمرك حتى تكون آخر أهلك موتا

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

(ابتسامة ثانية)

حتى لو كان معناها في اللغة لا شيء فيه ولكن مع ذلك يجب مراعاة معناها العرفي أو الاصطلاحي

لأنها في معظم الثقافات الحالية هي إهانة

أرى أن لا تضع نعتاً وانتهى الأمر.

لأنها في معظم الثقافات الحالية هي إهانة

و كذلك تعليقاتهم تعتبر اهانة للقراء

هل يوجد كلمة احمق او اي اهانة في هذا التعليق https://arabia.io/go/12380/... ؟

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

haters gonna hate

لهذا أنا قلت معظم ولم أقل كل

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

دخلت على الرابط وقرأت الردود، فوجدت أن الاختلاف وقع اساساً في تعريف الرياضيات

واعتقادي أن مبادئ الرياضيات جزء لا يتجزأ في أي برنامج اقوم به (وجهة نظر)

لكن من الإجحاف أن يقال أنك ردودك في تلك الصفحة فيها اهانة.

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

للعلم هذه معلومات من حوالي 17 سنة من أيام الجامعة

ولا شك أنه قد طرأ تغييرات عليها فيما بعد ، تحتاج إلى مواكبة

أنا فقط أعطيت بداية الخيط

ربما تستخدم في تطبيقات مكائن الإنتاج إن كانت تخضع لمبدأ التعلم الذاتي ،

https://arabia.io/go/12419/...


برمجة

المواضيع والنقاشات المتعلقة بالبرمجة بشكل عام او لغات البرمجة التي لايوجد لها مجتمعات فرعية.

24.6 ألف متابع