פרולוג (Prolog) היא שפת תכנות לוגית שנוצרה במקור ליישומי בינה מלאכותית.
השפה היא שלמה טיורינג, כלומר אפשר לממש בה כל דבר שניתן לממש בשפות תכנות רגילות. שמה נגזר מ-PROgramming LOGic.
היא פותחה על ידי אלן קולמר (Alain Colmerauer) באוניברסיטת אקס-מרסיי והוכנסה לשימוש ב-1972.
בעבר היו לה תקוות גבוהות כהמשך טבעי לשפות תכנות; כיום היא נותרה בעיקר שפה אקדמית.
בניגוד לשפות נפוצות, בפרולוג לא כותבים רשימת הוראות לביצוע. במקום זאת מגדירים עובדות, כללים ושואלים שאלות.
כך יש קשר הדוק בין פרולוג לבסיסי נתונים.
לשפה מנגנון הוכחה פנימי שמסוגל להשיב על שאילתות מורכבות.
לב המנגנון הוא איחוד (unification), תהליך שמנסה להתאים תבניות על־ידי מילוי משתנים.
בנוסף קיים גישוש נסוג (backtracking), ניסיון מסודר של אפשרויות עד למציאת פתרון.
קוד פרולוג מבוצע בדרך כלל על ידי מפרש ולא עובר הידור. עובדה זו, יחד עם היות מנגנון ההוכחה לא תמיד יעיל, עלולה להאט ביצועים.
בפרולוג יש שני סוגים עיקריים של הצהרות: עובדות וכללים.
עובדות יכולות להיות אטומים פשוטים כמו summer ("עכשיו קיץ").
הן יכולות גם להגדיר תכונות על איברים, למשל male(yoni) ו-tall(yoni).
יחסים בין אנשים נכתבים כפרדיקטים, למשל love(yoni,rotem).
משתנים מתחילים באות גדולה; למשל X הוא משתנה.
כלל יכול להיראות כך:
love(rotem, X) :- male(X), love(X, rotem).
זה אומר: רותם אוהבת מישהו X אם X זכר וגם X אוהב את רותם.
כלל נוסף:
married(X,Y) :- summer, love(X,Y), love(Y,X).
ניתן לשאול: ?- married(X,Y).
המפרש יכול להחזיר X = yoni, Y = rotem.
בשל המבנה התיאורי והיכולת לנסח חוקים מופשטים, תוכניות פרולוג נוטות להיות קצרות ואלגנטיות.
פרולוג היא גם שפה רקורסיבית, אימות שאילתה מתבצע באמצעות קריאות מקוננות של כללים עד למסקנה או עד סיום איסוף הפתרונות.
כל תוכנית פרולוג בנויה כקו של פסוקי הורן (Horn clauses).
נושא שנוי במחלוקת הוא הוספת ה-Cut (גיזום), סימן קריאה '!'.
ה-Cut מגדיל את יעילות הריצה על ידי עצירת גישוש נסוג במקרים ידועים.
מצד שני הוא פוגע בטוהר הדקלרטיבי של השפה ומשנה את משמעות הריצות בהתאם לסדר ההגדרות.
ה-Cut נחשב לפקודה אימפרטיבית ולכן מקרב את פרולוג לשפות פרוצדורליות.
שפת הלוויין דטלוג (Datalog) מוגדרת כתת-שפה של פרולוג.
דטלוג יותר מצומצמת, אינה תומכת בפונקציות, ומנהלת הסקה מטה-מעלה (bottom-up) במקום מעלה-מטה כמו פרולוג.
דטלוג משמשת בעיקר למסדי נתונים לוגיים בתחומי בינה העסקית.
במחשבים אישיים יצאו למשל Turbo Prolog וגרסאות מוּדָרות של פרולוג, שכוללות מהדר.
קיימת גם הרחבה גרפית ותמיכה בעברית ב-OW Prolog (אמזי פרולוג).
פרולוג היא שפת תכנות לוגית. היא נוצרה לעזור בתוכנות של בינה מלאכותית.
השם מגיע משילוב המילים Programming ו-Logic.
היא פותחה על ידי אלן קולמר באוניברסיטת אקס-מרסיי ב-1972.
בפרולוג לא כותבים רשימת פקודות. כותבים עובדות וחוקים. אחר כך שואלים שאלות.
לדוגמה: male(yoni) אומר שיוני זכר. love(yoni,rotem) אומר שיוני אוהב את רותם.
אחר כך אפשר לשאול מי נשוי למי.
איחוד הוא תהליך שמנסה להתאים מה שאנו כותבים לערכים.
גישוש נסוג אומר שהמערכת מנסה דרכים שונות עד שמוצאת פתרון.
בדרך כלל המחשב מריץ פרולוג מיד, בלי לתרגם קודם. זה לפעמים הופך את זה לאיטי.
יש פקודה שנקראת '!' (Cut). היא עושה את הריצה מהירה יותר.
אבל היא גם משנה איך החוקים עובדים.
דטלוג היא גרסה פשוטה של פרולוג. אין בה פונקציות.
מפתחים משתמשים בדטלוג במסדי נתונים לעסקים.
יש גרסאות כמו Turbo Prolog. יש גם גרסה עם תמיכה בעברית בשם OW Prolog.
תגובות גולשים