עבר ועתיד בעולם המחשבים

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

באטלר הוא חוקר עם נסיון עצום, בתחום (מערכות מחשב) שהנסיון חשוב בו, ולכן הסתקרנתי מאוד לדעת מה בדיוק הוא חושב על העבר, ועוד יותר הסתקרנתי לדעת מה הוא חושב על העתיד של מערכות מחשב. הוא עובד בתחום כבר יותר מארבעים שנה (סיים את הדוקטוראט ב-1967), וזכה בפרס טיורינג ועוד הרבה פרסים חשובים אחרים. הוא עבד במעבדת המחקר החלוצית של זירוקס בפאלו אלטו, במעבדת מחקר של חברת דיגיטל, ומ-1995 הוא עובד במיקרוסופט.

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

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

רשימת הכשלונות (או ליתר דיוק, רעיונות שעדיין לא הצליחו), יותר מעניינת ויותר מעוררת מחלוקת. ברשימה הזו הופיעו יכולות (capabilities, מנגנון לייצוג הרשאות), חישוב מבוזר, מערכות טיפוסים מתוחכמות, אבטחת מחשבים, עצמים לא נדיפים (persistent objects), הפעלה של שגרות מרוחקות (RPC), הנדסת תוכנה, ומעבדי RISC. מה שמעניין ברשימה הוא שכל הרעיונות שכלולים בה נראו מצויינים בזמן מסויים, והיו להם תומכים עם כח שכנוע רב (לחלקם יש תומכים גם כיום). אבל בסוף רעיונות מצליחים או נכשלים אם הם טובים או לא טובים, בלי קשר לכח שכנוע של מישהו. ההסברים של באטלר לגבי למה כל רעיון לא הצליח היו מעניינים מאוד.

היו גם כמה רעיונות שבאטלר חשב שלא הצליחו עדיין, אבל אולי יצליחו בעתיד. ברשימה הזו היו שיטות פורמאליות לאימות תוכניות, חישוב מקבילי, ורכיבי תוכנה. אחת התובנות המעניינות של באטלר היו לגבי רכיבי תוכנה. הבעיה המרכזית בפיתוח ושימוש ברכיבי תוכנה מוכנים הוא שקשה מאוד לפתח תוכנה אמינה שמשתמשת בהרבה רכיבים ממקורות שונים (זה יותר קל עם משתמשים ברק שניים שלושה רכיבים גדולים, כמו מסד נתונים ושרת ווב). הוא סיפר על מצגת שמהנדסים מאמזון הציגו למהנדסים ממיקרוסופט, ובה הם הסבירו שבאמזון יש קבוצות קטנות של מהנדסים, 10-12, שכל אחת מהן אחראית באופן מלא לרכיב תוכנה מסויים (web service). הקבוצה מפתחת את הרכיב, משדרגת אותו, בודקת אותו, הכל. אין שום צוות שאחראי לבדוק שכל הרכיבים הללו עובדים ביחד. המהנדסים של מיקרוסופט לא יכלו להאמין שהשיטה הזו עובדת; האינטואיציה שלהם היתה שזו שיטה כאוטית שחייבת לגרום למוצר הכולל לעבוד בצורה לא נכונה לעיתים קרובות. הם צדקו. על פי למפסון, שיטת הפיתוח של אמזון עובדת מסיבה אחת בלבד: באמזון יש רק פיסת תוכנה קטנה שחייבת לעבוד נכון: הכפתור checkout, שלחיצה עליו מבצעת את ההזמנה ומחייבת את כרטיס האשראי של הלקוח. כל השאר יכול להיות לא נכון. המלאי שמצויין לפריט לא נכון? דירוג הגולשים למוצר לא נכון? לא חשוב; אולי זה יגרום לאבדן מכירה פה ושם, אבל זה לא סוף העולם. אם התוכנה יכולה לפעול בצורה מספקת גם אם היא פגומה מאוד, יש דרכים יעילות מאוד לפתח אותה, כמו הגישה של אמזון, שמבוססת על רכיבי תוכנה. אבל להרבה מוצרי תוכנה אחרים זה לא פועל.

זה העבר.

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

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

מעורר השראה.

סגור לפרסום תגובות והשארת עקבות.

תגובות

  • כדרלעומר  ביום 19 באפריל 2008 בשעה 12:49

    אבל לא הבנתי מדוע "הנדסת תוכנה" מופיעה ברשימת הכישלונות?

  • סיון  ביום 19 באפריל 2008 בשעה 13:51

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

  • איתי  ביום 19 באפריל 2008 בשעה 15:28

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

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

  • דודי  ביום 19 באפריל 2008 בשעה 19:21

    ומדוע זה נכשל?

  • רון סי  ביום 20 באפריל 2008 בשעה 09:23

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

  • סיון טולדו  ביום 20 באפריל 2008 בשעה 14:32

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

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

  • סיון טולדו  ביום 20 באפריל 2008 בשעה 14:44

    המונח אבטחת מחשבים מתייחס לטכנולוגיות שמאפשרות שימוש מסויים במחשב אבל לא שימוש אחר. למשל אני יכול לשלוח דואר אלקטרוני מהמחשב שלי, אבל אני מקווה שאף אחד אחר לא יכול.

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

  • א  ביום 20 באפריל 2008 בשעה 18:08

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

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

%d בלוגרים אהבו את זה: