יוליה מול פייתון: מה הכי מתאים למדעי הנתונים?

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

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

מהי שפת יוליה?

ג'וליה, שנוצרה בשנת 2009 על ידי צוות של ארבעה אנשים ונחשפה לציבור בשנת 2012, נועדה לטפל בחסרונות בפיתון ובשפות ויישומים אחרים המשמשים למחשוב מדעי ולעיבוד נתונים. "אנחנו חמדנים," כתבו. הם רצו עוד: 

אנו רוצים שפה קוד פתוח עם רישיון ליברלי. אנחנו רוצים את המהירות של C עם הדינמיות של רובי. אנו רוצים שפה הומיקונית, עם פקודות מאקרו אמיתיות כמו Lisp, אך עם סימון מתמטי ברור ומוכר כמו Matlab. אנו רוצים משהו שמיש לתכנות כללי כמו פייתון, קל לסטטיסטיקה כמו R, טבעי לעיבוד מחרוזות כמו פרל, חזק לאלגברה לינארית כמו מטלב, טוב להדביק תוכניות כמו הקליפה. משהו שהוא לכלוך פשוט ללמוד, ובכל זאת שומר על האקרים הכי רציניים. אנחנו רוצים שזה אינטראקטיבי ואנחנו רוצים שזה יורכב.

(הזכרנו שזה צריך להיות מהיר כמו C?)

הנה כמה מהדרכים בהן ג'וליה מיישמת שאיפות אלה:

  • ג'וליה מלוכדת, לא מתפרשת.  לקבלת ביצועים מהירים יותר של זמן ריצה, ג'וליה נערכה בדיוק בזמן (JIT) באמצעות מסגרת המהדר LLVM. במיטבה, ג'וליה יכולה להתקרב או להתאים את המהירות של C.
  • ג'וליה אינטראקטיבית. ג'וליה כוללת REPL (לולאת read-eval-print), או שורת פקודה אינטראקטיבית, בדומה למה שמציע פייתון. ניתן לנקב סקריפטים ופקודות חד פעמיים מהירים.
  • לג'וליה יש תחביר פשוט. התחביר של ג'וליה דומה לזה של פיתון - קצר, אך גם אקספרסיבי ועוצמתי.
  • ג'וליה משלבת את היתרונות של הקלדה דינמית והקלדה סטטית. אתה יכול לציין סוגים עבור משתנים, כמו "מספר שלם של 32 סיביות לא חתום". אך ניתן גם ליצור היררכיות של סוגים כדי לאפשר מקרים כלליים לטיפול במשתנים מסוגים ספציפיים - למשל, לכתוב פונקציה המקבלת מספרים שלמים מבלי לציין את אורך או החתימה של המספר השלם. אתה יכול אפילו לעשות בלי להקליד לחלוטין אם אין צורך בהקשר מסוים.
  • ג'וליה יכולה להתקשר לספריות Python, C ו- Fortran. ג'וליה יכולה להתממשק ישירות עם ספריות חיצוניות הכתובות ב- C וב- Fortran. אפשר גם להתממשק עם קוד Python באמצעות ספריית PyCall, ואפילו לשתף נתונים בין Python ו- Julia.
  • ג'וליה תומכת במטפורוגרפיה. תוכניות ג'וליה יכולות ליצור תוכניות ג'וליה אחרות, ואף לשנות את הקוד שלהן, באופן שמזכיר שפות כמו Lisp.
  • לג'וליה יש ניפוי באגים מלא.  ג'וליה 1.1 הציגה חבילת ניפוי באגים, שמבצעת קוד ב- REPL מקומי ומאפשרת לעבור על התוצאות, לבדוק משתנים ולהוסיף נקודות שבירה בקוד. אתה יכול אפילו לבצע משימות משובחות כמו לעבור דרך פונקציה שנוצרת על ידי קוד.

סרטון קשור: כיצד פיתון מקל על התכנות

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

יוליה מול פייתון: יתרונות שפת יוליה

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

  • ג'וליה מהירה. הצהרות ה- JIT של ג'וליה והצהרות הסוג פירושן שהוא יכול לנצח באופן שגרתי "טהור", פיתון לא ממוטב בסדרי גודל. Python ניתן עשה מהר בדרך של ספריות חיצוניות, מהדרים JIT צד שלישי (PyPy), ו אופטימיזציות עם כלים כמו Cython, אבל ג'וליה נועד להיות בחוץ תקין מהר לשער.
  • לג'וליה יש תחביר ידידותי למתמטיקה. קהל יעד מרכזי עבור ג'וליה הוא משתמשים בשפות מחשוב מדעיות וסביבות כמו Matlab, R, Mathematica ו- Octave. התחביר של ג'וליה לפעולות מתמטיקה נראה יותר כמו האופן שבו נוסחאות המתמטיקה נכתבות מחוץ לעולם המחשוב, מה שמקל על מי שאינו מתכנת.
  • לג'וליה יש ניהול זיכרון אוטומטי. כמו פייתון, ג'וליה לא מכבידה על המשתמש בפרטי הקצאת ושחרור הזיכרון והיא מספקת מידה מסוימת של שליטה ידנית באיסוף האשפה. הרעיון הוא שאם תעבור לג'וליה, לא תאבד אחד מהנוחיות המשותפת של פייתון.
  • ג'וליה מציעה מקבילות מעולה. מתמטיקה ומחשוב מדעי משגשגים כאשר אתה יכול לעשות שימוש במלוא המשאבים הזמינים במכונה נתונה, במיוחד מספר ליבות. גם פייתון וגם ג'וליה יכולים להפעיל פעולות במקביל. עם זאת, השיטות של פייתון להקלת פעולות דורשות לעיתים סדרת נתונים וניתוח ערכים בין נתונים לשרשורים או לצמתים, בעוד שההקבלה של ג'וליה מעודנת יותר. יתר על כן, תחביר ההקבלה של ג'וליה פחות כבד מזה של פייתון, מה שמוריד את הסף לשימוש בו.
  • ג'וליה מפתחת ספריות לימוד מכונה מקומיות משלה. Flux היא ספריית למידת מכונה עבור ג'וליה שיש לה דפוסי מודל רבים קיימים למקרי שימוש נפוץ. מכיוון שהוא נכתב כולו בג'וליה, ניתן לשנות אותו לפי הצורך של המשתמש, והוא משתמש באוסף המקורי של ג'וליה בדיוק בזמן כדי לייעל פרויקטים מבפנים. 

ג'וליה מול פייתון: יתרונות פיתון

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

  • Python משתמש באינדקס מערכים מבוסס אפס. ברוב השפות, כולל פייתון ו- C, ניתן לגשת לאלמנט הראשון במערך עם אפס - למשל, string[0]בפייתון עבור התו הראשון במחרוזת. ג'וליה משתמשת ב- 1 עבור האלמנט הראשון במערך. זו לא החלטה שרירותית; יישומים רבים אחרים למתמטיקה ומדעים, כמו Mathematica, משתמשים באינדקס 1, ויוליה נועדה לפנות לקהל זה. ניתן לתמוך באינדקס אפס ביוליה באמצעות תכונה ניסיונית, אך אינדקס 1 כברירת מחדל עשוי לעמוד בפני אימוץ על ידי קהל לשימוש כללי יותר עם הרגלי תכנות מושרשים.
  • לפייתון יש פחות תקורה להפעלה.  תוכניות פייתון עשויות להיות איטיות יותר מתוכניות ג'וליה, אך זמן הריצה של פייתון עצמו קל יותר, ובדרך כלל לוקח פחות זמן לתוכניות פיתון להתחיל ולהביא תוצאות ראשונות. כמו כן, בעוד שאוסף ה- JIT מאיץ את זמן הביצוע של תוכניות ג'וליה, זה כרוך במחיר של הפעלה איטית יותר. נעשתה עבודה רבה כדי לגרום לג'וליה להתחיל מהר יותר, אך לפייתון עדיין יש את היתרון כאן.
  • פייתון בוגר. שפת ג'וליה צעירה. ג'וליה הייתה בפיתוח רק מאז 2009, ועברה כמות נכבדה של טלטלות תכונה בדרך. לעומת זאת, פייתון קיים כמעט 30 שנה.
  • לפייתון יש הרבה יותר חבילות צד שלישי. הרוחב והשימושיות של תרבות פייתון של חבילות צד שלישי נותרה אחת האטרקציות הגדולות ביותר של השפה. שוב, החדשנות היחסית של ג'וליה פירושה שתרבות התוכנה סביבו עדיין קטנה. חלק מזה מתקזז על ידי היכולת להשתמש בספריות C ו- Python קיימות, אך ג'וליה זקוקה לספריות משלה כדי לשגשג. ספריות כמו Flux ו- Knet הופכות את ג'וליה לשימושית ללימוד מכונה ולמידה עמוקה, אך הרוב המכריע של העבודה עדיין מתבצע עם TensorFlow או PyTorch.
  • לפייתון יש מיליוני משתמשים. שפה אינה דבר בלי קהילה גדולה, מסורה ופעילה סביבו. הקהילה סביב ג'וליה נלהבת וצומחת, אך היא עדיין רק חלק קטן מגודל קהילת פיתון. הקהילה הענקית של פיתון היא יתרון עצום. 
  • פייתון נהיה מהיר יותר. מלבד השגת שיפורים במתורגמן לפייתון (כולל שיפורים בעיבוד רב ליבות ומקבילות), הפיתון נעשה קל יותר להאיץ. פרויקט mypyc מתרגם פיתון עם הערה מסוג C ל- C, הרבה פחות מגושם מ- Cython. זה בדרך כלל מניב שיפורי ביצועים פי ארבעה, ולעתים קרובות הרבה יותר עבור פעולות מתמטיות טהורות.