سؤال

نظرًا لأن العديد من المبرمجين الذين درستهم Prolog في الجامعة ، ولكن القليل جدًا. أنا أفهم أن Prolog و Datalog مرتبطان ارتباطًا وثيقًا ، لكن Datalog أبسط؟ أيضًا ، أعتقد أنني قرأت أن DataLog لا يعتمد على طلب بنود المنطق ، لكنني لست متأكدًا من سبب هذه المزايا. من المفترض أن تكون المقاطع مختلفة تمامًا ، ولكن من الدقيق جدًا بالنسبة لي أن أفهم. هل يمكن لأي شخص من فضلك تقديم أبرز عام للغات على اللغات الأخرى؟

هل كانت مفيدة؟

المحلول

DATALOG هي مجموعة فرعية من مقدمة. المجموعة الفرعية التي يحملها Datalog لها شيئين في الاعتبار:

  1. اعتماد واجهة برمجة تطبيقات من شأنها أن تدعم القواعد والاستعلامات
  2. تأكد من انتهاء جميع الاستعلامات

Prolog هو Turing كاملة. Datalog ليس كذلك.

إخراج Datalog من الطريق ، دعنا نرى كيف يقارن Prolog بالمقاطع.

خبرة Prolog هي "حل المشكلات" في حين أن CLIPS هو "نظام خبير". إذا فهمت بشكل صحيح ، فإن "حل المشكلات" يتضمن خبرة باستخدام الكود والبيانات. تستخدم "أنظمة الخبراء" في الغالب هياكل البيانات للتعبير عن الخبرة. نرى http://en.wikipedia.org/wiki/expert_system#comparison_to_problem-solving_systems

طريقة أخرى للنظر إليها هي:

تعمل أنظمة الخبراء على فرضية أن معظم نتائج (إن لم يكن كل) معروفة. يتم تجميع كل هذه النتائج في البيانات ثم يتم تغذيتها في نظام الخبراء. امنح نظام الخبراء سيناريو ، يقوم نظام الخبراء بحساب النتيجة من البيانات المترجمة ، AKA Base Knowledge. إنه دائمًا "رقم متساوٍ بالإضافة إلى عدد زوجي هو دائمًا" نوع من التفكير.

أنظمة حل المشكلات لها عرض غير مكتمل للمشكلة. لذلك يبدأ المرء بنمذجة البيانات والسلوك ، والتي من شأنها أن تشتمل على قاعدة المعرفة (وهذا يعطي العدالة لمصطلح "قضية الزاوية") وينتهي به الأمر "إذا أضفنا اثنين إلى ستة ، وينتهي بنا الأمر بثمانية. اثنان؟ ثم حتى "

نصائح أخرى

الفرق بين المقاطع و Prolog/Datalog هو أن المقاطع هي "نظام قاعدة الإنتاج" يعمل بواسطة السلاسل إلى الأمام: بالنظر إلى مجموعة من الحقائق والقواعد ، ستحاول جعل كل اشتقاق ممكن للحقائق الجديدة وتخزين تلك الموجودة في الذاكرة. ثم يتم الرد على استعلام عن طريق التحقق مما إذا كان يطابق شيئًا ما في متجر الحقائق. لذلك ، في المقاطع ، إذا كان لديك (Pseudo-Syntax):

parent(X,Y) => child(Y,X)
parent(john,mary)

سوف تستمد على الفور child(mary,john) وتذكر هذه الحقيقة. يمكن أن يكون هذا سريعًا للغاية ، ولكنه يضع قيودًا على مجموعة القواعد المحتملة ويستغرق الذاكرة.

تعمل Prolog و Datalog بواسطة السلاسل للخلف, ، بمعنى أنه يتم الرد على استعلام (مكالمة مسند) من خلال محاولة إثبات الاستعلام ، أي تشغيل برنامج Prolog/Datalog. Prolog هي لغة برمجة كاملة ، لذلك يمكن تنفيذ أي خوارزمية فيه.

DATALOG هي مجموعة فرعية كاملة من المقدمة لا تسمح ، على سبيل المثال ، النفي. ميزةها الرئيسية هي أن كل برنامج DataLog ينتهي (لا حلقات لا حصر لها). هذا يجعلها مفيدة لما يسمى "قواعد البيانات الاستنتاجية" ، أي قواعد بيانات مع قواعد بالإضافة إلى الحقائق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top