בתשובה לטל כהן, 24/08/01 16:08
מיהו רקורסיבי? 33063
רקורסיה היא:

a computer programming technique involving the use of a procedure, subroutine, function, or algorithm that calls itself in a step having a termination condition so that successive repetitions are processed up to the critical step until the condition is met at which time the rest of each repetition is processed from the last one called to the first

(הגדרה 3 של המלון המקוון של מרים-וובסטר)

זו היתה *בדיוק* השפעתו של השיר הזה על הקורא(ת הזו). השיר קרא לעצמו, בתוכי, כדי להראות שהוא לא שיר, בצורה שירית.

אבל כדי להבהיר את כוונתי, כאשר השתמשתי במלה רקורסיה כדי לתאר שירה, התכוונתי לטכניקת כתיבה שמשתמשת במלים כדי להתייחס לעצמם עד להתכנסות לכדי משמעות.

החזרה אל השיר מתוך תהייה אם אמירתו אמיתית או שקרית מדמה היטב תהליך זה.
מיהו רקורסיבי? 33258
אני שונא להיות קטנוני, אבל... כאן calls itself מופיע במובן (התכנותי) invokes itself, (דהיינו: "מריץ את עצמו מהתחלה", או אם לדקדק ממש "מבקש להיות מורץ מהתחלה") להבדיל מ-refers to itself. שיר רקורסיבי (די מטופש) יראה כך, למשל:

אני מעולם
לא התיימרתי
להיות משורר.
עם עדיין
אינכם מאמינים לי
אתם מתבקשים
לקרוא שיר זה
מהתחלה,
כאן ועכשיו,
ולחזור לשורה זו
רק אחרי
שתסיימו.
אם הגעתם עד לכאן,
אתם מאמינים לי.

(יש להקפיד לנהל מחסנית ראויה בזמן קריאת השיר. אזהרה: אנשים קטני-אמונה לא יסיימו לקרוא שיר זה לעולם, ועלולים לחלות ב-Stackasis, מחלה נוראה המתבטאת בהודעת השגיאה Out of Stack Space.)

או לחלופין:

כדי להבין
מהי רקורסיה
יש לקרוא שיר זה
מהתחלה.

(זוהי גרסה "פואטית" של רשומת האינדקס המופיעה בכמה ספרים, בסגנון:
Recursion ... see Recursion
- שוב, הפניה-עצמית - להבדיל מאזכור, או התייחסות, עצמיים. אגב, אם השיר היה מסתיים בשורות "יש לחזור/לשורה הראשונה", אזי התוצאה היתה לולאת GOTO פשוטה, ולא רקורסיה).

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

ה(לא-)שיר של דובי ("...לא/תהיה התגובה/הזו/שיר") מתייחס לעצמו, בדומה למשל למשפט השקרן: "משפט זה הוא שקרי". זוהי, כאמור, התייחסות עצמית (self-reference), ולא רקורסיה. השיר לא מבקש ממך לקרוא אותו שוב בשום שלב.

דקדוקי עניות: את יכולה, כתוצאה מאכויות מסויימות של ה(לא-)שיר, להחליט לקרוא אותו שוב. אולם זוהי תכונה של כל שיר, של כל טקסט למעשה; ההחלטה נובעת ממך, בהשפעת השיר, ולא מהנחיה מפורשת הקיימת בשיר. ואם תאמרי: "אבל גם בשיר המכיל הנחייה מפורשת, אני יכולה להתעלם ממנה!", הרי שזוהי "קפיצה אל מחוץ למערכת"; אנו פשוט מגיעים לנקודה בה המיפוי בין שיר לבין תוכנית ממצא את עצמו, משום שהמוח הקורא את השיר (להבדיל מהמעבד המריץ את התוכנית) לא מחוייב להתייחס להוראות המופיעות בו.

אגב, ההגדרה המילונית שהבאת למונח "רקורסיה" שגויה, משום שניתן בהחלט לתכנת רקורסיה ללא תנאי עצירה (termination condition). כלומר, ניתן ליצור לולאה אינסופית בעזרת רקורסיה. ברוב שפות התכנות התוצאה תהיה "נפילה" של התוכנית בשל סופיותה של המחסנית, אך רקורסיות מסויימות ("רקורסיות זנב"), בשפות מסויימות (למשל Lisp או ML) יכולות להוביל ללולאה אינסופית שתמשיך (תאורטית) לעד.
מיהו רקורסיבי? 33267
קראתי את שירך הרקורסיבי
ואת הבהרותיך הנלוות
והבנתי כל מילה שכתבת
מא' ועד ת'
אך אין זה בזכותי
כי אם בזכות הסבריך הצלולים
אתה מורה מצוין
אשרי תלמידיך.

חזרה לעמוד הראשי המאמר המלא

מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים