ביארנה סטרוסטרופ

ביארנה סטרוסטרופ: שילוב אלגנטיות במהירות

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

התחלה ממעמד הפועלים באורהוס

סטרוסטרופ נולד ב-30 בדצמבר 1950, באורהוס, דנמרק, למשפחה ממעמד הפועלים, ולמד מתמטיקה עם התמחות במדעי המחשב באוניברסיטת אורהוס מ-1969 עד 1975. לאחר מכן עבר לאוניברסיטת קיימברידג' לדוקטורט במדעי המחשב, שהושלם ב-1979 תחת דייוויד וילר והתמקד במחשוב מבוזר. בקיימברידג', ודרך השפעתו של קריסטן ניגארד — אחד משני הממציאים של Simula ושל תכנות מונחה עצמים עצמו — ספג סטרוסטרופ את הרעיונות על מחלקות, ירושה והפשטה שיגדירו את עבודת חייו. הוא אמר שהחשיפה שלו לכוח הביטוי של Simula, בשילוב עם תסכול מכך שהיה איטי בצורה לא מעשית להרצה, נטעה את הבעיה הספציפית ש-++C נבנתה לפתור.

מעבדות בל והולדת "C עם מחלקות"

בשנת 1979 הצטרף סטרוסטרופ למרכז המחקר למדעי המחשב של מעבדות בל של AT&T במארי היל, ניו ג'רזי — אותה תרבות מחקר שהפיקה את Unix ואת שפת C עצמה. שם החל להרחיב את C עם מחלקות בסגנון Simula, וקרא לתוצאה בתחילה "C עם מחלקות". המדריך הפנימי למה שישונה שמו ל-++C הופיע ב-1984, והשפה הגיעה לשחרור מסחרי ב-1985, באותה שנה שבה פרסם סטרוסטרופ את המהדורה הראשונה של "שפת התכנות ++C", ספר שיגיע לארבע מהדורות ויתורגם לעשרים ואחת שפות. הוא בנה במכוון את ++C כהרחבה של C ולא כשפה מאפס, החלטה שעלתה לו בטוהר תיאורטי מסוים אך קנתה תאימות מיידית עם בסיס קוד וכלי עבודה עצומים קיימים — סחרור פרגמטי שעשה יותר מכל דבר אחר כדי לקבוע כמה מהר השפה התפשטה. הוא המשיך להוביל את מחלקת המחקר לתכנות בקנה מידה גדול של מעבדות בל של AT&T מהקמתה ועד סוף 2002, ומונה לעמית מעבדות בל ב-1993 ולעמית AT&T ב-1996.

מה ++C באמת הוסיפה

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

THE FREE TEST
How high is yours?

Twenty questions, eight minutes on the clock, and a percentile measured against everyone who has taken it. No sign-up.

Take the IQ test →

רעיית שפה דרך סטנדרטיזציה

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

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

אחרי מעבדות בל, סטרוסטרופ עבר לאוניברסיטת טקסס A&M ב-2002 כפרופסור מופקד בקולג' להנדסה, והפך לפרופסור מכובד של האוניברסיטה ב-2011. ב-2014 הצטרף למורגן סטנלי כעמית טכני ומנהל בכיר תוך החזקת פרופסורה אורחת מקבילה באוניברסיטת קולומביה, ומאז 2022 הוא פרופסור מן המניין למדעי המחשב בקולומביה — קשת קריירה מאוחרת יוצאת דופן שהציבה את ממציא שפת המערכות במרכז הטכנולוגיה של חברת מסחר בוול סטריט.

פרסים והכרה

הכבודים של סטרוסטרופ עוקבים אחר השפעתו העצומה ולא אחר פריצת דרך חגיגית יחידה: פרס גרייס מארי הופר של ACM ב-1993, בחירה כעמית ACM ועמית IEEE ב-1994, פרס ויליאם פרוקטר להישגים מדעיים ב-2005 (מדען המחשב הראשון שקיבל אותו), מדליית פאראדיי של IET ב-2017, ופרס צ'ארלס סטארק דרייפר ב-2018 "על רעיונאות ופיתוח שפת התכנות ++C". מוזיאון היסטוריית המחשב הכיר בו כעמית ב-2015, וזקף לזכותו את "הבאת התכנות מונחה העצמים והתכנות הגנרי למיינסטרים". הוא לא קיבל את פרס טיורינג של ACM.

מדוע ביארנה מכונה גאון

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

מורשת

++C נותרה יסודית למערכות הפעלה, דפדפנים, מנועי משחקים ומערכות מסחר פיננסיות, והשפעתה רצה בצורה גלויה דרך Java, C#, ו-Rust. ההערכה של סטרוסטרופ עצמו לעבודת חייו תמיד הייתה חסרת סנטימנטים באופן אופייני: הוא בנה כלי שנועד לשימוש, ולפי מדד זה — שכיחות עצומה של עשורים — ++C הצליחה מעבר לכל שפת תכנות אחרת בהיסטוריה.