קן תומפסון: האדריכל השקט של הכול
כאשר מעבדות בל (Bell Labs) פרשו מפרויקט מולטיקס (Multics) בשנת 1969, נותר קן תומפסון עם מחשב מיני מסוג PDP-7 בפינת החדר וללא משימה רשמית. הוא השתמש בו כדי לבנות מערכת הפעלה בכל זאת. יוניקס (Unix) פועלת כיום, בגרסה כזו או אחרת, כמעט בכל שרת, טלפון והתקן משובץ על פני כדור הארץ. דניס ריצ'י (Dennis Ritchie), שותפו הקרוב ביותר של תומפסון ודמות בולטת בזכות עצמו, אמר על הגרסה הראשונה ההיא ש"רוב הרעיונות, ורוב העבודה לצורך העניין, היו שלו."
חשבון בבסיס בינארי
קנת ליין תומפסון (Kenneth Lane Thompson) נולד ב-4 בפברואר 1943 בניו אורלינס, לואיזיאנה. התיאור שלו על ילדותו הוא מאופק כמיטב המסורת: "תמיד הוקסמתי מלוגיקה ואפילו בבית הספר היסודי הייתי עובד על בעיות חשבון בבסיס בינארי, דברים כאלה. רק בגלל שהייתי מוקסם." המשפט האחרון הזה הוא האיש כולו — תיאבון אינטלקטואלי ללא שום מטרה תועלתנית מוגדרת.
הוא השלים תואר ראשון בשנת 1965 ותואר שני בשנת 1966, שניהם בהנדסת חשמל ומדעי המחשב, מאוניברסיטת קליפורניה בברקלי, שם מנחה התזה שלו היה תיאורטיקן הקידוד אלווין ברלקאמפ (Elwyn Berlekamp). מעבדות בל שכרו אותו בשנת 1966 למרכז המחקר למדעי המחשב במארי היל, ניו ג'רזי.
יוניקס
בין 1967 ל-1969 עבד תומפסון על מולטיקס (Multics), פרויקט שיתופי שאפתני לשיתוף זמן בין מעבדות בל, MIT וג'נרל אלקטריק. מולטיקס היה עצום, איטי ומאוחר; מעבדות בל פרשו ממנו. מה שתומפסון לקח משם היה השכנוע שהרעיונות היו נכונים, אך הביצוע היה שגוי.
סיפור המקור מוכר היטב ומעט אבסורדי. הוא רצה להמשיך לשחק ב"מסע בחלל" (Space Travel), משחק שהוא כתב, ורצה סביבה ראויה לעבוד בה. על מחשב PDP-7 מושלך, עם משאבים מינימליים וללא תמיכה מוסדית, הוא בנה את הליבה של מערכת הפעלה: מערכת קבצים היררכית, תהליכים, קבצי התקן המטופלים כקבצים רגילים, מפרש שורת פקודה הנפרד מהליבה (קרנל), וצינורות (pipes) לשרשור תוכניות יחד. כל אחד מאלה הוא כיום סטנדרטי כל כך עד שנדרש מאמץ לראות בהם בחירות של מישהו.
פילוסופיית העיצוב הייתה דחיסה. במקום מערכת שצפתה כל צורך, יוניקס הציעה מספר קטן של יסודות הניתנים להרכבה ואפשרה למשתמשים להרכיב את מה שרצו. עד 1973 היו קיימות יותר מעשרים התקנות. כדי לכתוב את החלקים שאינם הליבה בקלות רבה יותר, יצר תומפסון את שפת התכנות B, שנגזרה מ-BCPL, ושאותה פיתח ריצ'י לאחר מכן לשפת C — השפה שבה כתובה עדיין רוב תשתית התוכנה של העולם.
Twenty questions, eight minutes on the clock, and a percentile measured against everyone who has taken it. No sign-up.
Take the IQ test →כלים קטנים, שורשים עמוקים
לעבודות אחרות של תומפסון יש את אותה טביעת אצבע: רעיון קומפקטי שמתברר כנושא עול. הוא הטמיע ביטויים רגולריים (regular expressions) בעורכי הטקסט QED ו-ed, והגה את מבנה תומפסון (Thompson's construction), האלגוריתם להמרת ביטוי רגולרי לאוטומט סופי. כמעט כל מנוע ביטויים רגולריים הנמצא בשימוש כיום הוא צאצא של אותה סימון.
הוא בנה תוכנית שחמט בשנת 1971, ולאחר מכן עם ג'וזף קונדון (Joseph Condon) בנה את בל (Belle), מכונת שחמט ייעודית ששלטה בשחמט ממוחשב בתקופתה, ולאחר מכן יצר את בסיסי הנתונים המלאים של סיומי המשחק עבור סיומים של ארבעה, חמישה ושישה כלים — פתרונות ממצים לכל סוגי מצבי השחמט, גוף עבודה ששינה לצמיתות את תיאוריית סיומי המשחק.
בשנת 1992, יחד עם רוב פייק (Rob Pike), הוא תכנן את UTF-8, קידוד התווים המאפשר לזרם בייטים בודד לשאת כל שפת כתיבה על פני כדור הארץ תוך שמירה על תאימות ל-ASCII. כיום הוא מהווה יותר מ-90 אחוז מהאינטרנט. הוא היה גם דמות מרכזית בפלאן 9 (Plan 9), מערכת ההפעלה המבוזרת שבנו מעבדות בל באמצע שנות ה-80 כדי לדחוף את רעיונות יוניקס רחוק יותר ממה שיוניקס עצמה יכלה להגיע.
הרצאת טיורינג שלו משנת 1983, "הרהורים על אמון באמון" (Reflections on Trusting Trust), תיארה מהדר (קומפיילר) שמחדיר דלת אחורית לתוכניות שהוא מקמפל, וגם לגרסאות עתידיות של עצמו, כך שהקוד הזדוני לא מופיע בשום מקום בקוד המקור שמישהו יכול לקרוא. ה"האק של תומפסון" הוא מסמך יסוד באבטחת מחשבים; הקוד פורסם עם הערות בשנת 2023.
גוגל, ו-Go
תומפסון פרש ממעבדות בל בסוף שנת 2000 והצטרף לגוגל (Google) בשנת 2006, שם תכנן יחד עם רוב פייק ורוברט גריסמר (Robert Griesemer) את שפת התכנות Go. התיאור שלו על המוטיבציה הוא בוטה: "שלושתנו ישבנו יחד והחלטנו שאנחנו שונאים את ++C", שפה שאותה כינה "ערמת זבל של רעיונות שסותרים זה את זה". Go נבנתה על הכלל שכל שלושת המתכננים היו צריכים להשתכנע מכל מאפיין, מה שמהווה משמעת לשמירה על שפה קטנה.
הכבוד שהוענק לו הצטבר בהתמדה: בחירה לאקדמיה הלאומית להנדסה בשנת 1980, פרס IEEE עמנואל ר' פיורה ב-1982, פרס טיורינג של ה-ACM יחד עם ריצ'י ב-1983, חברות באקדמיה הלאומית למדעים ב-1985, מדליית ריצ'רד ו' המינג של ה-IEEE ב-1990, פרס חלוצי המחשוב ב-1994, עמית במוזיאון היסטוריית המחשב ב-1997, המדליה הלאומית לטכנולוגיה ב-1998, פרס צוטומו קנאי הראשון ב-1999 ופרס יפן למדעי המידע והתקשורת ב-2011.
מדוע קן מכונה גאון
הציטוט של פרס טיורינג מה-ACM מציג טענה מדויקת באופן יוצא דופן, וכדאי לצטט אותה מכיוון שהיא ממקמת את האיכות בדיוק: "ההצלחה של מערכת UNIX נובעת מהבחירה בעלת הטעם של כמה רעיונות מפתח ומהמימוש האלגנטי שלהם... הגאונות של מערכת יוניקס היא המסגרת שלה, המאפשרת למתכנתים לעמוד על כתפי עבודתם של אחרים."
טעם הוא מילת המפתח. הכישרון של תומפסון הוא חיסורי — היכולת לזהות את קבוצת המושגים הקטנה ביותר שתייצר את מרחב ההתנהגות השימושי הגדול ביותר, ואז לסרב לכל השאר. צינורות הם הדוגמה הקנונית: מנגנון טריוויאלי לחיבור פלט של תוכנית אחת לקלט של אחרת, שהופך אוסף של כלים קטנים למערכת קומבינטורית. ביטויים רגולריים, UTF-8 ו-Go כולם מראים את אותו דפוס של עיצוב מינימלי מספק. הוא מוזכר באופן קבוע בין המתכנתים הגדולים ביותר שחיו אי פעם, והשיפוט הזה מגיע מאנשים שכותבים קוד למחייתם ולא מוועדות פרסים.
טיעון הנגד דל יותר מאשר עבור רוב האנשים ברשימה זו, אך הוא קיים. יוניקס הייתה שיתופית — ריצ'י, בריאן קרנייהן (Brian Kernighan), דאגלס מקילרוי (Douglas McIlroy), שהציע את הצינורות, ואחרים עיצבו אותה באופן עמוק, ופרס טיורינג חולק. רעיונות רבים של יוניקס הותאמו ממולטיקס במקום להיות מומצאים מחדש. תומפסון לא הפיק תוצאה תיאורטית במדעי המחשב, והשפעתו נעוצה לחלוטין בחפצים ובשיקולי עיצוב. האם זה מהווה גאונות או מלאכה מפותחת בצורה יוצאת דופן היא שאלה הוגנת. התשובה הכנה ביותר היא שבתוכנה השניים קשים להפרדה, והמלאכה של תומפסון התגלתה כמשמעותית יותר מתיאוריות של רוב האנשים.
מורשת
לינוקס (Linux), macOS, אנדרואיד (Android), iOS והתוכנה המריצה כמעט כל שרת אינטרנט נובעות מהחלטות שתומפסון קיבל לבדו על מכונה מושלכת ב-1969. קידוד התווים שלו נושא כמעט את כל הטקסט הכתוב המקוון. אלגוריתם הביטויים הרגולריים שלו יושב בתוך כל עורך טקסט. הוא הקליט היסטוריה שבעל פה ארוכה עבור מוזיאון היסטוריית המחשב בשנת 2024, ובילה את שנותיו המאוחרות, לאחר שנטש את מוצרי אפל, בהרצת מערכת ההפעלה Raspberry Pi OS.