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