שפת מכונה | טור 07
[הטור מתפרסם במקור ב-"עליית המכונות" - קבוצת פייסבוק העוקבת אחר התנודות במאזן הכוח, האימה והאושר, בין הטכנולוגיה לבני האדם.]
על ארנב אחד קטלני ועל שתי שפות שהולידו תוכי
מיליונים התאבלו לאחרונה על הסתלקותו של טרי ג'ונס, חבר קבוצת מונטי פייתון, שעבר לעולם שכולו הליכות מוזרות. ג'ונס, שהיה גם סופר פורה, סבל באחרית ימיו מאפאזיה, סימפטום של הפרעה נוירולוגית הפוגעת ביכולת השימוש בשפה. כמו מבטהובן שהתחרש בזמנו, גם מג'ונס נלקח הכלי ששירת אותו, שכן ההומור המונטי-פייתוני היה תמיד מילולי מאוד; ששת הקומיקאים, שהכירו רובם באוניברסיטאות העלית של אנגליה (ג'ונס עצמו היה יליד ויילס ולמד באוקספורד), התמחו במערכונים העוסקים כמעט תמיד בשיבוש יסודי של אינטראקציות אנושיות ושל חוקים. אך טבעי הוא, שמתכנת הולנדי בן 34 בשם חוידו ואן רוסום, היה בין המעריצים. ב-1990, כשפיתח בעצמו שפת תכנות חדשה, הוא צפה במקביל ב-"הקרקס המעופף של מונטי פייתון" – סדרת הדגל של הלהקה. ועל כן: לא מן הזוחל בעל הקשקשים בא שמה של שפת התכנות הפופולרית, פייתון, כפי שחושבים רבים, וכפי שרומז בטעות סמל הנחש של השפה (שחוידו ואן רוסום התנגד אליו בתחילה); שמה נולד בהשראת ההרכב הבריטי, ואזכורים למערכוניה הם חלק מן התרבות שאופפת אותה.
זה מתחיל כבר בעמודי התיעוד הרשמיים של פייתון, כפי שהם מוצגים ברשת. בין השאלות והתשובות שם, עולה לבסוף גם השאלה הבלתי נמנעת, שתשאל בוודאי כל מתכנתת פייתון בפוטנציה: "האם אני חייבת לאהוב את 'הקרקס המעופף של מונטי פייתון'?". התשובה הרשמית היא: "לא, אבל זה עוזר". גם בדוגמאות לאופן שבו עובדת שפת התכנות, ניתנת תמיד עדיפות למושגים מן ההיסטוריה הקולנועית והטלוויזיונית של ההרכב. אם צריך לבחור שם עבור מִשְתָנֶה, תהיה זו דמות מתוך היקום המונטי פייתוני, "לנסלוט" למשל, ומדי כמה זמן תצוץ כדוגמה, כאילו במקרה, המילה האהובה "ספאם" (כלומר, שימורי בשר קצוץ, המככבים במערכון נודע על מסעדה עם היצע מזון גדול במיוחד). מחברים של ספרי הדרכה לפייתון, אימצו את האסטרטגיה. בתוכניות הדגמה קצרות, מתוך ספר קלאסי בשם Learning Python, ניתן לפגוש למשל שורות קוד כמו:
x = 'killer rabbit'
לזכרו של הארנב מקרנבנוג, אותו ארנב נורא שנלחם בארתור ואביריו ב"מונטי פייתון והגביע הקדוש", או:
keys = ['spam', 'eggs', 'toast']
כמזרזי חשיבה לוגית ותיאבון.
אבל כל זה לא הספיק לחוידו ואן רוסום, ממציא השפה. כמו גיק מן השורה, גם הוא נהג לקחת את ההומור שלו ברצינות גדולה. ב-2001 הוא החליט, יחד עם לארי וול, ממציאה האמריקאי של שפת התכנות פרל, לבצע מעשה קונדס טרנס אטלנטי. שתי השפות, פייתון ופרל, נודעו בחוגי המתכנתים דאז כמין שפות יריבות. הרעיון לפיו יתמזגו לכדי שפה שלישית, חדשה, נשמע מופרך לחלוטין, אולם שני הממציאים יצאו בהודעה משותפת שמבשרת בדיוק את זה: הסכם שלום ואיחוד. התאריך היה, כמובן, האחד באפריל; לאיש זה לא הפריע. בראיון משותף החמיאו השניים זה לשפתו של זה, כמו שני מנהיגי מעצמות בירח דבש, וסיפרו על השם שבו בחרו לפרי האהבה שלהם. "חשבתי על השם 'תוכי' (Parrot)", אמר ואן-רויסום, "אחרי שנזכרתי ברגע הכי גדול של מונטי פייתון – המערכון על התוכי". לארי וול הסכים בפה מלא: " זה נשמע טוב – דינמי, צבעוני, אקזוטי. אני מת על זה!".
לתעלול הצטרפה הוצאה גדולה בתחום ספרי הלימוד למתכנתים, אוריילי (O’Reilly), שנודעת בזכות איורי החיות שעל כריכותיה. יחצני ההוצאה הכריזו על פרסומו הקרוב של ספר לימוד לשפה הפיקטיבית, בשם Parrot in a Nutshell, ואף חשפו את כריכת התוכי שלו. למרבה הצער, בדיוק כמו התוכי המת מאותו מערכון של מונטי פייתון, הרעיון המבדח לא התעורר לחיים. שפות תכנות הן הרי עניין רציני.
אלא אם יש להן שם מוזר והן נראות כאילו הגו אותן על אסיד. למעשה, יש כאלו לא מעט. קוראים להן שפות תכנות אזוטריות והן לא משהו שלומדים בשביל להתקבל לגוגל. הן פותחו כדי לבחון את גבולות עולם מדעי המחשב, לשבש אותו, לתפקד כעבודות אמנות, או במקרים רבים – פשוט כבדיחה. ובניגוד לבדיחה על התוכי של פייתון ופרל, אלו הן בדיחות שהפכו למציאות. גם אם עקרונית הן יכולות (לפעמים) לעשות כל מה שיכולה גם שפה "רצינית", האופן שבו הן עושות זאת, הוא מעורער לגמרי. הנה כמה שפות תכנות מתמיהות במיוחד, שמזכירות ברוחן רגעים מן הרפרטואר של הבריטים האקצנטריים.
2014
שפת התכנות 2014 נועדה לעבוד רק בשנת 2014, כפי שניתן אולי לנחש משמה. על פי תיאורה באינדקס שפות התכנות האיזוטריות של Esolang, תוכניות מחשב שנכתבו בה היו חסרות כל ערך לפני אותה שנה – הן פשוט לא עבדו – ואילו מייד כשעלה השחר על שנת 2015, התוכניות שכן עבדו חדלו מכך גם הן. לרוע המזל, השפה נחשפה באופן מלא רק בשעה 8:09 בערב של ה-31 לדצמבר 2014, כארבע שעות לפני תום השנה שעל שמה היא קרויה, כך שלא פותחו בה יותר מדיי דברים. כמו עם שפות איזוטריות אחרות, השפה וקוד המקור שלה התאדו מבלי להשאיר זכר. ייתכן שממציאה התפוגג גם הוא בסוף אותה שנה גורלית, ונעלם עם יצירתו.
Baby Language
שפת התכנות Baby Language מציעה להסתכל על תוכניות מחשב כמו על תינוקות. מה שלא יהיו הפקודות שבהן תשתמשו לבניית תכנית המחשב שלכם, התוצאה, לפחות בהתחלה, תהיה רנדומלית לגמרי; לא יהיה שום קשר בין מה שביקשתם לבין מה שתקבלו. אם תריצו את התוכנית שוב ושוב, ייתכן שהמצב ישתפר (כלומר, התינוק ילמד משהו), אבל ייתכן מאד גם שלא.
DOG
מי שאילף פעם כלב יתרגל מהר מאוד לשפת התכנות DOG, כיוון שכל הפקודות בה לקוחות מן המילון אדם-כלב: "בוא", "שב", "ארצה", "תן יד", בצירוף הפקודה "נבח" עבור print. כך נראית למשל תוכנית בשפת DOG שבונה סימולציה של הטלת קובייה:
fetch 1
drop floor
fetch 2
drop floor
fetch 3
drop floor
fetch 4
drop floor
fetch 5
drop floor
fetch 6
drop floor
pickup floor
bark "You rolled a "
give
Eternity
מדובר, ככל הנראה, בשפה יפה, מתוחכמת ונוחה לשימוש, שניתן לבנות איתה דברים מופלאים. עם זאת, מתכנתים שמתכוונים לבסס עליה את הסטארט-אפ הבא שלהם, כדאי שיזכרו שמהירות ביצוע איננה הצד החזק שלה. כאשר התוכנית בשפת Eternity כתובה ומוכנה להרצה, הפעלה שלה תגזול אינסוף זמן, תמיד, אינסוף במובן המילולי ביותר, וזאת בלי כל קשר למורכבותה; שפת הנצח לא פוחדת מדרך ארוכה. בדומה ל-2014, גם משפת התכנות Eternity לא נשאר דבר מלבד אזכור אנציקלופדי. אך הרעיון שעומד ביסודה הוא מה שחשוב, והוא קל מאוד לשחזור, במקרה זה.
Brainf00k
זהו היהלום שבכתר שפות הבדיחה האזוטריות – שפה חיה וקיימת, עם קהל אוהדים פעיל, שלא ניתן לכתוב פה את שמה במלואו מבלי לפגוע ברגשות הציבור (והאלגוריתם). אבל גם בכתיב מוצפן ניתן להבין מה חשב עליה מי שהמציא אותה, בשנת 1993. מדובר בסטודנט שוויצרי לפיזיקה בשם אורבן מולר, שרצה לשבור שיא ולבנות את המהדר (compiler בלעז) הקל ביותר. מהדר, במלים פשוטות שבפשוטות, היא תוכנה המתרגמת שפת תכנות עלית, כמו אלו שבהן משתמשים מתכנתים בני-אנוש, לשפת מכונה. גודל המהדר של שפת התכנות הנפוצה ++C, לדוגמה, הוא כ-2.6 מגאבייט. אורבן שבר את כל השיאים ויצר שפה שהמהדר שלה נדרש לכ-240 בייט בלבד. כלומר, פי 10,000 פחות מגודל המהדר של שפת תכנות נורמלית. כדי ששפת התכנות שלו תסתפק במהדר כה אוורירי, נאלץ אורבן לצמצם אותה ללא רחם. וכך, ב-Brainf00k ניתן להשתמש בשמונה סימנים בלבד:
< > + - , . [ ]
אבל כמו עם נס פח השמן, שמונת הסימנים הללו מספיקים להרבה מאוד – הקסם ב-Brainf00k הוא שניתן לעשות איתה הכול. ממש הכול. כל דבר ששפת מחשב כמו פייתון, או ג'אווה סקריפט, למשל, יכולות. המחיר – כאב ראש פנומנלי לכותב הקוד. תוכנית המחשב הפשוטה ביותר שניתן להעלות על הדעת, כזו שמדפיסה על המסך את המלים !Hello World, שנכתבת בפייתון כך:
print("Hello World!")
היא סיוט למהדרין עבור מתכנתת שתרצה לכתוב אותה בשפת Brainf00k. כך היא תיראה בשפתו של אורבן מולר:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
כשמה כן היא, Brainf00k.
האם לשפת בדיחה, כמו Brainf00k, יש איזה ערך? ניתן לשאול את אותה השאלה בדיוק גם ביחס למה שקרוי מכונות רוב גולדברג – אותם תרגילים פיזיקליים שבהם מחברים יחדיו אינספור חפצים ברצף, על מנת שיבצעו איזו פעולה טריוויאלית כמו רכיסת ריצ'רץ', סחיטת תפוז, או הפיכת דף בספר. מכונות רוב גולדברג שעובדות באופן מושלם, לאחר עבודת בנייה של חודשים לעתים, הן תענוג לעין; ערכן הוא במין אסתטיקה של חוסר יעילות קיצוני. אלא שבמקרה של Brainf00k, חוסר היעילות הקיצוני הזה מושת עלינו, בני האדם, ועל מוחנו. כדי לכתוב תכנית טריוויאלית ב-Brainf00k, נדרש מאמץ עילאי גם מהמתכנת הגאוני ביותר. זהו בזבוז אנרגיה טהור, שלא ניתן להצדיק, חור שחור של ניהול זמן ושל קבלות החלטות, וכזו בדיוק היא Brainf00k – שפת תכנות אבסורדית, מצחיקה, מטופשת. כאלו הן גם רבות מאחיותיה. טרי ג'ונס היה אוהב כל אחת ואחת מהן.
פורסם במקור ב-06.02.2020
בועז לביא הוא תסריטאי, יוצר קומיקס ומרצה על אלגוריתמים כותבים.