יום שלישי, 14 באפריל 2009

פודקאסט מספר 16 - Scala



בפרק זה השתתפו רן (זה אני :) וישי סמיט בקליפורניה. ישי עובד בחברת linkedin, הרשת החברתית לאנשי מקצוע.

דיברנו על שפת סקאלה (scala) שהיא שפה חדשה יחסית ואולי ההייפ החדש. בכל מקרה היא מעניינת ונמצאת כבר בשימוש במספר מקומות. זו שפה המשלבת שיטות תכנות פונקציונלי עם תכנות מונחה עצמים. קוד של סקאלה מתקמפל ל bytecode של ג'אווה, מה שאומר שג'ווה וסקאלה הן תאימות לחלוטין, כלומר כל קוד של סקאלה יכול להשתמש בג'אווה וגם הפוך.
הקובץ נמצא כאן

דיברנו על:

  • מה זה סקאלה, ומתי היא נולדה
  • מי משתמש היום בסקאלה
  • ביצועים ומהירות של ג'אווה ושל סקאלה
  • את מי מעניין ללמוד סקאלה
  • ליפט (lift) פלטפורמת הווב של סקאלה
  • מה חדש בסקאלה?
    • case classes and pattern matching
    • Trait classes
    • Singleton Objects
    • dot-less notation
    • All functions are objects
    • anonymous functions
    • Type parameterized classes and functions with upper and lower bounds
    • Actors class library for multithreaded programming
  • כלי פיתוח שקיימים לסקאלה - עורכים, דיבאגגר, פרופילר


כמה לינקים למי שמעוניין ללמוד:

9 תגובות:

  1. run that by me again? שפה פונקציונלית יותר קריאה?

    השבמחק
  2. ליאור - (הפעם כמאזין לפרק הזה)
    נראה לי שכוונת המשורר לעובדה ששפה פונקצינאלית מתעלמת מ"מצבים". כל מה שקורה בפונקציה מתרחש בקוד שלה ולא מושפע משינויי מצבים של אובייקטים או משתני מצב כאלו ואחרים. קרא את הקוד ותבין מה קורה. יש פחות תלות בהבנת חלקים אחרים בקוד מלבד הפונקציה.
    זה גם מה שהופך אותה לקלה יותר ומהירה יותר לתכנות מקבילי.

    השבמחק
  3. שפה פונקציונלית יותר קריאה, בהחלט כן! יש לכך כמה סיבות; אחת, ניתן להגדיר פונקציות באופן מתמטי; שתיים, לפונקציות אין "תופעות לוואי" (side effects); שלוש הקוד יותר קומפקטי ויש פחות עבודה שחורה כיוון שהשפות הן גבוהות יותר.
    לא כל אחד חייב לאהוב תכנות פונקציונאלי וזה נכון שמי שגדל על ברכי התכנות האימפרטיבי (C, java etc) צריך קצת זמן להתרגל לרעיונות אבל אין לי ספק בכך שהקוד קריא יותר

    השבמחק
  4. ניתן לכתוב קוד בלתי קריא בכל שפה.
    בהנתן שהקוד נכתב ללא התחכמויות מיותרות (Spider-Man(tm) principle--"with great power comes great responsibility.") קוד פונקציונלי יהיה יותר צפוי וללא תופעות לוואי.
    מעבדים עתידיים יהיו כנראה יותר איטיים ו(הרבה יותר)מרובי ליבות. שימוש בספריות Fork Join (חלק מג'אוה7 והבסיס לScala Actors) יהיה מאוד נפוץ. בסביבה כזאת קוד אמפירי הוא קריא\צפוי הרבה יתר. אני מניח שאותה קריאות שרן ואורי כתבו עליה תהיה אחת מהמניעים העקריים להגירה לScala.

    השבמחק
  5. פודקאסט קצת מאכזב

    נראה כאילו התפזרתם על כל מיני באז וורדס, ובדרך פספסתם את העיקר.

    מה הבעיה האבולוציונית שסקאלה באה לפתור?
    קשה לי להאמין שהיא הומצאה בשביל לשעש מתכנתי ג'אוה או רובי שרוצים חידושים...

    השבמחק
  6. אני אנסה לענות על השאלה האבולוציונית בקצרה.

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

    מצד שני סקלה ספגה לתוכה לקחים רבים מג'אוה ושפות דינמיות, לקחים ששפות אילו קשה להם מאוד להטמיע בגלל המחויבות לתאימות לאחור.
    סקלה למשל היא יותר statically typed מאשר ג'אוה אך מצד שני הכתיבה בה היא מינימליסטית בדומה לרובי.

    השבמחק
  7. (איי בג טו דיפר אנונימי...)
    פודקאסט מצוין!!

    לפני הראיון לא ידעתי כלום על סקאלה, והוא עשה לי חשק ללכת וללמוד את השפה - נשמע שהשפה מציעה מספר חידושים מעניינים מאוד.

    עוד עוד!

    אודי

    השבמחק
  8. [אורי - אתם ממש חייבים להוסיף תוסף שמודיע על תשובות נוספות לפוסט..]

    כמו שישי כותב, קוד טוב (ורע) אפשר לכתוב בכל שפה. המשמעות של קוד OO טוב הוא שהוא מאוד קריא וברור - אפשר לדעת בקלות מה האובייקט שעליו הפעולה נעשית, מה הקונוטציה, לרוב גם אפשר להבין מי יקרא לכל מתודה ולמה - אם השם של האובייקט והמתודה ברורים. אני אומר את זה דווקא כמי שגדל על קוד פונקציונאלי - וזוכר אפילו שזה היה אחד הטיעונים בעד OO, ולא נגד.

    בהנחה שהקוד יפה וכתוב נכון (ואני מסכים שפוטנציאל ההתברברות בOO גדול יותר) קוד OO יהיה ברור וקריא יותר. תכנות פונקציונאלי חוזר לאחרונה בגלל היעילות שלו ובגלל היכולת המקבילית החזקה של קוד כזה (או, שוב, בגלל היעילות)

    השבמחק
  9. אורי - מצטער, פיספסתי את המנוי למטה.. אחח הבלוגר הזה, יופי של פלטפורמה, אבל כל כך לא ברור. אני רשום.

    השבמחק