פרולוג וצבים אחרים.

אני תלמיד נצחי של האוניברסיטה הפתוחה, אני לומד שם מתחילת שנת 2000, לפעמים יותר, לפעמים פחות.
לפני שני סימסטרים עברתי את קורס החובה האחרון במתמטיקה, ומאז התחלתי לשים גז עם קורסים של מדעי המחשב.
בסימסטר קיץ לקחתי בסיסי נתונים, שהיה משעמם למדי, ואלגוריתמיקה – שהיה אחלה קורס.
בסימסטר שנפתח השבוע אני לוקח את את אלגוריתמים, ואת פרולוג – היבטים לבינה מלאכותית.
בינתיים היה לי מפגש אחד של פרולוג, ומחר יהיה לי המפגש הראשון של אלגוריתמים.
פרולוג זו שפה מעניינת, תכנות בלוגיקה.
יש עובדות, יש חוקים, יש אטומים ויש משתנים.
עובדות ניראות ככה:


parent(popo, koko).
parent(mima, koko).
parent(baba,mima).
parent(bebe,mima).
female(bebe).
female(mima).
male(koko).
male(popo).
male(baba).

אחרי שהם הוגדרו, אפשר לשאול דברים כמו:


?- female(koko)
no

?- male(koko).
yes

parent(X,koko).
X = popo ? ;
X = mima ?
yes

חוקים נראים ככה:


mother(Mother,Child) :-
female(Mother),
parent(Mother,Child).

father(Father,Child) :-
male(Father),
parent(Father,Child).

grandfather(Grandfather,Child) :-
make(Grandfather),
parent(Grandfather,X),
parent(X,Child).

בעצם מה שכתוב בחוק הראשון הוא שאמא היא אמא אם היא נקבה ואם היא ההורה של הילד, נשמע הגיוני, לא?
חלקים שמופרדים בפסיק צריכים שניהם להתקיים. (פסיק = וגם).
מילים שמתחילים באות גדולה הם משתנים.

אחרי שהחוקים האלו הוגדרו אפשר לשאול דברים כמו:


?- father(X,koko).
X = popo

?- mother(mima,X).
X = koko

ריקורסיה משמשת תפקיד מאוד מרכזי בפרולוג.
הנה הגדרה של אב קדמון:


predecessor(X,Y) :-
parent(X,Y).

predecessor(X,Y) :-
parent(Z,Y),
predecessor(X,Z).

הקורא המשקיע ינסה להבין מה קורה פה.
הנה דוגמאות לשאלות כאלו:

?- predecessor(baba,koko).
true

?- predecessor(baba,X).
X = mima
X = koko

בקיצור, פרולוג זו שפה לוגית, עתיקת יומין (1972), ממש חוכמת קדמונים.
לדעתי הקורס הזה יהיה מעניין, אני אעדכן בהמשך.

פוסט ראשון

היום התקנתי שרת של חלונות 2003 בעבודה.
בזמן העדכונים/שדרוגים, מישהו שאל אותי מה אני עושה, אז אמרתי לו שאני באמצע העידרוגים.
ככה, בספונטניות מוחלטת, נולדה מילה חדשה, שתהפוך את העולם של המעדרגים למיניהם לעולם טוב הרבה יותר.
הטיות:

    עידרגתי.
    עידרגת.
    עידרגו.
    מעדרגות.
    יעדרג.
    התעדרגה.

שימושים:

    אל תשאל, עידרגתי את המחשב ל286, ומאז אני לא מצליח לעשות בוט לדוס.
    אני הולך לעדרג את הדביאן לאטצ', תחזיקי לי אצבעות.
    שמעתי שהIT עדרגו את השרת, ומאז לא נודעו עקבותיו.