ג'ושוע בלוך: המצפון של פלטפורמת ג'אווה
"שפת התכנות ג'אווה כילתה את תקציב המורכבות שלה עם השינויים שהוכנסו בגרסה 5.0." זהו משפט מפתיע, בעיקר בשל זהות האדם שאמר אותו. ג'ושוע בלוך בילה שנים ב-Sun Microsystems בתכנון התוספות המדוברות, וגרסת JDK 5.0 שהוא סייע לעצב הייתה ההרחבה השאפתנית ביותר שחוותה השפה מעודה. ואז הוא אמר לעולם שזה מספיק. האינסטינקט הזה — לפקח על מערכת שהוא עצמו הרחיב, ולחשוב במונחים של תקציבים במקום תכונות — הוא מהותו כולה במשפט אחד.
סאות'המפטון, קולומביה, פיטסבורג
בלוך נולד ב-28 באוגוסט 1961 בסאות'המפטון, ניו יורק. הוא השלים תואר ראשון במדעי המחשב מבית הספר להנדסה ומדעים שימושיים של אוניברסיטת קולומביה, ולאחר מכן המשיך לדוקטורט באוניברסיטת קרנגי מלון, אותו סיים בשנת 1990. התזה שלו, "גישה מעשית לשכפול אובייקטי נתונים מופשטים", הייתה מועמדת לפרס הדיסרטציה המצטיינת של ה-ACM.
את הכותרת כדאי לקרוא פעמיים. גם כסטודנט לתארים מתקדמים, מילת המפתח בעבודתו של בלוך הייתה מעשי. הוא לא תקף את השכפול כבעיה תיאורטית במערכות מבוזרות; הוא חיפש גרסה שלו שמהנדסים יוכלו להטמיע בפועל עבור אובייקטי נתונים מופשטים. הוא בילה את שארית הקריירה שלו באותו פער צר ולא אופנתי שבין מה שניתן להוכחה כנכון לבין מה שניתן לסמוך על מתכנת עובד שישתמש בו.
Sun וספריית האוספים (Collections Framework)
לאחר תקופה ב-Transarc כמעצב מערכות בכיר, הצטרף בלוך ל-Sun Microsystems, שם הפך למהנדס מובחן (Distinguished Engineer) והוביל את התכנון והמימוש של כמה מהרכיבים שהופכים את ג'אווה למה שהיא. ספריית האוספים של ג'אווה (Java Collections Framework) היא הגדולה שבהם: אוסף הממשקים והמימושים — רשימות, קבוצות, מפות, והאלגוריתמים הפועלים עליהם — שעליהם נבנתה כל תוכנית ג'אווה מאז. הוא גם הוביל את חבילת java.math ואת מנגנון ה-assert של השפה, והניע שיפורים משמעותיים ב-JDK 5.0.
זהו סוג מוזר של כתיבה. ספריית אוספים אינה יישום; היא אוצר מילים. מיליוני מתכנתים שמעולם לא שמעו את שמו של בלוך מבלים את חייהם המקצועיים בתוך שמות העצם והפעלים שהוא בחר, וצורת החשיבה שלהם מוגבלת על ידי צורת הממשקים שלו. טעות כאן לא הייתה מייצרת תוכנית גרועה; היא הייתה מייצרת שפה גרועה לכתיבת תוכניות בה, באופן קבוע.
Twenty questions, eight minutes on the clock, and a percentile measured against everyone who has taken it. No sign-up.
Take the IQ test →ג'אווה אפקטיבית (Effective Java)
בשנת 2001 פרסם את ג'אווה אפקטיבית (Effective Java), והספר עשה משהו שספרים על שפות תכנות עושים לעיתים רחוקות: הוא הפך לסמכות מוסרית עבור קהילה. הספר, המבונה כסדרה ממוספרת של פריטים עצמאיים, שכל אחד מהם מציג כלל ומנמק אותו מתוך כשלים אמיתיים, זכה בפרס Jolt בשנת 2001. המהדורה השנייה, בשנת 2008, גדלה מחמישים ושבעה פריטים לשבעים ושמונה מבלי להפוך לקשה יותר לקריאה; מהדורה שלישית יצאה ב-2017.
הוא כתב שני ספרים נוספים עם שותפים. חידות ג'אווה (Java Puzzlers), עם ניל גאפטר ב-2005, הוא אנתולוגיה של מלכודות השפה — קוד שמתנהג כראוי על פי המפרט ובצורה מטורפת על פי האינטואיציה — המוצגת כתרגיל אבחנתי. הספר מקביליות בג'אווה הלכה למעשה (Java Concurrency in Practice), שנכתב ב-2006 עם חמישה שותפים בהם דאג לי, הפך להפניה הסטנדרטית בנושא הקשה ביותר שהפלטפורמה מציבה למשתמשיה.
גוגל ועיצוב ממשקי תכנות (API)
בלוך היה האדריכל הראשי של ג'אווה בגוגל מיוני 2004 עד אוגוסט 2012. שם התגבשה עיסוקו המרכזי לכדי ויכוח ציבורי. המאמר שלו מהוועידה ב-2006, "איך לעצב API טוב ומדוע זה חשוב," מתייחס לעיצוב ממשקים כדיסציפלינה עם סיכונים ולא כעניין של טעם, מתוך תפיסה ש-API הוא חוזה שלא ניתן לנהל לגביו משא ומתן מחדש. הוא תיאר את התסכול בצורה מוחשית: בגוגל הוא לא יכול היה לספק מימושים חלופיים למחלקות מסוימות מכיוון שהן הוגדרו כטיפוסים קונקרטיים ולא כממשקים — החלטה שהתקבלה שנים קודם לכן על ידי מישהו אחר, שהיא, כפי שניסח זאת, סוג המגבלה ש"מפתחים רגילים מרגישים בכל יום."
לעצותיו יש ניחוח עקבי: ענווה כלפי השיפוט של עצמך. אל תחזור על עצמך; פנה לספרייה מבוססת, במיוחד עבור מקביליות, במקום לכתוב משלך. אל תלך שולל אחרי התחושה שהאזהרות הכלליות לגבי אופטימיזציה מוקדמת אינן חלות עליך — "קל להרגיש שהאזהרות הכלליות לגבי אופטימיזציה מוקדמת לא חלות עליך, כי אתה פשוט יודע איזה קוד הוא קריטי לזמן." וקרא את אלמנטים של סגנון (The Elements of Style), כיוון ש"תכנות טוב וכתיבה טובה עוסקים שניהם בבהירות ובחיסכון בביטוי."
מדוע ג'ושוע מכונה גאון
היכולת המדוברת אינה המצאה גולמית אלא דבר נדיר יותר: היכולת לראות פיסת תוכנה מנקודת מבטו של הזר שייאלץ להשתמש בה, ולתכנן עבור הטעויות הסבירות של אותו זר במקום עבור הכישרון של עצמך. API, לפי תפיסתו של בלוך, הוא שפה שנכפית על אנשים שמעולם לא הסכימו לה ואינם יכולים לתקן אותה, מה שהופך את עיצובה לתרגיל בחיזוי שימוש לרעה בקנה מידה רחב, עשורים מראש. ספריית האוספים היא העדות לכך: אוצר מילים המשמש חלק עצום מכלל המתכנתים הפעילים, מדויק מספיק כדי לשרוד ללא שינוי משמעותי. החלק השני הוא הקידוד: ג'אווה אפקטיבית לקח מומחיות שבשתיקה שחייתה בעבר רק בראשיהם של כמה מהנדסי פלטפורמה והפך אותה לכללים ניתנים להעברה וניתנים לערעור.
ראוי להציג את טיעון הנגד. בלוך לא הפיק מדעי מחשב חדשים. עבודת הדוקטורט שלו הייתה מועמדת לפרס על דיסרטציה מצטיינת, אך לא זכתה בו; עבודתו המוכרת ביותר היא ספר של שיטות עבודה מומלצות, שהוא אוצרות ושיפוט ולא גילוי. התארים הרשומים הם פרס הוצאה לאור מקצועי ורשימה במגזין, לא פרסי המחקר המרכזיים של התחום, ואף מקור שהתייעצנו עמו לא מתעד אדם כלשהו המכנה אותו גאון. ספריית האוספים הייתה מאמץ צוותי רחב שהוא הוביל, לא יצירה של אדם אחד. פסק הדין ההוגן הוא שבלוך הוא מתרגל ומורה עליון לשיפוט הנדסי — דיסציפלינה שחשובה יותר מחידוש בתחום התוכנה וזוכה להערכה הרבה פחות.
מורשת
הוא המשיך לעצב את השפה לאחר שעזב את Sun, והיה שותף להצעת בלוקים של ניהול משאבים אוטומטי (ARM) וביטויי יצירת מופע תמציתיים כגישות לסגירות (closures); בלוקים של ARM נכנסו ל-JDK 7. בדצמבר 2004, ה-Java Developer's Journal מנה אותו בין ארבעים אנשי התוכנה המובילים בעולם. מאז הוא חזר לאוניברסיטת קרנגי מלון, שם הוא משמש כפרופסור לפרקטיקה במחלקה למערכות תוכנה וחברה — תואר שנקרא כמו סיכום הקריירה שלו, שכן הפרקטיקה תמיד הייתה העניין.
המדד לעבודתו הוא שהשפעתה אינה מיוחסת. איפשהו היום, מתכנת שמעולם לא קרא שורת פרוזה של בלוך יבחר בממשק במקום במחלקה קונקרטית, או יסרב לכתוב פרימיטיב מקביליות בעצמו, כי קולגה פעם אמרה לו לא לעשות זאת, לאחר שקראה זאת בפריט ממוספר בספר.