![]() | ![]() |
|


לעשות יותר בפחות שורות קוד | צלם: Fd
מאת אסתר שינדלר - CIO
כתבה אותה פרסמה לפני מספר שבועות לין גריינר באתר הטכנולוגיה CIO זכתה לתשומת לב רבה. המאמר עסק במצבו של עולם שפות הסקריפט, ולא מעט אנשים הביעו מורת רוח מחסרונן של שפות רבות, זאת לאור העובדה שהוזכרו בו אך ורק השפות PHP, Perl, רובי, Tcl, ג'אווה-סקריפט, ו-Python. גריינר בחרה בשפות הללו כיוון שהמאמר שלה היה למעשה המשך לכתבה שפורסמה שלוש שנים לפני כן. בנוסף, מרבית אנשי ה-IT מכירים לפחות אחת מהשפות הידועות הללו, אפילו אם להם עצמם לא יצא לכתוב בהן אפילו שורת קוד אחת.
עם זאת, חמש השפות הדינמיות האלו, בהן כבר עסקנו לעומק בעבר, אינן היחידות הנמצאות בשימוש אנשי הפיתוח. במאמר הבא, אשתף אתכם בכמה שפות סקריפט חדשות ומבטיחות שצריכות להיות על הכוונת של החברה שלכם, כולל המלצות חמות מפי מפתחים שכבר עושים בהן שימוש.
• 25 חידושים מבטיחים מעולם הקוד הפתוח
• ניקיון פסח: מחזירים את המחשב הישן לתחייה
• הקוד הפתוח מסתער על עולם התקשורת
Scala
סקאלה היא שפה אטרקטיבית במיוחד למפתחי ג'אווה. אם לשפוט על פי הכתוב באתר האינטרנט שלה, "סקאלה היא גם שפה מונחית-עצמים (כלומר כוללת מאפיינים כגון מחלקות, ירושה, וכדומה) וגם שפה פונקציונאלית (למשל, כוללת פונקציות סגור - closures). היא ממזגת כמה וכמה מאפיינים של שפות מודרניות תוך שהיא שומרת על רמה גבוהה של תאימות עם ג'אווה".
דין וואמפלר, יועץ בכיר בחברת Object Mentor, שותף כעת לכתיבת ספר בנושא סקאלה עבור הוצאת הספרים א'וריילי. "מבחינת שפה ורסטילית שיכולה להתאים לכל מטרה, סקאלה היא השפה הטובה ביותר בה נתקלתי", הוא אומר. "סקאלה פחות מסורבלת מג'אווה, ויש בה פחות מגבלות בתמיכה בתכנות מונחה עצמים. בנוסף, סקאלה תומכת בתכנות פונקציונאלי - גישה שהייתה קיימת שנים ארוכות בפקולטות למדעי המחשב, אבל רק לאחרונה החלה להוכיח את עצמה כשימושית לכתיבה של יישומים מקביליים טובים. עבודה מקבילית (multithreading) היא מאפיין חשוב עבור התאמה של תוכנות לאתרי אינטרנט וארגונים גדולים".
עבור דיוויד ריצ'י מק'יבר, מפתח בחברת Trampoline Systems, היתרון הגדול של סקאלה הוא העובדה שהיא מאפשרת לו להימנע מעבודה בג'אווה. "אני יכול להגיע לרמה של ג'אווה בכל מה שקשור לתמיכת ספריות, ביצועים, וקלות פריסה", הוא אומר. בנוסף, כלי ג'אווה רבים פועלים גם עם סקאלה. לדברי מק'יבר, החברה בה הוא עובד מאמצת את סקאלה עבור כמה מיישומי הוויזואליזציה שלה, תוך שהיא מצמצמת את השימוש בג'אווה ורובי. עם זאת, מק'יבר לא ממליץ על סקאלה לכל דבר. "אנשים ינסו לדחוף את סקאלה בשל היתרונות שלה בתחום העבודה המקבילית. ההמלצה שלי היא לא להיכנע לפיתוי. אין לה שום יתרונות משמעותיים בתחום זה, לפחות בהשוואה לג'אווה".
Groovy
שפה נוספת שצוברת פופולריות בקרב קהיליית משתמשי הג'אווה היא גרובי לטענת אתר האינטרנט שלה, גרובי היא שפה מהירה ודינמית המותאמת למכונה הווירטואלית של ג'אווה (JVM). היא מתבססת על תחומי החוזק של ג'אווה, אבל כוללת מאפיינים רבי עוצמה נוספים בהשראת שפות כגון פיית'ון, רובי ו-Smalltalk.
מהם היתרונות הגדולים של גרובי? התשובה הטובה ביותר ניתנה על ידי אחד המגיבים לכתבה של לין גריינר המוזכרת לעיל: "הופתעתי לגלות שגרובי לא מופיעה כלל בכתבה. אם יש שפה דינמית המסוגלת למשוך משתמשים ארגוניים, הרי זו גרובי. ניתן לבצע לה הידור (קומפילציה) לשפת המכונה של ג'אווה ולמנף ישירות את הבסיס העצום של ג'אווה, כל זאת בלי להסתבך עם התחביר המסורבל שלה. לא אהיה מופתע לראות את גרובי עוקפת בתוך כמה שנים שפות ידועות כמו פיית'ון או רובי".
כריס ברואדפוט, תוכניתן ג'אווה, מסכים. "גרובי מאפשרת למפתחי ג'אווה לכתוב קוד בצורה אפקטיבית ומהירה, תוך כדי שמירה על תאימות לקוד ג'אווה ישן", הוא מסביר.
Clojure
בהחלט ייתכן שהחברה בה אתם עובדים רוכשת את החומרה החדשה ביותר, אבל האם התוכנות שלכם מסוגלות בכלל לנצל את יכולות המקביליות של חומרה זו? אם לא, כדאי לכם להעיף מבט בשפת התכנות הדינמית Clojure. על פי המוסבר באתר האינטרנט שלה, "Clojure היא שפת תכנות לשימוש כללי, המשלבת את הנוחות והפיתוח האינטראקטיבי של שפות סקריפט עם תשתית יעילה ויציבה לתכנות מרובה תהליכים מקביליים ( multithreaded programming, בלעז). Clojure היא שפה המצריכה הידור (המתבצע ישירות לשפת המכונה של ג'אווה), אולם נשארת דינמית לחלוטין. כל מאפיין שניתמך על ידי Clojure נתמך בזמן ריצה. היא מספקת גישה נוחה לסביבת העבודה של ג'אווה תוך שהיא מוסיפה יכולות רבות נוספות".
לדברי כריס האוסר, איש פיתוח בחברת Four D Development, השפה מאפשרת למפתחים לעשות יותר בפחות שורות קוד - יתרון ברור בכל מה שקשור לזמני פיתוח ותחזוקה. היא טובה במיוחד לניצול היכולות של חומרה מרובת ליבות ללא תקורת הפיתוח הקיימת בג'אווה".
"הנושא הדחוף ביותר בפיתוח תוכנה כיום הוא כיצד לנצל טוב יותר מעבדים מרובי ליבות בכדי לשפר את הביצועים ולחסוך באנרגיה", מסביר ג'יי. מק'ונל, המייסד של חברת ?bermensch Consulting. "שפת Clojure מספקת גישה טובה יותר למקביליות (בכל מה שקשור לקלות ובטיחות) בהשוואה לשפות תכנות אחרות. עקרונות אותם ירשה משפת Lisp נותנים בידיה את הכוח לשפר באופן משמעותי את הפרודוקטיביות של תוכניתנים וכן לוודא את פעולתן הנכונה של תוכנות. העובדה שהיא רצה על גבי ה-JVM ויכולה להתממשק בקלות עם מיליוני שורות הקוד הקיימות בג'אווה היא רק הדובדבן שבקצפת".
Lua
פורמאלית, Lua היא "שפת סקריפט חזקה, מהירה, קלת-משקל וניתנת לשיבוץ (beddable). שפת Lua משלבת תחביר פשוט עם מבני נתונים רבי עוצמה המבוססים על מערכים אסוציאטיביים וסמנטיקה בת-הרחבה. Lua היא שפה בה סוגי המשתנים נקבעים באופן דינמי, והיא פועלת על ידי פענוח קוד שפת מכונה מיוחד. המכונה הווירטואלית במסגרתה רצה השפה תומכת בניהול זיכרון אוטומטי (כולל איסוף ומחזור של זיכרון בו כבר לא נעשה שימוש), מה שהופך אותה לאידיאלית עבור משימות קונפיגורציה ופיתוח מהיר".
ובמילים פחות פורמאליות, "מדובר באופן כללי על שפה קטנה וטובה", אומר אוואן דה-מונד, מהנדס תוכנה בחברת הפיתוח Midwest. "אני נהנה לתכנת בה, ואני מצליח לבצע דברים במהירות רבה". דה-מונד עושה שימוש ב-Lua כבר תקופה ארוכה לכתיבת סקריפטים וכלי תוכנה קטנים. לאחרונה הוא גם ניסה לכתוב באמצעותה יישומים גדולים יותר, ולדבריו "הדברים מתקדמים עד עכשיו בצורה טובה".
המפתח ראלף האמפל מתאר את Lua כ"אחד הסודות הקטנים הטובים ביותר בעולם שפות התכנות - וראיתי לא מעט שפות במהלך 30 השנה האחרונות". לדבריו, למרות שהיא חסרה מנגנון רשמי של הפצת ספריות סטנדרטיות, ישנן המון ספריות "סטנדרטיות דה-פקטו" עבור גישה למערכות קבצים, ניהול תקשורת, גישה למסדי נתונים, וכן הלאה. "עבורי, החלק הטוב ביותר ב-Lua הוא הליבה היציבה של השפה והעובדה ששדרוגים ותיקונים נשקלים בקפידה", הוא מוסיף.
מת'יו ווילד, מנהל תחום ייעוץ תוכנה בחברת Heavy Horse, רואה את היתרון הגדול של Lua במונחים של פיתוח מהיר בהשוואה לשפות מסורתיות. "Lau לא מנסה לעשות יותר מדי", אומר ווילד. "לחילופין, היא נותנת בידי המתכנת את אבני הבניין הדרושות לבנות כמעט כל דבר, ובכל דרך שהיא. יתרונות המפתח הייחודיים של Lua נעוצים בעובדה שהיא קטנה באופן מדהים, מהירה, וברמה הטכנית היא פשוט יצירת אומנות. לא כל פרויקט מצליח להשיג כל כך הרבה מבלי להתנפח לממדים מפחידים".
"אני כל כך מאוהב ב-Lua", מוסיף ווילד, "ששילבתי אותה כמעט בכל אחד מהפרויקטים האחרונים שלי, ועדיין היא מתאימה באופן מושלם בכל פעם". ווילד מתחיל לעשות שימוש ב-Lua כשפת פיתוח העומדת בפני עצמה, ולא רק כשפה המשובצת ביישומים הכתובים בשפות אחרות. "היא עושה את העבודה בצורה מושלמת. תודות ל-Lua אני עומד כעת בפני שבועות של עבודה, ולא חודשים".
F#
קהיליית הפיתוח של .Net אינה חסרה אף היא מגוון רחב של שפות סקריפט משופרות. אחת הבולטות שבהן היא F# , שהחלה כשפת תכנות שמטרתה הייתה "לספק את השילוב המבוקש בין טיפוסי משתנים מוגדרים היטב, תמציתיות, ביצועים טובים, תורשה, ושפות סקריפט, זאת תוך ניצול היתרונות של סביבת ריצה איכותית, מודרנית, ובעלת תמיכה מלאה". כעת הופכת מיקרוסופט את F# לשפה רשמית בפלטפורמת ה-.Net
תומס פטריצ'ק, מומחה ה-C# ומחבר הספר Real-world Functional Programming in .Net, עובד כעת על ספר בנושא F#. לדבריו, F# מעודדת סגנון תכנות פונקציונאלי קשיח, המתאים לכתיבה של מערכות מקביליות ומבוזרות. יתרה מכך, היא תומכת בסגנון תכנות הצהרתי (declarative programming - סגנון תכנות בו מפרטים מה היישום צריך לעשות, ולא איך). "האופן בו אני אוהב לחשוב על תכנות הצהרתי הוא שהוא מאפשר למנהל הפיתוח לחלק את העבודה בין תוכניתנים בכירים שמפתחים ספריות חכמות לפתרון בעיות, ובין תוכניתנים זוטרים, שעושים שימוש בספריות הללו לפתור בעיות יומיומיות", הוא אומר.
שפות תכנות רבות מאפשרות לכתוב משהו קטן שגדל לאחר מכן לתוכנה גדולה יותר, אולם הן מתחילות לעשות בעיות כאשר התוכנה צריכה להפוך לספרייה אמיתית בעלת מבנה לוגי חזק. "F# נותנת בידי המפתחים דרך מעולה לעשות את זה", אומר פטריצ'ק. "אתם יכולים להתחיל בקטן (בדיוק כמו עם שפות בעלות טיפוסי משתנים דינמיים כדוגמת פיית'ון או רובי), אבל לסיים עם תוכנה יציבה מאוד (כמו ב-C# או ג'אווה). יתרון המפתח של F# הוא שהמעבר הנו חלק, ללא צורך בביצוע פעולות מסובכות. למעשה, אין צורך לשכתב שום קוד אותו כתבתם בהתחלה".
מפתח ה-ASP.Net הבולגרי מיכאיל קוצ'אנוב רואה יתרונות נוספים ב-F#. "אני מאמין שלימוד F# הופך את המפתח גם לתוכניתן C# טוב יותר", הוא אומר, ומסביר ש-F# הקלה עליו את ההבנה של LINQ. הוא מתעניין ב-F# גם בגלל היכולות שלה בתחום המקביליות. "אם יש לכם דברים אותם בעתיד אולי תרצו להריץ באופן מקבילי, תמיד טוב להיות מוכנים", הוא אומר.
Boo
באתר האינטרנט שלה נטען כי Boo כי היא "שפת תכנות מונחית עצמים חדשה לסביבת .Net בעלת טיפוסי משתנים סטטיים, תחביר המושפע משפת התכנות פיית'ון, ופוקוס מיוחד על יכולות הרחבה, הן של השפה עצמה, והן של הקומפיילר".
ג'וש קופמן, מפתח ראשי והמייסד של Computerist Solutions, אוהב לעבוד עם Boo, בעיקר במקרים בהם הוא צריך לממש DSL (ר"ת של domain-specific language - שפה המיועדת לפתרון סוג מסוים של בעיות או משימות, זאת בניגוד לשפות כלליות כגון ג'אווה או C). "מדובר על שפה שיש לה את כל הכוח של פלטפורמת ה-.Net, אבל באותו זמן היא יותר גמישה, וניתן לעשות בה שימוש כתוכנת סקריפט או כתוכנה שעברה הידור". ל-Boo יש המון יתרונות טכניים, הוא מוסיף, כמו למשל היכולת לשלוט בפלט של הקומפיילר במהלך תהליך ההידור.
לדברי מת'יו פואול, תוכניתן בחברת Useful Networks, "שפת תכנות היא כלי לבניית תוכנות. Boo פועלת היטב עם כלים קיימים (סביבת ה-.Net), אולם הולכת צעד נוסף קדימה בכך שהיא נותנת בידי מפתחים כוח ללא תקדים בבניית כלים משלהם. מרבית השפות עובדות סביב סט קבוע של רעיונות. Boo עובדת על ידי שהיא נותנת למפתחים את היכולת לייצר ולעצב תפיסות תכנותיות משלהם. יתרה מכך, התחביר של Boo מאוד ידידותי לכותבי התוכנה, ומגיע עם שורה ארוכה של מפרשים (interpreters) המאפשרים האצה של הפיתוח".
שפות נוספות
הכוונה שלי בכתבה זו איננה לרמוז שהשפות לעיל הן היחידות אליהן כדאי לשים לב. שפות תכנות מעניינות נוספות כוללות למשל את Factor, אותה מתאר מק'יבר כ"גרסה משופרת של Forth, בעלת תמיכה טובה יותר בתכנות פונקציונאלי".
מהנדס התוכנה אנתוני קוק מעדיף לעשות שימוש ב-Rebol, שפה ששואבת את יתרונותיה מסדרה של מעין תת-שפות מסוג DSL (ראו לעיל) ומיקרו-פורמטים. קוק אוהב את ה"דיאלקטים" השונים של Rebol, המאפשרים למפתח לייצר שפות המוכוונות לפתרון בעיות ספציפיות. "בנוסף, היא גם קטנה, עצמאית (כלומר אינה זקוקה לרכיבים חיצוניים), וחוצה פלטפורמות, כך שקוד שנכתב עבור חלונות יכול לרוץ כפי שהוא על לינוקס או Mac OS X. יש לה ספריית ממשק גרפי מובנית, יכולות מובנות לשליחה וקבלה של הודעות דוא"ל וגישה למשאבי אינטרנט, כל זאת באמצעות כמה שורות קוד פשוטות וללא תלות בגורמים חיצוניים. גם הגודל הסופי של קובץ ההרצה אינו גדול", הוא מסביר. "על מנת לעשות את אותו הדבר בג'אווה יש צורך באלפי שורות קוד, ואילו בשפת C צריך יהיה להוסיף לכך גם המון קריאות למודולים חיצוניים". היא אפילו מהירה, מוסיף קוק. "אני רגיל לעבודה יומיומית עם רובי, שהיא אחת השפות האיטיות ביותר שקיימות כיום. Rebol היא שפה מבוססת Forth אך בעלת טיפוסי משתנים דינמיים שרצה מהר כמעט כמו קוד C".
ארכיטקט התוכנה דיוויד בראבאנט מצידו מנסה לשכנע את המנהלים שלו שיאפשרו לו לעשות שימוש ב-Lisp .Lisp היא שפה אלגנטית, קומפקטית, רבת עוצמה, ורפלקסיבית, המאפשרת לי לפתור בעיות במהירות ובעזרת מספר מועט של פקודות מאקרו. אבל בסוף", הוא נאנח, "מכריחים אותי לעבוד ב-PHP, כמו כולם".
תצלום שער: Fd, אתר Flickr
עשרת הגדולים
| שימושים: דף הבית | RSS | אודות האתר | פרסום באתר | תקנון האתר | ||
| TheMarker: העמוד הראשון | הייטק | שוק ההון | וול סטריט | בעולם | קריירה | פרסום ומדיה | צרכנות | נדל"ן | משפט | רכב | המדריך למשקיע | ||
| Cafe: ראשי | העמוד שלי | אנשים | קהילות | בלוגים | תמונות | וידאו | קהילת תמיכה | ||
| עכבר העיר: עכבר העיר | סרטים | קולנוע | מסעדות | מתכונים | הופעות | פעילויות ילדים | הצגות | לילה | מסיבות | עכבר העיר: סרטים, לילה, מסעדות | ||
| לוח העיר: דרושים | דרושים הייטק | נדל"ן | פרוייקטים חדשים | רכב | בעלי מקצוע | קח תן | ||
האתר פותח ע"י![]() |