בפרק זה השתתפו רן (זה אני :) וישי סמיט בקליפורניה. ישי עובד בחברת 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
- כלי פיתוח שקיימים לסקאלה - עורכים, דיבאגגר, פרופילר
כמה לינקים למי שמעוניין ללמוד:
- A Scala Tutorial for Java programmers: http://www.scala-lang.org/docu/files/ScalaTutorial.pdf
- Scala for Java programmers: http://blogs.sun.com/sundararajan/entry/scala_for_java_programmers
- Scala Lift Web Framework http://liftweb.net/
- The Book Of JOSH http://thegreylensmansview.blogspot.com/2009/02/book-of-josh.html
- Scala vs. Groovy: static typing is key to performance : http://dmy999.com/article/26/scala-vs-groovy-static-typing-is-key-to-performance
- Dave Thomas, author of the Programming Ruby book "Twitter Should Move Away from Ruby"http://pragdave.blogs.pragprog.com/pragdave/2009/04/twitter-should-move-away-from-ruby.html
run that by me again? שפה פונקציונלית יותר קריאה?
השבמחקליאור - (הפעם כמאזין לפרק הזה)
השבמחקנראה לי שכוונת המשורר לעובדה ששפה פונקצינאלית מתעלמת מ"מצבים". כל מה שקורה בפונקציה מתרחש בקוד שלה ולא מושפע משינויי מצבים של אובייקטים או משתני מצב כאלו ואחרים. קרא את הקוד ותבין מה קורה. יש פחות תלות בהבנת חלקים אחרים בקוד מלבד הפונקציה.
זה גם מה שהופך אותה לקלה יותר ומהירה יותר לתכנות מקבילי.
שפה פונקציונלית יותר קריאה, בהחלט כן! יש לכך כמה סיבות; אחת, ניתן להגדיר פונקציות באופן מתמטי; שתיים, לפונקציות אין "תופעות לוואי" (side effects); שלוש הקוד יותר קומפקטי ויש פחות עבודה שחורה כיוון שהשפות הן גבוהות יותר.
השבמחקלא כל אחד חייב לאהוב תכנות פונקציונאלי וזה נכון שמי שגדל על ברכי התכנות האימפרטיבי (C, java etc) צריך קצת זמן להתרגל לרעיונות אבל אין לי ספק בכך שהקוד קריא יותר
ניתן לכתוב קוד בלתי קריא בכל שפה.
השבמחקבהנתן שהקוד נכתב ללא התחכמויות מיותרות (Spider-Man(tm) principle--"with great power comes great responsibility.") קוד פונקציונלי יהיה יותר צפוי וללא תופעות לוואי.
מעבדים עתידיים יהיו כנראה יותר איטיים ו(הרבה יותר)מרובי ליבות. שימוש בספריות Fork Join (חלק מג'אוה7 והבסיס לScala Actors) יהיה מאוד נפוץ. בסביבה כזאת קוד אמפירי הוא קריא\צפוי הרבה יתר. אני מניח שאותה קריאות שרן ואורי כתבו עליה תהיה אחת מהמניעים העקריים להגירה לScala.
פודקאסט קצת מאכזב
השבמחקנראה כאילו התפזרתם על כל מיני באז וורדס, ובדרך פספסתם את העיקר.
מה הבעיה האבולוציונית שסקאלה באה לפתור?
קשה לי להאמין שהיא הומצאה בשביל לשעש מתכנתי ג'אוה או רובי שרוצים חידושים...
אני אנסה לענות על השאלה האבולוציונית בקצרה.
השבמחקסקלה היא מקום מפגש של שני ענפים שונים של שפות פונקציונליות ואימפרטיביות. סקלה מנסה למזג בין שני הגישות בצורה המעודדת את המפתח לתכנת בצורה פונקציונלית אך עדיין מאפשרת את הגישה האמפרטיבית שהיא יותר מעשית במצבים מסויימים. זאת בניגוד לשפות פונקציונליות המאמצות גישה "טהורה" שיכולה להקשות את חיי המפתח ולדחוף את הקוד למבנים לא "טבעיים".
מצד שני סקלה ספגה לתוכה לקחים רבים מג'אוה ושפות דינמיות, לקחים ששפות אילו קשה להם מאוד להטמיע בגלל המחויבות לתאימות לאחור.
סקלה למשל היא יותר statically typed מאשר ג'אוה אך מצד שני הכתיבה בה היא מינימליסטית בדומה לרובי.
(איי בג טו דיפר אנונימי...)
השבמחקפודקאסט מצוין!!
לפני הראיון לא ידעתי כלום על סקאלה, והוא עשה לי חשק ללכת וללמוד את השפה - נשמע שהשפה מציעה מספר חידושים מעניינים מאוד.
עוד עוד!
אודי
[אורי - אתם ממש חייבים להוסיף תוסף שמודיע על תשובות נוספות לפוסט..]
השבמחקכמו שישי כותב, קוד טוב (ורע) אפשר לכתוב בכל שפה. המשמעות של קוד OO טוב הוא שהוא מאוד קריא וברור - אפשר לדעת בקלות מה האובייקט שעליו הפעולה נעשית, מה הקונוטציה, לרוב גם אפשר להבין מי יקרא לכל מתודה ולמה - אם השם של האובייקט והמתודה ברורים. אני אומר את זה דווקא כמי שגדל על קוד פונקציונאלי - וזוכר אפילו שזה היה אחד הטיעונים בעד OO, ולא נגד.
בהנחה שהקוד יפה וכתוב נכון (ואני מסכים שפוטנציאל ההתברברות בOO גדול יותר) קוד OO יהיה ברור וקריא יותר. תכנות פונקציונאלי חוזר לאחרונה בגלל היעילות שלו ובגלל היכולת המקבילית החזקה של קוד כזה (או, שוב, בגלל היעילות)
אורי - מצטער, פיספסתי את המנוי למטה.. אחח הבלוגר הזה, יופי של פלטפורמה, אבל כל כך לא ברור. אני רשום.
השבמחק