דמיאן כץ, Couchbase: "אין באמת שפת תכנות טובה יותר או פחות"
עם זאת, אמר כץ - מייסד שותף ומנהל הטכנולוגיה של החברה, כי "יש הרבה קריטריונים לשפת תכנות טובה: פרודוקטיביות, יכולת ביצועית, אמינות, יכולת ניוד בין פלטפורמות, הקהילה שעוטפת אותה וגם מה שאתם כבר יודעים עליה לפני שאתם מתחילים להשתמש בה" ● ארמין רונאכר מ-Fireteam דיבר על שימוש בסכמות ותורים עבור פיתוח באמצעות ממשקי תכנות לרשת ● קנת' ריץ מ-Heroku דיבר על פיתוח המבוסס על API
"כשמתחילים ליצור קוד, מתאהבים בדרך כלל בכלים שמשתמשים בהם וכך נוצרת תחרות לגבי איזו שפת תכנות טובה יותר. האמת היא, שאין באמת שפת תכנות טובה יותר או פחות", אמר דמיאן כץ, מייסד שותף ומנהל הטכנולוגיה של Couchbase. "עם זאת, יש הרבה קריטריונים לשפת תכנות טובה: פרודוקטיביות, יכולת ביצועית, אמינות, יכולת ניוד בין פלטפורמות, הקהילה שעוטפת אותה וגם מה שאתם כבר יודעים עליה לפני שאתם מתחילים להשתמש בה".
כץ אמר את הדברים בכנס DevconTLV February, שנערך ביום ה' האחרון באוזןבר בתל אביב. בכנס, שנערך בתפוסה מלאה, השתתפו למעלה מ-20 נואמים בשני מסלולים: JVM ו-Agile. במקביל, נערכו באירוע סדנאות עבודה שהועברו על ידי מייק סקלניק מ-GitHub וקרלוס קונדה משירותי הענן של אמזון (Amazon).
לדברי כץ, "פרודוקטיביות היא קריטריון חשוב מאוד בבואנו לקבוע אם שפת תכנות היא טובה או לא. זה דבר שצריך להתייחס אליו מיד בהתחלה. לפעמים מעבר בין שפות יכול לשפר את הפרודוקטיביות באופן דרמטי, כך שזמן כתיבת הקוד יכול להתקצר משמעותית ולזרז את הבאת היישום למשתמשים הסופיים. מהבחינה הזו, Erlang ,Lisp, רובי (Ruby) ו-Phyton נחשבות בעיני לטובות. עם זאת, שתי האחרונות הרבה פחות טובות כשבוחנים אותן בקטגוריית הביצועים, מה שהופך את C ו-++C לבחירה טובה יותר במקרים מסוימים – כי הן הכי טובות בביצועים. אמנם בדרך כלל לא צריך ממש לחשוב על הביצועים, אבל עבורי ביצועים זה לא רק מהירות הידור, אלא גם היכולת לבנות וליצור במהירות רבה יותר".
"אמינות היא היכולת לחזות עד כמה השפה צפויה", הסביר כץ. "אני רוצה לוודא שאני לא משתמש בשפה שגורמת לי לצרות. PHP יכולה להיות שפה אמינה ביותר אם משתמשים בה כמו שצריך, ואפילו C ו-++C, אבל קל מאוד להפוך אותן לבלתי אמינות".
ומה עם הקהילה? לפי כץ מדובר בקריטריון המפתח. "יש מפתחים שהקהילה מאוד חשובה עבורם, אולם יש אחרים שקהילה גדולה מדי יכולה להרתיע אותם".
עוד סיבה לבחירת שפת פיתוח, הוא המשיך, היא מה אתה כבר יודע עליה. "אם אינכם בטוחים ואינכם מרגישים בנוח עם השפה – זה בכלל לא משנה מה אחרים אומרים עליה. ששת החודשים בהם השתמשי ב-++C נראים היום כמו בזבוז זמן, או לפחות זה היה בזבוז זמן אם הייתי ממשיך לעבוד עם השפה, ולא עובר ל-Erlang".
לסיכום, אמר כץ, "צריך להתייחס לכל הקריטריונים, כי אם אתם בוחרים שפה רק על פי אחד מהם, תבצעו ככל הנראה בחירה שגויה".
ארמין רונאכר, מהנדס תוכנה ב-Fireteam – המספקת שירותים למשחקי מחשב מקוונים במודל PaaS (ר"ת Platform as a Service) דיבר על שימוש בסכמות ותורים עבור פיתוח באמצעות ממשקי תכנות לרשת. "כמובן שלא המצאנו את השימוש בשיטות אלו לצרכי פיתוח, אבל אנחנו מיישמים אותן באופן שיסייע לנו להשיג את המטרות שלנו: למנוע מהמשתמשים להרגיש שאנחנו מבצעים שדרוגים, לאפשר ללקוחות שלנו לספק שירותי משחק כמעט בכל מקום ולהשתמש באותם מהלכי תוכנה כדי לשמור על קישורים מבוססי ארכיטקטורת RESTful, שמציעים את אותה תצורת מידע ייחודית".
רונארכר הציג דוגמאות לשימוש במשתנים איידמפוטנטים (Idempotent) כדי לקבוע תור לפעולות שצריך לבצע, כמו הענקת ערך לשדה, הוספת ערך למערך, מחיקת רשומה, יצירת רשומה עם מזהה צפוי ועוד. "יש חלוקה בין 'עובדי' התור לבין 'מרכזים', שאחראים על ביצוע התור, בניית התור והעברת התוצאות הלאה, בהתאמה. כך, העובד של התור, לדוגמה, נרשם לתור שהוא צריך לבצע, מוציא ממנו פריט, מפעיל את נקודת הקצה הצפויה, מבצע את הבקשה ואז מחזיר את התוצאה – ושוב באמצעות התור".
לדבריו, החברה בחרה להשתמש ב-Redis לצורך עבודה עם התור, כי "מדובר בפתרון יציב למדי, עם זמן אחזור ניתן לצפייה, שקל מאוד לשעתק את נתוניו. בנוסף, הוא גם זוכה לתמיכה טובה".
קנת' ריץ, מומחה פיית'ון (Python) ראשי ב-Heroku, דיבר על פיתוח המבוסס על API, תוך שהוא מתאר כיצד החברה עובדת. "כולנו, החל מאנשי המוצר והמכירות ועד המתכננים והמתכנתים, מעצבים חוויות וממשקים, כאשר כל אחד תורם מתחומו להצלחה בנקודה הזו – וזה מה שמחבר בין כל האנשים שעובדים אצלנו. מה הם הממשקים הללו, אם לא ה-API עבור המתכנתים? מתכנתים עובדים שמונה שעות ביום ויותר על API, אז למה שהם לא יזכו לעבוד עם ממשקים יפים, מסודרים ונוחים לעבודה?".
לפי ריץ, ה-API שולטים בעולם התכנות, ובעזרתם צריכים להשיג את המטרה – שהיא כמובן יישום טוב יותר. "זה מתחיל בבחירת נושא, שהוא בעצם בעיה מוחשית שאתה מכיר היטב. זה ממשיך דרך קביעת המוטיב להחלטות שלך בנושא הפיתוח: האם מדובר, לדוגמה, בפיתוח מונע רווחים או תכונות? זה עובר דרך הענקת עיצוב שמגיב לסביבה בה היישום נמצא ומסתיים בבנייה, שמה שחשוב בה הוא ה-API. כל השאר – משני".
תגובות
(0)