שפת מכונה | טור 10
[הטור מתפרסם במקור ב-"עליית המכונות" - קבוצת פייסבוק העוקבת אחר התנודות במאזן הכוח, האימה והאושר, בין הטכנולוגיה לבני האדם.]
על משפט בעברית שמודע לעצמו, ועל נגיף טוב לב בגנגס
את הנגיף הראשון בעולם יצר ילד בכיתה ט'. ליתר דיוק: הוא יצר את הנגיף הראשון שהדביק מחשבים אישיים. בחג המולד של 1980 קיבל ריק סקרנטה מחשב אפל II, ובמשך חודשים נטש אותו רק כשהלך לבית הספר, לשירותים או כשקראו לו מדי פעם לארוחות. הוא כתב כמה משחקים פשוטים בבייסיק, ונהג להחליף עם חבריו למעבדת המחשבים בבית הספר דיסקטים עם משחקים כמו דוגפייט, או מישן אסטרואיד, בגרסאות פיראטיות. לפעמים השתיל להם סקרנטה על הדיסקט, כמעשה קונדס, איזו הפתעה; תוכנית שהיה כותב בשפת אסמבלי ונועדה להצחיק אותם, או אותו. התוכניות שלו לא עשו שום נזק. הן כתבו משהו על המסך, או החשיכו אותו, אבל החברים כבר התחילו לחשוד בכל דיסקט שנגע בו. סקרנטה הרהר: האם יוכל לכתוב תכנית ערמומית, שלא חייבת לשבת תמיד על דיסקט שהוא עצמו מוסר, ובכל זאת תגיע אל מחשביהם של חבריו? האם יוכל להמציא פיסת קוד שאינה תלויה פיזית בחתיכת פלסטיק קטנה אחת, אלא נעה איכשהו בכוחות עצמה? הרעיון לכתוב תוכנית שתשכפל את עצמה עוד ועוד, לדיסקטים אחרים, למחשבים זרים, שלח בסקרנטה שורשים. הוא עבד שבועיים וכתב אותה. השנה הייתה 1982.
מְשָׁבֵּט האיילים. Elk Cloner. כך קרא סקרנטה לתוכנית שיצר. מי מבין חבריו שעדיין הסכים להחליף אתו משחקים על גבי דיסקטים, זכה גם, מבלי ידיעתו, בעותק של המְשָׁבֵּט, ששכפל את עצמו בכל פעם ונצמד אל זיכרון המחשב שאליו הוכנס הדיסקט, אם בבית או אם במעבדת המחשבים בבית הספר. כל דיסקט נוסף שהוכנס אחר-כך אל אותו מחשב מזוהם, נדבק גם הוא בתוכנית. כך עבר והתגלגל הנגיף של סקרנטה בין חבריו, היגר מפיטסבורג, התפזר, והגיע כנראה עד בולטימור. כמו התוכניות שיצר סקרנטה קודם לכן, גם מְשָׁבֵּט האיילים היה חף כמעט מכל פשע. סקרנטה, כאמור, כתב אותו רק כי הבין שהאפשרות קיימת, והיא אתגרה אותו עד גבול יכולתו. אבל כמו בעבר, משהו בכל זאת הייתה התוכנית צריכה לעשות; לאותת על קיומה, לחלוב מן המשתמשים איזה רגש. לכן ספר הנגיף של ריק כמה פעמים הופעל כל מחשב שבו השתכן, ואז, באופן מחזורי, בכל פעם שהספירה הגיעה לחמישים, עם הפעלת המחשב החשיך המְשָׁבֵּט את המסך ומילא אותו בשורות של שיר. זהו תרגומו:
מְשָׁבֵּט האיילים: התוכנית שיש לה אישיות
הוא יגיע לכל הדיסקטים שלך
הוא יחדור לכל שבביך
כן, זהו המְשָׁבֵּט!
הוא ייצמד אליך כמו דבק
הוא ישנה גם את הזיכרון
שחררו את המְשָׁבֵּט!
כשהתלונות על המְשָׁבֵּט גברו, כתב סקרנטה תוכנית שמוחקת אותו, הפיץ גם אותה, ובזה נגמר הסיפור. רק שנים לאחר מכן זכו הנער והווירוס למקום בהיכל התהילה של הנגיפים. אין חולק על כך שהנגיף של סקרנטה לא התפשט רחוק מדיי; ספק אם הדביק יותר מכמה עשרות מחשבים. אופן השכפול שלו היה מוגבל מאוד, והתבסס על תנועה פיזית ממש בין מחשבים, דיסקטים וילדים. אבל הרעיון שעומד בבסיסו אינו שונה ממה שעומד מאחורי וירוסים שמסכנים היום, פוטנציאלית, מאות מיליוני מחשבים, מכשירים סלולריים, או כל חומרה אחרת, ולמעשה גם איננו שונה מהותית ממה שמסכן אותנו עצמנו כישויות ביולוגיות. בעברית, משום מה, לא משתמשים במילה נגיף לתיאור אותו קוד שעשוי לתקוף מערכות טכנולוגיות, וה-"וירוס" (או ה-"אנטי וירוס", במקום "אנטי-נגיף") לא יוצר אצלנו בהכרח תחושה של סכנה אישית, אינטימית – הלעז מגן עלינו כביכול – אבל באנגלית אין כמובן כל הבדל: נגיף הוא נגיף, בין בגוף ובין בסיליקון. והאמת היא שכאן, לפחות, האנגלית צודקת. השימוש באותה מילה עבור הישות הדיגיטלית איננו שימוש של השאלה, או דימוי מוצלח שתפס. מדובר באותו דבר בדיוק. שני המקרים עניינם פיסת קוד, שחקוקה איכשהו בחומר, ונזקקת לגוף אחר, ישות זרה, פונדקאי, שיממש את הקוד ויסייע לו להשתכפל. זה הכול.
רבים צללו במחילת הארנב של מושג השכפול העצמי; החל מנפילים כמו ג'ון פון ניומן, שנרדף על-ידי רעיון המכונה המשכפלת את עצמה, דרך סופרים כמו חורחה לואיס בורחס, שמוטיבים של השתקפות, גלגול של דבר בשכפולו וחידות המולידות את עצמן מככבים כולם בסיפוריו, ועד מתמטיקאים דוגמת סולומון גולומב, שעסק בבעיות של ריצוף המישור באמצעות אריחים המשעתקים זה את זה. אבל מי ששיקע עצמו יותר מכולם, אולי, בעניין זה, הוא דאגלס הופשטטר. ספרו המונומנטלי, "גדל, אשר, באך", שראה אור ב-1979, עוסק אמנם במגוון רב של נושאים, ובין השאר הוא גם בוחן עמוקות את יסודות הבינה המלאכותית, אבל לא מעט משיאיו מוקדשים למנגנוני העתקה ושכפול. בפרט, מגדיר הופשטטר בספרו מושג בשם Quine, על שמו של וילארד ואן אורמן קווין, פילוסוף ולוגיקן אמריקאי, שהטביע חותמו בשאלות דומות.
בפשטות: Quine היא תוכנית מחשב, שאין לה כל קלט, כלומר – דבר אינו מוזן לה. כאשר מריצים אותה, פעולתה אחת – היא פולטת שכפול זהה לה לחלוטין. כלומר, כל ייעודה בעולם הוא ליצור לעצמה העתק. מבחינת הופשטטר, ה-Quine היא אבן יסוד, במסלול לפתרון השאלות העמוקות ביותר אודות קוד – מהו ומה תפקידו, במדעי המחשב ובחיים בכלל. עם זאת, למרות שה-Quine מתפקדת אמנם כנגיף, אין למעשה הכרח לנגיף שיהיה תמיד Quine. זו צורה מזוקקת מאוד של נגיף, רעיון תיאורטי כמעט. נגיף צעצוע. וירוסי מחשב אמיתיים הם יצורים פראיים בהרבה, והם אינם נענים לאותה הגדרה מצומצמת. קל להבין זאת: על פי רוב עושים נגיפי המחשב דבר-מה נוסף מלבד השתכפלות – נזק, שיבוש כלשהו, או סתם הפרעה. כלומר, בקוד שלהם יש מטען שלא מכוון רק למטרות שעתוק עצמי.
אבל ה-Quine משאירה את העסק רחוק מאיתנו לא רק טכנית, אלא גם נפשית. היא דבר מקסים, אך כזה שמתפקד בעיקר כשעשוע לגיקים של שפות תכנות, שמתחרים ביניהם מי יכתוב את תוכנית ה-Quine הקצרה ביותר בקוטלין או בג'אווה; הנגיף הנקי הזה לא נוגע בנו, והוא אף תלוי כמובן במערכות הפעלה ממוחשבות שישכפלו אותו. גם הופשטטר קלט זאת, ולכן, בספרו "Metamagical Themas" משנת 1985 הוא מקרב אלינו את הישויות המשתכפלות, ובפרק בשם "משפטים ויראליים ומבנים המשכפלים את עצמם" הוא עוסק בדיוק בזה: במשפטים בשפה טבעית, כלומר שפת בני אדם, המתפקדים כנגיף. המשפט הנגיפי קורא לאדם לבצע פעולה מסוימת, או סט של פעולות, שבסופן אותו משפט עצמו ישתכפל.
הדוגמה הפשוטה מכל לכך היא המשפט "העתק אותי". מי שממלא כלשונה את ההוראה שנותן לו משפט זה, מייצר בכך עותק זהה למשפט המקורי. אך זו דוגמה גסה ולא מתוחכמת. מה חשוב כאן התחכום? אם נשתמש בעולם המושגים הוויראלי, ניתן אולי לומר שהמשפט "העתק אותי" הוא נגיף שדרך פעולתו ישירה מדיי. קל לזהות את מטרת פעולתו, ולכן קל גם להתנגד לה. במלים אחרות, בנייתו של אנטי-וירוס עבור משפט כזה תהיה פשוטה עד גיחוך. זהו נגיף שמצהיר על עצמו שהוא נגיף. הופשטטר ממשיך ונותן דוגמה סבוכה מאוד למשפט נגיפי באנגלית, שאיננו כה טריוויאלי. ייקח לנו דקות ארוכות לפענח אותו. כתחליף, אני מציע, לשם המחשה בלבד, משפט נגיפי פשוט, אך לא פשוט מדיי, שחיברתי בעברית:
סַדְּרוּנִי מילה מילה לפי האלפבית אחורנית
זה הכול. הבה נבצע יחד את הפעולות שדורש מאיתנו המשפט:
1. נבדוק באיזו אות מתחילה כל מילה:
ס, מ, מ, ל, ה, א.
2. נסדר את המילים לפי האלפבית:
אחורנית האלפבית לפי מילה מילה סַדְּרוּנִי
3. ואז נהפוך את הסדר, אחורנית:
סַדְּרוּנִי מילה מילה לפי האלפבית אחורנית
מה זה?! קיבלנו עותק זהה למשפט הראשוני! ועשינו זאת דרך מעבר על סדרה קצרה של הוראות, מבלי שבאף שלב נאמר לנו באופן מפורש "העתק אותי". כלומר, באופן כלשהו הטעה אותנו המשפט, הפיל אותנו בפח. כמעט בהיסח הדעת, שכפלנו אותו. כמובן, אפשר לדמיין דוגמה מורכבת בהרבה, הדורשת מאיתנו שלבים רבים, זעירים, בדרך לתוצאה הסופית – מחיקת מילים, יצירת מילים חדשות, ערבוב, היפוך ומעשי לוליינות לרוב; תהליך שבו נאבד את ידינו ואת רגלינו, כל חושינו יטושטשו, ובדרכו הערמומית ישתמש בנו המשפט כדי לשבט את עצמו מבלי שנבחין כלל שזה מה שאנחנו עושים. כך או כך, אם המשפט עצמו הוא קוד בשפת בני אדם, ואנחנו מערכות ההפעלה, הרי שהפכנו לרגע לפונדקאים, עבור הנגיף.
ודאי – זהו נגיף חלש מאוד. לאו דווקא כי הוא מבצע דרכנו רק שכפול אחד, אלא כי הקוד, ההוראות הניתנות במשפט, לא מתייחס כלל אל השלב הבא, אל ההידבקות הנוספת. כדי שהמשפט דמוי הנגיף ישגשג באמת, יתפוס לו טריטוריה בין הגופים המשכפלים, הכרחי שיכיל באופן כלשהו הוראות הדורשות מאיתנו לבקש מקוראת נוספת לעשות אחרינו את מה שעשינו אנחנו. בצורתו הנוכחית, הנגיף ייעצר בנו וידעך. ולמרות מגבלה זו, מעצם טבעו הוויראלי, אין זה משפט מן השורה. הוא מתייחס לעצמו. יש בו מעין גרסה חיוורת, ראשונית מאוד, של מודעות עצמית, שכן הוא מתאר בגופו שלו את האופן שבו הוא בנוי. זהו משפט שמתבונן על עצמו באיזו מראה נסתרת, ומספר לנו ממה ואיך הוא עשוי. הדבר נכון כמובן לגבי כל נגיף, הבנוי מלים או חומר אחר, ובעצם, לכל יצור בעל יכולת שכפול, הנושא עמו, בדרכים שונות, את הוראות היצירה שלו עצמו, או של יצור דומה לו מאוד. גם אנחנו כאלה, למעשה.
שנה אחרי המְשָׁבֵּט של סקרנטה, יצר פרד כהן, סטודנט באוניברסיטת דרום קליפורניה, את Cohvir, עוד תוכנה מדבקת שלא הזיקה לאיש, וספק אם התפשטה אל מחוץ למעבדות האוניברסיטה. אבל כהן, בניגוד לסקרנטה, כבר ידע לאן הוא חותר, וכשסיפר על כך למרצה שלו, פרופ' ליאונרד אדלמן, הבין גם הוא במה מדובר, והיה הראשון שקרא לסוג זה של תוכנית "וירוס". כהן הגה רעיון נוסף – את האפשרות של וירוס מיטיב. ואמנם, הנזק שמחולל בדרך כלל וירוס, איננו מהווה כלל תנאי הכרחי להגדרתו. כדוגמה, המציא כהן את נגיף הכיווץ (Compression virus), שתוקף מחשבים ומכווץ את הקבצים המאוחסנים עליהם – כלומר, משפר למעשה את יעילות המערכת. לא ברור אם כהן היה מודע לכך, אבל גם לרעיון זה יש מקבילה בטבע: הבקטריופאג' – ווירוס הטורף חיידקים. נגיף מעין זה, הפועל כנגד חיידק הכולרה (כלומר, לטובת האדם), התגלה ונחקר לראשונה בסוף המאה ה-19, במימי הגנגס.
כהן, על כל פנים, הפך למומחה אפור למדיי לאנטי-וירוסים ולניהול סיכונים. סקרנטה גם הוא לא הפך למטאור בעולם התוכנה; הוא עבד כמתכנת בתאגידים שונים, וב-2010 השיק מנוע חיפוש בשם Blekko, שהוצג כמתחרה לגוגל, נרכש על-ידי IBM והתפוגג. לאחרונה ייסד גם אפליקציה לדירוג ביקורות על מסעדות. לא בטוח שהטיימינג מוצלח. אבל הרצון לכבוש ולהצליח מובן, והרי בשאיפה להתפשט, להגיע לעוד ועוד משתמשים, לעוד בני-אדם, לעוד לבבות, לעוד ארנקים, בעולם כה מקושר כמו שלנו, יש משהו מן הנגיף. לא צריך להיות ריק סקרנטה בשביל לחשוק בכך. זהו דחף בלתי נמנע, שלא אופייני רק למפתחי וירוסים; הוא מתקיים בצורה זו או אחרת בכל צורת חיים, ובהרבה דברים שאינם בדיוק צורות חיים. מוטל עלינו איפוא רק להחליט מי נהיה אנחנו בשעשועון "איזה נגיף אתה?": קוביד-19, מְשָׁבֵּט האיילים, או הווירוס המיטיב של פרד כהן. שתפו בכל הכוח.
פורסם במקור ב-05.03.2020
בועז לביא הוא תסריטאי, יוצר קומיקס ומרצה על אלגוריתמים כותבים.