לולאת מל
מדריך מקיף לסיפור על מל

הסיפור על מל

פורסם בידי מחברו, אד ניית׳ר <nather@astro.as.utexas.edu>, ברשת Usenet, ב-21 במאי 1983:

מאמר מן הזמן האחרון על צד מצ'ואיסטי בתכנותיצא בהכרזה נועזת וחסרת בסיס:

" כותבים ב"

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

לבל יגדל דור מתכנתים חדשבּוּר במורשת מפוארת זואני חש כי מחובתי לתארכמיטב יכולתי מבעד לפער הדורותאיך מתכנת אמיתי כתב קוד.אקרא לו מֵל,כי זה היה שמו.

את מל פגשתי כשעבדתי בחברת המחשבים רוֹיאל-מֶק'בִּי,כיום ישות רפאים עסקית המייצרת מכונת כתיבה.החברה ייצרה אז את ה-,מחשב קטן וזול (בסטנדרטים של היום)בעל ,ובדיוק החלה בייצורה-, מחשב מתקדם יותר,גדול יותר, טוב יותר, מהיר יותר – בעל . היו יקרות מדי,ובכל אופן, עמדו להעלם.(זו הסיבה שלא שמעת על החברה,או על המחשב.)

נשׂכרתי לכתוב עבור הפֶּלא החדש הזה ומל היה המדריך שלי לכל נפלאותיו.מל תיעב מהדרים.

"אם תוכנה לא יודעת לשכתב את הקוד של עצמה,"שאל, "למה היא טובה?"

מל כתב,במספרים ,את תוכנת הדגל של החברה.היא רצה על ה-30-LGPושיחקה בלאק ג'ק בתערוכות מחשביםעם לקוחות פוטנציאליים.התגובות שעוררה תמיד היו דרמטיות.בכל תערוכה היה ביתן ה-30-LGP עמוס,סביב התגודדו אנשי המכירות של IBMודיברו ביניהם.אם כל זה מכר מחשבים או לאזו היתה שאלה שמעולם לא שאלנו.

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

בהשאלה לימינו,כל פעולה הסתיימה בפקודה !פַּטְמוּ בַּזֶּה את מיקטרתו של ועשנו.

מל אהב את ה-4000-RPCמשום שידע לכתוב עבורו :כלומר, למקם הוראות על התוףכך, כאשר הוראה נשלמה,הבאה כבר הגיעה אל "הראש הקורא"נגישה ליישום מיידי.הייתה תוכנה שנועדה לעשות את הדבר הזה בדיוק," מייעל",אך מל סירב להשתמש בה.

"לך תדע איפה זה יניח את הדברים",הסביר, "כך שתיאלץ להשתמש בקבועים נפרדים."

רק לאחר זמן רב הבנתי את ההערה הזו באמת.מאחר ומל הכיר את הערך המספרישל כל הוראהוהִקצה בעצמו את הכתובות על התוףכל הוראה שכתב יכולה הייתה להחשבלקבוע מספרי.כך יכול היה לקחת הוראת "חיבור", למשל,ואם ערכה המספרי התאים,להשתמש בה כּכוֹפֵל.עריכת הקוד שלו הייתה מסובכת לכולם, זולתו.

השוויתי את האופטימיזציה הידנית של מלעם קוד זהה שעבר עיסוי ב המייעל,הקוד של מל תמיד רץ מהר יותר.זה היה משום שעוד לא הומצא אזומל ממילא לא היה משתמש בזה.הדבר הראשון שכתב היו הלולאות הפנימיות של התוכנה שלוכדי להעניק להן יתרוןבבחירת כתובות הזיכרון הראשונות בתוף.האָסֶמְבְּלֶר המייעל לא היה מספיק מתוחכם כדי לעשות את זה.

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

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

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

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

תמיד הרגשתי שתכנות הוא אמנותשערכה האמיתי יכול להיבחן רק בידיאמן הבָּקִי בצפונותיהַ;אורים ותומים נפלאיםחבויים מן העין האנושית, לעיתים לעד,בשל עצם טבעו של התהליך.אפשר ללמוד הרבה על אישיותו של אדםרק מדפדוף בקוד שכתבאפילו במספרים הקסדצימליים.מל היה, אני מאמין, גאון שהקדים את זמנו.

ההלם הכי גדול שלי, כנראה, היה בגילוי תמימה ללא .שום תנאי. כלום.על פי ההיגיון הבריא זוהי בה התוכנה תרוץ במעגל, לעד, ללא הרף.התוכנה הזו, לעומת זאת, חלפה בתוכהויצאה מצדה השני בבטחה.נדרשו לי שבועיים כדי להבין איך.

מחשב ה-4000-RPC היה מצויד במתקן מאוד מודרניבשם -מוֹנֶהשאיפשר לתכנת לולאותשעושות שימוש בהוראות עם היסטבכל ריצה של הלולאההמספר ב-מונההתווסף לכתובת האופרנד בהוראהכדי להצביע עלפיסת המידע הבאה בסדרה.המתכנת היה צריך רק להוסיף 1 לערך השמור בבכל מעבר דרך הלולאה.מל מעולם לא השתמש בו.

תחת זאת, הוא העתיק את ההוראה אל אחר במכונההוסיף 1 לרכיב הכתובתושמר את התוצאה במקומה המקורי בזכרון.אז הריץ את ההוראה העדכניתישר מן ה.הלולאה נכתבה כך שזמן הריצה הנוסףנלקח בחשבון –מייד כשביצוע ההוראה הסתיים,הבאה בתור הייתה כבר מונחת מתחת לראש הקריאה של התוףמוכנה לריצה.אבל בלולאה לא היה תנאי עצירה.

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

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

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

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

(cc) לולאת מל
מדריך מקיף לסיפור על מל

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