ג'וליה (שפת תכנות)
שפת תכנות / ויקיפדיה האנציקלופדיה encyclopedia
ג'וליה (באנגלית: Julia) היא שפת תכנות עילית מהירה ודינמית, לתכנות כללי, טכני ומדעי. השפה מצטיינת במיוחד בתכנות המדעי ובביצוע מהיר של אנליזות נומריות, אולם מתאימה גם לכתיבה של תוכנות לקוח ושרת באפליקציות רשת, לתכנות מערכות Low level[11], לשימוש כשפת מִפרט לפני מימוש[12] ולשאר שימושים כלליים.[13][14][15][16]
פרדיגמות | Multiple dispatch (פרדיגמה עיקרית), תכנות פרוצדורלי, תכנות פונקציונלי, Meta, Multistaged[1] |
---|---|
תאריך השקה | 2012[2][3] |
מתכנן | ג'ף בזאנסון, אלן אדלמן, סטפן קרפינסקי, ויראל ב. שאה |
מפתח | ג'ף בזאנסון, סטפן קרפינסקי, ויראל ב. שאה ואחרים[4][5] |
גרסה אחרונה | 1.8.3 (14.11.2022) |
טיפוסיות | -- |
הושפעה על ידי | MATLAB |
רישיון | MIT (השפה עצמה),[4] GPL v2;[8][9] הגדרה ב-makefile יכולה להסיר את ספריות ה-GPL.[10] |
סיומת | jl. |
JuliaLang.org | |
לג'וליה תחביר דומה לשפות אחרות מאותו תחום (MATLAB, R, פייתון, SciLab וכולי), והיא מספקת מהדר JIT מתקדם (ולמעשה Just Ahead Of Time, כי הקוד כולו מהודר מראש),[17][18] מערכת טיפוסים דינמית עם פולימורפיזם פרמטרי, עיבוד מקבילי מבוזר ויכולת לתקשר ישירות עם פונקציות בפורטרן, C ופייתון. בנוסף לאלו יש לג'וליה ספריה רחבת היקף של פונקציות מתמטיות, ויכולת לעבוד במבנה של מחברת דרך דפדפן, באמצעות IJulia, שהוא שיתוף פעולה עם קהילת IPython. קהילת המפתחים של ג'וליה תורמת דרך חבילות חיצוניות, ואלה משולבות בסביבת העבודה באמצעות מנהל חבילות מובנה.
לג'וליה יש מנגנון של איסוף זבל בטכניקה של חישוב ביטויים מוקדם (Eager evaluation). הספריות שלה ברובן כתובות גם הן בג'וליה, ביניהן ספריות לאלגברה ליניארית, ליצירת מספרים אקראיים, ל-התמרת פורייה מהירה (FFT) ולטיפול בביטויים רגולריים. כמה מהספריות, כגון זו של FFT, נכללו בעבר כחלק מהשפה, אך הופרדו מאוחר יותר לחבילות עצמאיות,[19] ובנוסף לאלו קיימות גם ספריות ב-C ובפורטרן. תוכנות בג'וליה מאורגנות בדרך כלל סביב הגדרות הפונקציות, ובמסגרת קונספט ה-Multiple dispatch, רוב המשקל הוא על הצירופים השונים של סוגי משתנים.[20]
ישנם מספר כלי פיתוח שתומכים בתכנות בג'וליה, כמו Visual Studio Code שפותחו לו הרחבות שמוסיפות תמיכה בג'וליה, כמו גם יכולות ניפוי שגיאות ו-Linting. בנוסף ישנם כלי שילוב כגון Profiler, מנפה שגיאות, וחבילת Rebugger.jl שמאפשרת ניפוי שגיאות בהפעלות חוזרות.