3 בינו׳ 2008

Tech Talks

בגוגל העולמית, כמו גם בגוגל חיפה ישנה מסורת של tech-talks, הרצאות של שעה ואולי קצת יותר בכל מיני נושאים, ובעיקר נושאים טכניים.
בארה"ב יש הרצאות כאלה כל יום וגוגלרים בוחרים, ע"פ הנושא המדובר אם מעניין אותם להצטרף או לא.
בחיפה, כמו גם בתל אביבֿ יש הרצאות אחת לשבוע בערך.
נושאי ההרצאות הם שונים ומגוונים. במקרים מסויימים ההרצאות ניתנות ע"י גוגלרים שמבקרים אותנו ממקומות אחרים ומספרים על המוצר שהם עובדים עליו או מחקר שהם עשו באקדמיה, לעיתים ההרצאות ניתנות ע"י גוגלרים מקומיים גם כן על מחקר שעשו או על תחום המומחיות שלהם בגוגל, או כל נושא אחר שבתחום מומחיותם. יש גם הרצאות בנושאים פחות מדעיים כגון אמנות או גאוגרפיה, בגדול הגישה היא כל דבר שיכול להרחיב את הדעת ויש קהל מעוניין הוא נושא טוב להרצאה.
לעיתים מוזמנים למשרד מרצים בעלי שם מחוץ לחברה שבאים לספר לנו על תחום עיסוקם. השבוע התמזל מזלנו ופרופסור דוד הראל ממכון וייצמן, חתן פרס ישראל הרצה בפנינו.
דוד, מרצה מחונן בעל יכולת מעולה לשבות קהל, הציג בפנינו את גישתו לתכנות מערכות מחשב מורכבות.
מערכות מחשב מורכבות, ע"פ דוד, מתאפיינות בתגובתיות, כלומר אלו הן מערכות שמקבלות את הקלט שלהן תוך כדי ריצה, בניגוד למערכות שמקבלות את כל הקלט לפני תחילת הריצה.
דוד הציג בפנינו את תפיסת עולמו, כפי שמוצגת במאמר הרואה אור בימים אלה ממש (או אולי עוד מספר ימים) בשם Can Programming Be Liberated, Period ב IEEE Computer, פרפרזה על המאמר המפורסם Can programming be liberated from the von Neumann style , כיצד מתכנתים מערכות מורכבות. לתפיסתו, ואמנם קטונתי, אבל אני נוטה מאוד להסכים, תכנות של מערכות צריך להיות הרבה יותר high-level ממה שהוא היום. אז זה נכון שבערך כל מדען שלישי וכל מתכנת שני יכול להגיד את זה, אבל דוד גם מציג כלים ותפיסה בהחלט הגיוניים לדעתי, ולכל הפחות, פותחים את המחשבה.
דוד מציג גישה של "לימוד המחשב באמצעות משחק". בפוסט קצר זה לא אתאר את כל המתודה, שעליה עובד דוד כבר מספר שנים, אבל אנסה להציגה על קצה המזלג. באמצעות "משחק" play-in המתכנת מראה למחשב דוגמאות חיוביות או שליליות של פעולות, כגון "אם חייגתי מספר בטלפון הסלולרי ולחצתי send צריכה להתבצע שיחה", או "תוך כדי שליחת הודעת טקסט אסור לטלפון להיכנס לתהליך כיבוי". המשתמש מראה למחשב תסריטים או דוגמאות כאלה, ואז אפשר להורות למחשב לשחק בתגובה ולבצע play-out. ה play-out הוא תהליך הרצה של כלל ההתנהגות שכבר הוכנסה מתוך התסריטים והדוגמאות שניתנו בשלב ה play-in , כולל לקיחה מלאה בחשבון גם של התסריטים השליליים, כלומר אלה שאסור שיקרו. וזה, כמובן החלק הקשה בכל העניין. אמנם דוד לא הציג בפנינו את האלגוריתם המדוייק של שלב ה play-out אבל אלגוריתם זה אכן קיים. כאשר המחשב משחק בחזרה למשתמש, המשתמש בודק אם התוצאות אכן נכונות ונותן משוב למחשב. כך, על קצה המזלג, נראית סביבת הפיתוח העתידית של מערכות מחשב, כלומר לא עוד תכנות אימפרטיבי כמו ב C או Java, ואפילו לא עוד תכנות פונקציונלי כמו ב Lisp או ML, כי אם תכנות לפי אילוצים, כלומר ברמת אבסטרקציה אף גבוהה יותר. אני באופן אישי אוהב את הגישה הזו.
דוגמה טובה שנתן דוד כדי להמחיש את גישתו היא איך הורה "מתכנת" את ילדיו. ההורה נותן לילד דוגמאות של נכון ולא נכון, ובנוסף נותן לילד אילוצים כגון "עד 12 אתה בבית". הילד, עם הזמן לומד מה נכון לעשות בסיטואציה כלשהי אפילו אם זו הפעם הראשונה ממש שהוא נתקל בה. גם הילד, כמו תוכנה, צריך להגיב לקלט אשר לא היה ידוע מראש. לא שאני או דוד באים לטעון שילד == תכנה, אבל בתור דוגמה זה ממחיש את העניין.
אז תודה לדוד על הרצאה מעניינת ותודה גם על עזרה בכתיבת פוסט זה.

ודרך אגב חזרתי מחופש זה עתה והיה מגניב!

אין תגובות: