תקציר לעצלנים. המשפט היסודי של ההיי-טק: כשם שאין נהר בלי מים, כך אין תוכנה בלי באגים. משפט אי השלמות התוכנתי: בכל תוכנה קיים באג אמיתי שאינו ניתן להוכחה. וחוץ מזה – האם גם אין חומרה בלי באגים? על שינוי ההיסטוריה סטייל "1984" והתנצלות בפני מר הופשטטר. וגם טבלת "תפקידים ומשימות" למען ידעו כל הייטקיסטית והייטקיסט את תפקידם בהיי-טק.
מעשה בשני באגים
אז ככה. שתי טעויות, או שני באגים, או שתי בעיות שצצו להן בשבוע שעבר. אחת לגבי "חוק הופששטר" והשנייה על הפוסט המוצלח של שבוע שעבר, ובעיקר על דיאגרמתו המופלאה (ארכי-טקט או לא ארכי-טקט, הא?).
זה שנים שאני רץ עם חוק הופששטר. הוא הופיע בלא מעט פוסטים, וגם מככב אחר כבוד בהרצאות שאני מעביר על עקרונות התכנות ההישרדותי. ורק השבוע, גילו לי שאני כבר שנים קורא לו הופששטר במקום הופשטטר. ויהי הדבר לפדיחה גדולה.
הבאג השני היה באותה דיאגרמה מופלאה – שגיאת כתיב מביכה על ממש. אגב, מה שיפה בעולמנו הוירטואלי, שאפשר לשכתב את ההיסטוריה. שני הבאגים תוקנו זה מכבר. ממש כמעשה 1984 – "ולא נודע כי באג אל קִרבו". הלוואי והיה אפשר לשנות את ההיסטוריה האמיתית בקליק של עכבר.
המשפט היסודי של ההיי-טק
ולמה את חטאי ואת בָּאגַי אני מזכיר היום? כדי להראות ולהדגים, ולהיות למשל ולתוכנה, ובעיקר ללמד למתכנתי הפלג המזרח-תיכוני של תעשייתנו היקרה כאן בארץ הקוד-אש את המשפט היסודי של ההיי-טק. קראו והפנימו:
ככה זה. קל ופשוט, ויציב, ונכון, ושריר וברור וקיים. אין דבר כזה שאין באגים. יכול להיות שחושבים שאין באגים. יכול להיות שלא מצאו שום באגים. אבל הבאגים שם. ומה קורה עם החומרה? כך שאלה אותי אחת מקוראותי הנאמנות. אז לגבי החומרה, ראו הערה מתחת לקו.
היטיב ממני לנסח זאת אחד מקדמוני ההיי-טק ר' אדסחר דייקסטרה שאמר בלשונו השנונה וההולנדית:
משפט אי השלמות התוכנתי
והנה, גם הופשטטר הנ"ל הוא דוגמא לבאג שמתגלה אחר שנים בציטוט פשוט שלכאורה לא ניתן לשגות בו. ואמנם כבר אמרו לפני "מעוות לא יוכל לתקון", אבל זה היה לפני העידן הוירטואלי, ואני כבר תיקנתי את הדרוש תיקון. אבל פטור בלא כלום אי אפשר. ולכן צללתי לעומקה של מחסנית ועיינתי קלות בכתבי הקוד-אש ובספֶּעקים הקדושים של מר הופ' המכובד, והנה עלה במוחי הקוד-קודח חידוש גדול, מספרו הידוע: "גדל, אשר, באך", והרי הוא לפניכם:
ולאלו שפחות בקיאים ממני (לא שאני בקיא – ממש לא. אני פשוט קורא ערכים אקראיים בויקיפדיה ונופל על דברים כאלה, בשביל לעשות רושם של אדם משכיל), משפט זה אינו אלא תרגום לשפת ההיי-טק של משפט אי השלמות הראשון של גדל "בכל תורה קיימת טענה אמיתית שאינה ניתנת להוכחה".
אמנם גירסה זו של משפט אי השלמות אינה נכונה כלל וכלל, אבל זה לא בעיה שלי. כי היום מה שחשוב זה מה שפופולרי ומקבל לייקים, ולא מה שנכון. מה גם, שלהערכתי ומניסיוני עתיר הכשלונות והבאגים, בתחום התוכנה משפט אי-השלמות התוכנתי נכון לגמרי ובכל מקרה בלתי ניתן להפרכה.
ולסיום, כיון שנשאלתי רבות לגבי הדיאגרמה המופלאה, וראיתי שרבה הבורות לגבי דרכי הפעולה וחלוקת התפקידים ומי אחרי על מה, ובכלל. החלטתי, לטובת המגזר בכללותו, והמגדר-הניהולי בפרט, להכין רשימת עזר קצרה, שתהווה מעין השלמה לדיאגרמה המופלאה ובה הגדרות ברורות וחדות כטכנולוגיית-קצה לתפקידים המרכזיים בהיי-טק וחלקם ביצירת ופתרון באגים ובעיות. (וגם בגלל שחלק ב' של הדיאגרמה עוד לא מוכן…).
ואחרי פוסט מלא אמרות שפר שכאלה, לא נותר אלא לחזור על המשפט היסודי של ההיי-טק:
והמהנדס החכם אומר: כשם שאין נהר בלי מים, כך אין תוכנה בלי באגים.
מתחת לקו: נו, אז האם גם בחומרה ניתן לומר שאין חומרה בלי באגים? או שמא החבר'ה שם יותר רציניים ועושים עבודה כמו שצריך?
דעו לכם, שגם בחומרה תמיד יש באגים, אלא שלבאגים בחומרה תמיד מוצאים איזה תיקון או פיצ'פוץ' בתוכנה, וברגע שנמצא פאץ' שכזה, הרי שמאותו הרגע הבאג עובר אחר כבוד מממלכת החומרה לתהומות התוכנה, וכך צוותי החומרה יכולים לשכוח מכל פשעיהם ובאגיהם ולעבור ללא דאגות לפרוגרמה הבאה, בעוד צוותי התוכנה נאלצים להמשיך ולעבוד, ולדבג ולפצ'פץ' את באגי החומרה לאורך שנים. ככה זה. פראיירים לא מתחלפים, הם רק מתקנים את הבאגים של החומרה כל הזמן.