ג'וליה (שפת תכנות)

ג'וליה (באנגלית: Julia) היא שפת תכנות עילית מהירה ודינמית, לתכנות כללי, טכני ומדעי. השפה מצטיינת במיוחד בתכנות המדעי ובביצוע מהיר של אנליזות נומריות, אולם מתאימה גם לכתיבה של תוכנות לקוח ושרת באפליקציות רשת, לתכנות מערכות Low level, לשימוש כשפת מִפרט לפני מימוש ולשאר שימושים כלליים. לג'וליה תחביר דומה לשפות אחרות מאותו תחום (MATLAB,‏ R, פייתון, SciLab וכולי), והיא מספקת מהדר JIT מתקדם (ולמעשה Just Ahead Of Time, כי הקוד כולו מהודר מראש), מערכת טיפוסים דינמית עם פולימורפיזם פרמטרי, עיבוד מקבילי מבוזר ויכולת לתקשר ישירות עם פונקציות בפורטרן, C ופייתון. בנוסף לאלו יש לג'וליה ספריה רחבת היקף של פונקציות מתמטיות, ויכולת לעבוד במבנה של מחברת דרך דפדפן, באמצעות IJulia, שהוא שיתוף פעולה עם קהילת IPython. קהילת המפתחים של ג'וליה תורמת דרך חבילות חיצוניות, ואלה משולבות בסביבת העבודה באמצעות מנהל חבילות מובנה. תוכנות בשפת ג'וליה יכולות לרוץ בצורה שדומה לשפות סקריפט מתפרשות, כפי שניתן לראות ב־Julia REPL, אך ניתן גם לקמפל אותן לחבילות מוכנות להתקנה או הרצה, ואף לא לכלול בהן את קוד המקור כאשר מעוניינים למנוע הפצה שלו. ג'וליה עצמה אף היא אופציונלית בחבילות שכאלו, אך כאשר היא אינה נכללת היכולות מוגבלות יותר. לג'וליה יש מנגנון של איסוף זבל בטכניקה של חישוב ביטויים מוקדם (Eager evaluation). הספריות שלה ברובן כתובות גם הן בג'וליה, ביניהן ספריות לאלגברה ליניארית, ליצירת מספרים אקראיים, ל-התמרת פורייה מהירה (FFT) ולטיפול בביטויים רגולריים. כמה מהספריות, כגון זו של FFT, נכללו בעבר כחלק מהשפה, אך הופרדו מאוחר יותר לחבילות עצמאיות, ובנוסף לאלו קיימות גם ספריות ב-C ובפורטרן. תוכנות בג'וליה מאורגנות בדרך כלל סביב הגדרות הפונקציות, ובמסגרת קונספט ה-Multiple dispatch, רוב המשקל הוא על הצירופים השונים של סוגי משתנים. ישנם מספר כלי פיתוח שתומכים בתכנות בג'וליה, כמו Visual Studio Code שפותחו לו הרחבות שמוסיפות תמיכה בג'וליה, כמו גם יכולות ניפוי שגיאות ו-Linting. בנוסף ישנם כלי שילוב כגון Profiler, מנפה שגיאות, וחבילת Rebugger.jl שמאפשרת ניפוי שגיאות בהפעלות חוזרות. העבודה על הפרויקט החלה בשנת 2009 על ידי ג'ף בזאנסון, סטפן קרפינסקי, ויראל ב. שאה ואלן אדלמן, במטרה ליצור שפה חופשית, עילית ומהירה. ב-14 בפברואר 2012 יצרו אתר בו הוסבר מדוע יצרו את השפה, ובאותה שנה יצאה לאור גרסת קוד פתוח של השפה. בריאיון ב-2012 הסביר קרפינסקי את הבחירה בשם "ג'וליה": "למעשה, אין ממש סיבה. זה פשוט נראה כמו שם טוב." הוא סיפר כי בחר את השם בהמלצת חבר. הודעה מטעם יוצרי השפה על הסיבות ליצירתה, צוין כי הם משתמשים כבדים של Matlab עם ניסיון במגוון שפות תכנות, ואינם מרוצים מהכלים הקיימים לתכנות מדעי. הכלים הקיימים, לדבריהם, טובים כל אחד בתחומו, אך כושלים בתחומים אחרים. הם רצו תוכנה חופשית, שתהיה מהירה כמו C ודינמית כמו Ruby. שתהיה לה ההומואיקוניות (התייחסות זהה לקוד ומידע) של Lisp, עם הסימנים המתמטיים שיש ב-Matlab. שתהיה שפת דבק כמו Shell, קלה ללימוד, אבל לא משעממת להאקרים מנוסים. ומעבר לכל אלו, שתהיה בעלת יכולת לעבודה אינטראקטיבית, אבל גם תאפשר עבודה בתצורת עריכה והרצה. מאז ההכרזה, משתמשים ממעל 10,000 חברות כבר הורידו את ג'וליה, עם יותר מ-29 מיליון הורדות ביולי 2021 (עליה של 87%–113% בשנה), והיא נמצאת בשימוש ביותר מ-1,500 אוניברסיטאות. הכנס האקדמי JuliaCon למפתחי ומשתמשי ג'וליה נערך מדי שנה מאז 2014, ומשתתפים בו מעל 28,000 צופים. העניין ההולך וגובר של חברות שונות בג'וליה הביא ביולי 2015 להקמתה של חברת Julia Computing בידי ויראל ב. שאה, דיפאק וינצ'הי, אלן אדלמן, ג'ף בזאנסון, סטפן קרפינסקי וקינו פישר. החברה שינתה את שמה ל־JuliaHub בנובמבר 2022. JuliaHub עוסקת במתן שירותים בתשלום בתחומי התמיכה, ההכשרה והייעוץ, בהפצת סביבת JuliaPRO שמותאמת לתכנות מדעי, ובאינטגרציה עם טכנולוגיות ענן. ב-2017 גייסה Julia Computing השקעת גרעין של 4.6 מיליון דולר מקרנות ההשקעות ג'נרל קטליסט ופאונדר קולקטיב, ובאותו חודש קיבלה מענק של 910,000 דולר מקרן אלפרד פ. סלואן לתמיכה בפיתוחי קוד פתוח של ג'וליה, ובהם 160,000 דולר לקידום גיוון באוכלוסיית ג'וליה. בדצמבר 2019 קיבלה מימון של 1.1 מיליון דולר מהממשל האמריקאי כדי "לפתח כלי למידת מכונה מבוסס רכיבים נוירוניים להפחתת צריכת האנרגיה הכוללת של מערכות חימום, אוורור ומיזוג בבניינים." ביולי 2021 הודיעה Julia Computing שגייסה 24 מיליון דולר בסבב A שהובילה חברת Dorilton Ventures, שבבעלותה גם צוות פורמולה 1 וויליאמס רייסינג שאף הוא חבר ל־Julia Computing. לדבריו של המנהל המסחרי של וויליאמס: "ההשקעה בחברות שבונות טכנולוגיית ענן עילית מהווה מיקוד אסטרטגי לדורילטון, והפלטפורמה המגוונת של ג'וליה, עם יכולותיה המהפכניות בסימולציה ומידול רלוונטית מאוד לעסק שלנו. אנו מצפים להטמיע את Julia COmputing בספורט המתקדם בעולם מבחינה טכנולוגית." ביוני 2023 גייסה החברה, תחת שמה החדש "JuliaHub", השקעה אסטרטגית חדשה של 13 מיליון דולר בהובלת AE Industrial Partners HorizonX ("AEI HorizonX"), פלטפורמת הון סיכון שהוקמה בהשתתפות חברת בואינג ומשתמשת בעצמה בג'וליה. מספר גורמים בעלי מוניטין משתמשים בג'וליה, החל מבית ההשקעות בלאקרוק, שמשתמש בה לניתוח סדרות עתיות, ועד חברת הביטוח הבריטית אביבה, שמשתמשת בג'וליה לחישוב סיכונים. ב-2015 השתמש בנק הפדרל ריזרב של ניו יורק בג'וליה כדי לייצר מודלים של הכלכלה האמריקאית, וציינו שם כי השפה גרמה להערכות מבוססות המודל להיות מהירות פי עשרה מהמימוש הקודם ב-MATLAB. בכנס Juliacon של 2017 הכריזו ג'פרי רג'יר, קינו פישר ואחרים שפרויקט סלסטה ליצירת קטלוגים אסטרונומיים השתמש בג'וליה כדי להשיג ביצועי שיא של 1.54 פטהפלופים תוך שימוש ב-1.3 מיליון תהליכונים על 9,300 צמתי Knights Landing של מחשב העל Cray XC40, שהיה אז השישי ברשימת המחשבים המהירים בעולם. בכך הצטרפה ג'וליה לרשימת השפות העיליות בהן נעשו חישובים ברמת הפטהפלופים, שכללה עד כה רק את C,‏ C++‎ ופורטרן. שלושה מהיוצרים של ג'וליה קיבלו ב-2019 את פרס ג. ה. וילקינסון לתוכנה נומרית (שניתן כל ארבע שנים) על "יצירת ג'וליה, סביבה חדשנית ליצירת כלים עתירי ביצועים שמאפשרים ניתוח ופתרון של בעיות במחשוב מדעי." בנוסף, אלן אדלמן, פרופסור למתמטיקה יישומית ב-MIT, נבחר לקבל את פרס סידני פרנבאך של חברת המחשוב של ה-IEEE ב-2019 על "פריצות דרך ייחודיות במחשוב עתיר ביצועים, באלגברה ליניארית ובמחשוב מדעי, ועל תרומות לשפת התכנות ג'וליה." Julia Computing ו-Nvidia הודיעו על זמינות של ג'וליה כמיכל מוכן מראש ברשימת המיכלים של ענן ה-GPU של NVIDIA (שמוכר בשם NGC). כאשר NVIDIA, כחלק מההצעה להשתמש בג'וליה על x86 ועל ARM מציינת "ג'וליה מציעה חבילה של אקוסיסטם מפורט למחשוב עתיר ביצועים, כולל למידת מכונה, מדעי המידע, תחומים מדעיים שונים וויזואליזציה." ג'וליה משמשת מאז 2022 במערכות משובצות לתכנון וביצוע טיסות של כלי טיס בלתי מאוישים בעלי יכולת המראה ונחיתה אנכית של מעבדת המחקר של חיל האוויר של ארצות הברית. גם נאס"א וסוכנות החלל הברזילאית משתמשים בג'וליה לתכנון משימות חלל ולהדמיית לוויינים. ישנו גם פרויקט נוסף העוסק במערכת משובצת לשליטה בכיוון של לוויין בחלל באמצעות ג'וליה.[דרוש מקור] CERN משתמשת בג'וליה כדי לנתח מידע שמגיע ממאיץ LHC (ניסוי LHCb) נכון ל־2022 ג'וליה התקבלה באוניברסיטאות כגון MIT, אוניברסיטת סטנפורד, UC Berkeley ואוניברסיטת קייפ טאון. השפה נמצאת בשימוש גם בחברות כגון אמאזון, IBM, מחקר הבינה המלאכותית של ג'יי פי מורגן ו ASML אחזקות. השפה בשימוש בכל מעבדות האנרגיה הלאומי בארצות הברית. ברית מודל האקלים משתמשת בג'וליה על שרתים מבוססי ARM. for climate change modeling ב-2023 אמאזון יצרה תמיכה בג'וליה לצורכי מחשוב קוואנטי ולמידת מכונה דרך Amazon SageMaker מאז 2014 מקיימת הקהילה של ג'וליה כנס שנתי המכוון למפתחים ומשתמשים. Juliacon הראשון התקיים בשיקגו, ומאז הכנס מתקיים מדי שנה. הכנס התארח במספר מקומות לאורך קיומו, בהם MIT ואוניברסיטת מרילנד בבאלטימור, ומספר המשתתפים בו עלה מעשרות בודדות בתחילתו לעשרות אלפים משתתפים בפועל בתחילת העשור השני של המאה ה-21.. קהילת ג'וליה נוכחת במספר פלטפורמות: טוויטר, לינקדאין, פייסבוק, Slack,‏ Zulip, דיסקורד, Discourse,‏ Stack Overflow, יוטיוב, ועוד. מאז מאי 2017 ועד דצמבר 2023, הועסק מנהל קהילה לשפת ג'וליה. בתחילה היה זה אלכס ארסלנד ששימש בתפקיד עד סוף 2019 ומאז ועד דצמבר 2023 שימש בתפקיד לוגן קילפטריק. לא דווח על מנהל קהילה חדש מאז. שפת ג'וליה הפכה לפרויקט ממומן על ידי המלכ"ר NumFOCUS (שמממן גם פרויקטים כמו NumPy,‏ pandas ו-Ipython) ב-2014, כדי להבטיח את השרידות של הפרויקט לטווח ארוך. באפריל 2024 התמנה לוגן קילפטריק, לשעבר מנהל קהילת ג'וליה, לנשיא NumFocus. ד"ר ג'רמי קפנר ממעבדת לינקולן ב-MIT היה המממן המייסד של פרויקט ג'וליה בימיו הראשונים. בנוסף, תרומות מקרן גורדון ובטי מור, מקרן אלפרד פ. סלואן, מאינטל ומסוכנויות שונות כגון NSF,‏ DARPA, המכונים הלאומיים לבריאות, נאס"א ו-FAA סייעו רבות בהתפתחות הפרויקט. מענקי המחקר של מוזילה, שמייצרת את הדפדפן פיירפוקס, מימנו ב-2019 חבר בצוות הרשמי של ג'וליה לפרויקט "מביאים את ג'וליה לדפדפן". ג'וליה נתמכת גם על ידי תורמים פרטיים בגיטהאב. טים הולי עבד על שיפור המהירות של ג'וליה 1.9 ב"מעבדת הולי" באוניברסיטת וושינגטון בסנט לואיס, במימון יוזמת צ'אן צוקרברג (אנ'). מעבר לעבודתו של הולי, גרסה 1.9 יצאה גם בתמיכה של נאס"א, של הקרן הסביבתית של אאודי ושל יוזמות פילנתרופיות של אריק וונדי שמידט (אנ'), פול אלן ומשפחתו, וצ'ארלס טרימבל (אנ'). אלו המאפיינים העיקריים של השפה: Multiple Dispatch: מאפשר להגדיר את תפקודן של פונקציות על בסיס הרכב הפרמטרים שלהן. מערכת טיפוסים דינמית: יש טיפוסים לתיעוד, לאופטימיזציה ולתפעול פונקציות. ביצועים מהירים, קרובים לאלו של שפות סטטיות כגון C. מנהל חבילות מובנה. מתוכננת לעיבוד מקבילי ומבוזר. Coroutines: סוג של תהליכונים ירוקים עם יכולת ריבוי משימות שיתופית (בה התהליכון הוא שמעביר שליטה לתהליכון אחר). טיפוסים שנוצרו על ידי המשתמש הם מהירים וקומפקטיים כמו טיפוסים מובנים תקניים. תמיכה ביוניקוד, ובין השאר תמיכה ב-UTF-8. יכולת לקרוא לפונקציות של פייתון, R, ג'אווה וסקאלה באמצעות שימוש בחבילות מתווכות. יכולת להשתמש ישירות בפונקציות של שפת C, ללא צורך במעטפת או ב-API מיוחדים. יכולות ניהול תהליכים בדומה ל-Shell. כלים ומאקרואים בדומה ל-Lisp. יכולות מרשימות בניהול תהליכים אחרים משורת הפקודה. ייצור אוטומטי של קוד יעיל ומוכוון לטיפוסי משתנים שונים. המרה וקידום של טיפוסים מספריים בצורה אלגנטית וניתנת להרחבה. רישיון חופשי: MIT לשפה, GPL לחלקים מן הספריות. יכולת לשמש ב-Notebooks. Multiple Dispatch (ידוע ב-Lisp כ"מולטי-מתודות") היא הכללה של Single Dispatch – המנגנון הפולימורפי על בסיס תורשה שמשמש בשפות מונחות אובייקטים. בג'וליה כל הטיפוסים הקונקרטיים הם תת-טיפוסים של טיפוסים מופשטים, ובצורה ישירה או עקיפה הם גם תת-טיפוסים של הטיפוס Any, שנמצא בראש היררכיית הטיפוסים. בניגוד לשפות אחרות, לטיפוסים קונקרטיים בג'וליה לא יכולים להיות תת-טיפוסים, ולצורך זה משתמשים בקומפוזיציה (ראו תחת ירושה (תכנות)). ג'וליה הושפעה מאוד מניבים שונים של Common Lisp, ויש לה הרבה מן המשותף עם שפת Dylan, גם היא שפה דינמית מבוססת Multiple dispatch, ועם Fortress שגם היא שפה לתכנות נומרי. בג'וליה, Dylan ו-Fortress, היכולת להרחיב היא ברירת מחדל, והפונקציות המובנות במערכת כולן גנריות וניתנות להרחבה. ב-Dylan ה-Multiple Dispatch הוא יסודי כמו בג'וליה: כל הפונקציות שמגדיר המשתמש ואפילו פונקציות בסיסיות כמו + הן גנריות. ועם זאת, מערכת הטיפוסים ב-Dylan לא תומכת באופן מלא בטיפוסים פרמטריים, שאופייניים יותר לשפות מהענף של ML (כמו OCAML ו-F#‎). ב-Common Lisp, מערכת האובייקטים (CLOS) לא מאפשרת Dispatch על טיפוסים פרמטריים, ונדרש פרוטוקול הרחבה לשפה לשם כך. Fortress מאפשרת Multiple dispatch על טיפוסים פרמטריים, אך בניגוד לג'וליה הטיפוסים שלה סטטיים ולא דינמיים, ויש לה שלבים נפרדים לקומפילציה ולהרצה. הטבלה הבאה מספקת השוואה בין השפות: כברירת מחדל, סביבת ההרצה של ג'וליה צריכה להיות מותקנת כאשר מריצים קוד שנכתב בשפה. בנוסף, ניתן ליצור גם קובץ הרצה עצמאי שאינו דורש את קוד המקור, בעזרת PackageCompiler.jl. המאקרואים התחביריים של ג'וליה, שמשמשים למטא-תכנות, דומים לאלו של Lisp בכך שהם חזקים יותר ממאקרואים של החלפת טקסט שאופייניים לקדם-מעבדים של שפות אחרות כמו C, בעיקר כי הם עובדים ברמת עצי תחביר מופשטים (Abstract Syntax Tree). מערכת המאקרואים של ג'וליה היא הגיינית, אך גם תומכת בלכידה מכוונת כשנדרש (כמו במקרה של מאקרואים אנאפוריים) באמצעות מבנהesc. ג'וליה אינה כופה על המשתמש סגנון ספציפי לחישוב מקבילי, ובמקום זאת מספקת אבני בניין מרכזיות לחישוב מקבילי. אלו נותנות את הגמישות הנדרשת לשימוש בסגנונות השונים של מיקבול, כמו גם יכולת לייצר סגנונות חדשים. הדוגמה הבאה מראה לולאת for מקבילית שמתנקזת לבסוף ל-reduction: julia> using Distributed julia> nheads = @distributed (+) for i = 1:200000000 Int(rand(Bool)) end 99998199 ההפצה הרשמית של ג'וליה כוללת לולאת קריאה-פיענוח-הדפסה בשורת פקודה אינטראקטיבית (REPL), עם היסטוריה, השלמת טאבים ומצבים ייעודיים לעזרה ולפקודות מעטפת, כך שניתן יהיה להשתמש בה בשביל ניסויים בשביל לבדוק קוד במהירות. המקטע הבא מציג סשן דוגמה המבצע חיבור מחרוזות: julia> p(x) = 2x^2 + 1; f(x, y) = 1 + 2p(x)y julia> println("Hello world!", " I'm on cloud ", f(0, 4), " as Julia supports recognizable syntax!") Hello world! I'm on cloud 9 as Julia supports recognizable syntax! כאשר מוסיפים לפני פקודות ; למצב מעטפת או ? למצב עזרה, ה-REPL נותן למשתמש גישה למצבים השונים, וההיסטוריה של הפקודות נשמרת גם בין שימושים. ניתן לבדוק קוד בצורה אינטראקטיבית, וניתן לשמור אותו ולהריץ מתוך קובץ עם סיומת .jl ואז להריץ משורת הפקודה בעזרת: $ julia <filename> מחברות Jupyter אינטראקטיביות יכולות לתמוך בג'וליה (למעשה ג'וליה, פייתון ו־R הן ההשראה לשם Jupyter), וישנו גם פרויקט בשם Pluto.jl שמוגדר "מחברת ריאקטיבית" (מחברות שנשמרות בקובצי ג'וליה טהורים), ומהווה תחליף אפשרי למחברות Jupyter. ניתן לשלב את ג'וליה עם שפות רבות אחרות (ביניהן 10–20 השפות הנפוצות ביותר). הפקודה ccall משמשת כדי לקרוא לפונקציות מיוצאות ב-C, לקרוא פונקציות מספריות משותפות בפורטרן, לקרוא לחבילות שמאפשרות קריאה לשפות אחרות כמו פייתון, R,‏ MATLAB, ג'אווה וסקאלה. ישנן גם חבילות שמאפשרות לשפות אחרות לקרוא לג'וליה, כמו pyjulia של שפת פייתון. לג'וליה יש תמיכה בגרסת יוניקוד 13.0, כאשר UTF-8 משמש במחרוזות (כברירת מחדל) ולקוד המקור של ג'וליה, כך שניתן להשתמש בסימנים מתמטיים נפוצים כאופרטורים, למשל ∈ במקום אופרטור in. לג'וליה יש ספריות שתומכות בשפות Markup כגון HTML,‏ XML,‏ JSON ו-BSON, וספריות למסדי נתונים ולשימוש ברשת בכלל (כמו ספריה לטיפול ב-HTTP). ניתן לקמפל תוכנות ג'וליה לקבצים בינאריים בעזרת PackageCompiler.jl. ניתן ליצור גם קובצי הרצה קטנים יותר אם משתמשים בתת-סט סטטי של השפה דרך StaticCompiler.jl, שאינו תומך ב־dispatch בזמן ריצה או ב־garbage collection, מאחר ששני אלו דורשים את קובצי ההרצה של ג'וליה עצמה. לג'וליה יש מנהל חבילות מובנה, והיא כוללת מערכת רישום כברירת מחדל. חבילות בדרך כלל מופצות כקוד מקור שמנוהל ב-Github, אף על פי שישנן גם חלופות. ניתן גם להתקין חבילות בינאריות, בתור artifacts. ניתן להשתמש במנהל החבילות של ג'וליה לתשאול והידור חבילות, וכן לניהול סביבות. ניתן גם להוסיף מערכות רישום נוספות שאינן מערכת הרישום הרשמית. הגרעין של ג'וליה ממומש בג'וליה וב-C, ביחד עם C++‎ לתלויות של LLVM. ה-Parsing והנמכת הקוד (למבנה קרוב יותר לקוד מכונה) ממומשים ב-FemtoLisp, שהוא ניב של Scheme. פרויקט תשתית המהדר של LLVM משמשת בתור ה-Back end שיוצר קוד מכונה אופטימלי ב-32 או 64 ביט, על פי הפלטפורמה בה הקוד רץ. מלבד כמה יוצאי דופן (כמו PCRE), הספרייה הסטנדרטית ממומשת בג'וליה. התכונה הבולטת ביותר של המימוש של ג'וליה היא המהירות, כך שקוד בג'וליה לרוב ירוץ לכל הפחות בחצי המהירות של קוד אופטימלי מקביל ב-C, ובמהירות גבוהה בכמה סדרי גודל מאלו של פייתון או R. מאחר שג'וליה משתמשת ב-JIT, היא מייצרת קבצים בינאריים ישירות, עוד לפני שהקוד רץ, ולא משתמשת ב-Bytecode. לג'וליה יש ארבע רמות תמיכה, מ-tier 1 בה מובטח כי ג'וליה תצליח לרוץ, וישנם בינאריים רשמיים להתקנה, דרך tier 2 שם ג'וליה עובדת אך לא עוברת את כל הבדיקות ו-tier 3 הניסויית ועד tier 4 בה ג'וליה כפי הנראה פעלה לפחות פעם אחת בעבר, אך אינה פועלת כיום. כל מעבדי IA-32 שמממשים ארכיטקטורת i686 נתמכים, וכך גם x86-64 (ידועה גם כ-amd64). ג'וליה הותקנה עד כה בכמה פלטפורמות של ARM. ישנה תמיכה מלאה ב-tier 1 ב-ARMv8 AArch64, בעוד ARMv7 ו-ARMv6 AARCH32 נתמכים ברמה נמוכה יותר ובצורה פחות חלקה בג'וליה 1.0 אם כי יש להם קובצי התקנה רשמיים. התמיכה ב-ARM 32 ביט ירדה ל-tier 3 בגרסאות מאוחרות יותר, אם כי עדיין יש קובצי התקנה לא רשמיים לגרסה 1.5.1. ל-PowerPC 64 ביט יש תמיכה ב-tier 3, משמע "ייתכן שההידור יצליח". יש פלטפורמות, כמו ראספברי פאי המקורי, להן צריך להדר את ג'וליה מקוד המקור עם דגלים ספציפיים. לחלקם יש בינאריים לא רשמיים שהודרו מראש והוראות כיצד להדר. ג'וליה כיום נתמכת ב-Raspberry Pi OS, עם תמיכה טובה יותר בפלטפורמות החדשות יותר בעלות מעבד ARMv7 ומעלה. קרן ראספברי פאי מקדמת כיום את התמיכה בג'וליה. ג'וליה עובדת בדפדפנים ובג'אווה סקריפט באמצעות JSExpr.jl. ישנו פרויקט רדום בשם Julia-wasm שמאפשר ריצה של REPL ג'וליה בסביבת WebAssembly. וישנם כלים להידור תוכנות שכתובות בג'וליה ל-WASM. מערכת ההפעלה חלונות נתמכת בגרסאות 32 ו-64 ביט, מ-Windows 7 ומעלה. ב-Windows 10 גרסת ה-64 ביט נתמכת ברמה גבוהה יותר מגרסת 32 ביט. Windows על מעבדי ARM אינו מוזכר כנתמך. לג'וליה יש תמיכת tier 1 ב-macOS (מחשבי מק מבוססי אינטל), אך לא מוזכרת שום תמיכה במעבדי Apple M1. ג'וליה נחשבת עובדת סביר, אם כי בביצועים פחותים, על מתרגם רוזטה 2 של אפל. עבודה על גרסת ג'וליה מקומית למעבדי M1 (ללא אמולציה) נמצאת בשלבים מתקדמים. מאחר שג'וליה מתהדרת על ARM, בתיאוריה ניתן לכתוב אפליקציות אנדרואיד בעזרת ה-NDK, אך ג'וליה כיום מכוונת לרוץ על אנדרואיד רק בצורה עקיפה, משמע עם chroot של לינוקס, או תחת termux. פלטפורמת CUDA של Nvidia נתמכת ב-tier 1, בסיוע חבילות חיצוניות. ישנן גם חבילות נוספות לתמיכה במאיצים אחרים כמו TPU של גוגל ו-GPU של AMD שנתמכים ב-OpenCL לדוגמה. ישנה גם תמיכה ניסיונית ב-ROCm של AMD. דף ההורדות באתר של ג'וליה מספק קובצי התקנה בינאריים וגם קוד מקור לכל הפלטפורמות שנתמכות באופן רשמי. השפה עצמה היא תחת רישיון MIT. ספריות שונות יוצאות תחת רישיונות שונים, כגון GPL,‏ LGPL ו-BSD, כך שהסביבה עליה נשענת השפה מוגדרת כולה תחת רישיון GPL, אם כי ניתן להדר אותה גם ללא החלקים שתחת GPL. ניתן להדר את השפה גם כספריה משותפת, כדי לשלב אותה עם קוד של המשתמש ב-C או בפורטרן, או עם ספריות צד שלישי. ג'וליה מאפשרת שילוב עם ספריות שנכתבו ב-C או פורטרן ללא התאמות ואפילו ללא הידור מחדש – ניתן להתממשק ישירות לספריות האלו אפילו מן הממשק האינטראקטיבי ולנסות אותן עם תגובות מידיות. הפרטים המלאים על רישוי החלקים השונים נמצאים במסמכי הרישוי של ג'וליה. הגרסה המוקדמת ביותר שנתמכת עדיין היא 1.6.7, עם תמיכה לטווח ארוך של שנה לפחות. תיקוני באגים משוחררים על בסיס חודשי. חבילות שעבדו בגרסה 1.0.x עובדות גם ב-1.1.x ובגרסאות חדשות יותר, מתוך הבטחה מוצהרת לתאימות קדימה בתחביר. אמנם היו ממשקים לשפות אחרות שנתקלו בבעיה בהקשר של תהליכונים, למשל JavaCall.jl שמהווה ממשק לשפות JVM כמו ג'אווה או סקאלה, או Rcall.jl שמהווה ממשק לשפת R, אך יצרו מעקף לבעיה בגרסה 1.3. julia> println("hola mundo") hola mundo julia> x = 1 julia> y = 2 julia> if x<y println("smaller") else println("larger") end es menor julia> (x < y) ? "x is smaller than y" : (x > y) ? "x is larger than y" : "x is equal y" "x is smaller than y" julia> comparison(x, y) = println((x < y) ? "x=$x is smaller than y=$y" : (x > y) ? "x is larger than y" : "x is equal to y") comparison (generic function with 1 method) julia> comparison(4, 5) x=4 is smaller than y=5 julia> "LᴬTₑX" "LᴬTₑX" function mandel(z) c = z max = 80 for n = 1:max if abs(z) > 2 return n-1 end z = z^2 + c end return max end using LinearAlgebra: tr using Statistics #importing std, mean etc. function randmatstat(t) n = 5 v = zeros(t) w = zeros(t) for i = 1:t a = randn(n,n) b = randn(n,n) c = randn(n,n) d = randn(n,n) P = [a b c d] Q = [a b; c d] v[i] = tr((P'*P)^4) w[i] = tr((Q'*Q)^4) end std(v)/mean(v), std(w)/mean(w) end MATLAB GNU Octave שפת R Mathematica SageMath מדיה וקבצים בנושא ג'וליה בוויקישיתוף אתר האינטרנט הרשמי של ג'וליה (באנגלית) ג'וליה, ברשת החברתית אקס (טוויטר) ג'וליה, הבלוג הרשמי "Smoothing data with Julia's @generated functions". 5 בנובמבר 2015. נבדק ב-9 בדצמבר 2015. Julia's generated functions are closely related to the multistaged programming (MSP) paradigm popularized by Taha and Sheard, which generalizes the compile time/run time stages of program execution by allowing for multiple stages of delayed code execution. {{cite web}}: (עזרה) "Why We Created Julia". Julia website. בפברואר 2012. נבדק ב-7 בפברואר 2013. {{cite web}}: (עזרה) Gibbs, Mark (9 בינואר 2013). "Pure and Julia are cool languages worth checking out". Network World (column). נבדק ב-7 בפברואר 2013. {{cite web}}: (עזרה) "LICENSE.md". GitHub. "Contributors to JuliaLang/julia". GitHub. "Julia v1.11.0-beta2 is now available". Julia Programming Language (באנגלית). 2024-05-29. נבדק ב-2024-05-29. "GitHub - JuliaLang/julia at release-1.11". GitHub (באנגלית). נבדק ב-2024-05-29. "Julia 1.10.4 testing period". Julia Programming Language (באנגלית). 2024-05-30. נבדק ב-2024-05-30. Engheim, Erik (2017-11-17). "Dynamically Typed Languages Are Not What You Think". Medium (באנגלית). נבדק ב-2021-01-27. "Is julia strongly checked(typed)?". JuliaLang (באנגלית אמריקאית). 2018-08-07. נבדק ב-2021-01-27. "Julia". Julia. NumFocus project. נבדק ב-9 בדצמבר 2016. Julia's Base library, largely written in Julia itself, also integrates mature, best-of-breed open source C and Fortran libraries for ... {{cite web}}: (עזרה) "Non-GPL Julia?", Groups.google.com, נבדק ב-2017-05-31 "Introduce USE_GPL_LIBS Makefile flag to build Julia without GPL libraries". Note that this commit does not remove GPL utilities such as git and busybox that are included in the Julia binary installers on Mac and Windows. It allows building from source with no GPL library dependencies. Green, Todd (10 באוגוסט 2018). "Low-Level Systems Programming in High-Level Julia". אורכב מ-המקור ב-5 בנובמבר 2018. נבדק ב-5 בנובמבר 2018. {{cite web}}: (עזרה) Moss, Robert (26 ביוני 2015). "Using Julia as a Specification Language for the Next-Generation Airborne Collision Avoidance System" (PDF). ארכיון מ-1 ביולי 2015. נבדק ב-29 ביוני 2015. Airborne collision avoidance system {{cite web}}: (עזרה) Bryant, Avi (15 באוקטובר 2012). "Matlab, R, and Julia: Languages for data analysis". O'Reilly Strata. אורכב מ-המקור ב-2014-04-26. {{cite web}}: (עזרה) Singh, Vicky (23 באוגוסט 2015). "Julia Programming Language – A True Python Alternative". Technotification. {{cite web}}: (עזרה) Krill, Paul (18 באפריל 2012). "New Julia language seeks to be the C for scientists". InfoWorld. {{cite journal}}: (עזרה) Finley, Klint (3 בפברואר 2014). "Out in the Open: Man Creates One Programming Language to Rule Them All". Wired. {{cite journal}}: (עזרה) Fischer, Keno; Nash, Jameson. "Growing a Compiler - Getting to Machine Learning from a General Purpose Compiler". Julia Computing Blog. נבדק ב-11 באפריל 2019. {{cite web}}: (עזרה) "Creating a sysimage". PackageCompiler Documentation. Home · PackageCompiler, julialang.github.io (באנגלית) FFT זמינה כיום דרך FFTW (זוהי תלות, אחת מרבות, שהוצאה מהספרייה הסטנדרטית לחבילה כי היא תחת רישיון GPL, ולכן לא נכללת בג'וליה 1.0 כברירת מחדל.) "Remove the FFTW bindings from Base by ararslan · Pull Request #21956 · JuliaLang/julia". GitHub (באנגלית). נבדק ב-2018-03-01. Julia Official Website (באנגלית) Jeff Bezanson; Stefan Karpinski; Viral Shah; Alan Edelman. "Why We Created Julia". JuliaLang.org. נבדק ב-5 ביוני 2017. {{cite web}}: (עזרה) Torre, Charles. "Stefan Karpinski and Jeff Bezanson on Julia". Channel 9. MSDN. נבדק ב-4 בדצמבר 2018. {{cite web}}: (עזרה) "Why We Created Julia". ארכיון מ-2016-01-18. נבדק ב-2012-04-19. Julia Computing "About Us – Julia Computing". juliacomputing.com. נבדק ב-2017-09-12. Julia: A high-level language for supercomputing, Intel - The Parallel Universe - Issue 29 "Julia Computing Raises $4.6M in Seed Funding". אורכב מ-המקור ב-2019-05-10. "Julia Computing Awarded $910,000 Grant by Alfred P. Sloan Foundation, Including $160,000 for STEM Diversity". juliacomputing.com. 2017-06-26. נבדק ב-2020-07-28. "DIFFERENTIATE—Design Intelligence Fostering Formidable Energy Reduction (and) Enabling Novel Totally Impactful Advanced Technology Enhancements" (PDF). "Julia Computing raises $24 mln in funding round led by Dorilton Ventures". Reuters. 19 ביולי 2021. {{cite news}}: (עזרה) "Williams welcomes Julia Computing as Dorilton Ventures partner". www.williamsf1.com (הודעה לעיתונות) (באנגלית). נבדק ב-2021-09-02. "JuliaHub Receives $13 Million Strategic Investment from AE Industrial Partners HorizonX". info.juliahub.com (הודעה לעיתונות) (באנגלית). 27 ביוני 2023. נבדק ב-2023-06-30. {{cite press release}}: (עזרה) "JuliaCon 2017". juliacon.org. נבדק ב-2017-06-04. Fisher, Keno. "The Celeste Project". juliacon.org. נבדק ב-24 ביוני 2017. {{cite web}}: (עזרה) Claster, Andrew (12 בספטמבר 2017). "Julia Joins Petaflop Club". Julia Computing (הודעה לעיתונות). Celeste is written entirely in Julia, and the Celeste team loaded an aggregate of 178 terabytes of image data to produce the most accurate catalog of 188 million astronomical objects in just 14.6 minutes [..] a performance improvement of 1,000x in single-threaded execution. {{cite press release}}: (עזרה) Shah, Viral B. (2017-11-15). "Viral B. Shah on Twitter" (באנגלית). נבדק ב-2019-09-15. @KenoFischer is speaking on Celeste in the @Intel theatre at @Supercomputing. 0.65M cores, 56 TB of data, Cori - world's 6th largest supercomputer. "Julia language co-creators win James H. Wilkinson Prize for Numerical Software". MIT News. נבדק ב-2019-01-22. "Alan Edelman of MIT Recognized with Prestigious 2019 IEEE Computer Society Sidney Fernbach Award | IEEE Computer Society" (הודעה לעיתונות) (באנגלית אמריקאית). 1 באוקטובר 2019. נבדק ב-2019-10-09. {{cite press release}}: (עזרה) "Julia Computing Brings Support for NVIDIA GPU Computing on Arm Powered Servers - JuliaHub". juliahub.com (הודעה לעיתונות). נבדק ב-2022-11-16. Patel, Chintan (2019-11-19). "NVIDIA Expands Support for Arm with HPC, AI, Visualization Containers on NGC | NVIDIA Blog". The Official NVIDIA Blog (באנגלית אמריקאית). נבדק ב-2019-12-03. Hobbs, Kerianne (בדצמבר 2022). "Year of Autonomy in Alaskan Glaciers, Flight, Earth Orbit, Cislunar Space and Mars". Aerospace America Year in Review. p. 48. The flight test team was able to demonstrate … a vertical takeoff and landing vehicle with both electric and conventional fuel propulsion systems onboard. The uncrewed aerial system was able to plan and execute these missions autonomously using onboard hardware. It was the first time the Julia programming language was flown on the embedded hardware - algorithms were precompiled ahead of time. {{cite web}}: (עזרה) Circuitscape/Circuitscape.jl, Circuitscape, 2020-02-25, נבדק ב-2020-05-26 "Conservation through Coding: 5 Questions with Viral Shah | Science Mission Directorate". science.nasa.gov. נבדק ב-2020-05-26. JuliaSpace/SatelliteToolbox.jl, JuliaSpace, 2020-05-20, נבדק ב-2020-05-26 "Julia for HEP Mini-workshop". indico.cern.c h. 27 בספטמבר 2021. נבדק ב-2022-08-23. Julia and the first observation of Ω-_b → Ξ+_c K- π- {{cite web}}: (עזרה) Mikhasenko, Misha (2022-07-29). "ThreeBodyDecay". GitHub. נבדק ב-2022-08-23. Mikhasenko, Misha (ביולי 2021). "Julia for QCD spectroscopy" (PDF). indico.cern.ch. נבדק ב-2022-08-23. Summary: Julia is ready to be used in physics HEP analysis {{cite web}}: (עזרה). "JuliaHEP/UnROOT.jl". JuliaHEP. 2022-08-19. נבדק ב-2022-08-23. "Julia · Search · GitLab". GitLab (באנגלית). נבדק ב-2022-08-23. "Commits · master · sft / lcgcmake · GitLab". GitLab (באנגלית). נבדק ב-2022-08-23. bump julia version to 1.7.3 Chen, Jiahao. "Jiahao Chen". Jiahao Chen (באנגלית אמריקאית). נבדק ב-2023-02-23. "'Why We Created Julia' Turns Ten Years Old - JuliaHub". juliahub.com. נבדק ב-2022-11-16. "Newsletter January 2022 - Julia Growth Statistics - Julia Computing". juliacomputing.com (באנגלית). נבדק ב-2022-01-26. "Home - CliMA". CliMA – Climate Modeling Alliance. נבדק ב-18 ביוני 2023. {{cite web}}: (עזרה) "Introducing Braket.jl - Quantum Computing with Julia". Julia Community 🟣 (באנגלית). 15 בנובמבר 2022. נבדק ב-2023-02-23. Almost all of the Python SDK's features are reimplemented in Julia — for those few that aren't, we are also providing a subsidiary package, PyBraket.jl, which allows you to translate Julia objects into their Python equivalents and call the Python SDK. {{cite web}}: (עזרה) "Getting started with Julia on Amazon SageMaker: Step-by-step Guide" (PDF). במאי 2020. {{cite web}}: (עזרה) "JuliaCon 2014". juliacon.org. נבדק ב-2021-06-20. "JuliaCon 2016 at MIT". mit.edu. נבדק ב-2021-06-20. "JuliaCon 2019 at UMB". technical.ly. נבדק ב-2021-06-20. "JuliaCon 2021 Highlights". julialang.org (באנגלית). נבדק ב-2022-03-03. This year's JuliaCon was the biggest and best ever, with more than 300 presentations available for free on YouTube, more than 20,000 registrations, and more than 43,000 unique YouTube viewers during the conference, up from 162 presentations, 10,000 registrations, and 28,900 unique YouTube viewers during last year's conference. "JuliaCon 2020 wrap up". julialang.org. נבדק ב-2021-06-20. למעשה מספר ההרצאות המוקלטות שהועלו לדף היוטיוב של שפת ג'וליה. "JuliaCon 2016". "Newsletter August 2017". Julia Computing, Inc. Herriman, Jane. "A portrait of JuliaCon 2018". "JuliaCon 2019". "JuliaCon 2021 Highlights". "JuliaCon 2022 Highlights". "Newsletter August 2023: Julia Enters TIOBE Index Top 20, JuliaCon Highlights and More". "Newsletter August 2024 | WhatsApp Codec Prototyped in Julia". "Julia Community". julialang.org. נבדק ב-2021-07-05. "Julia Twitter". twitter.com. נבדק ב-2021-07-05. "Julia Language on LinkedIn". Linkedin.com. נבדק ב-2021-07-05. "Julia Language on Facebook". Facebook.com. נבדק ב-2021-07-05. "Julia Language on Slack". julialang.org. נבדק ב-2021-07-05. "Julia Language on Zulip". zulipchat.com. נבדק ב-2021-07-05. "Julia Language on Discord". discord.com. נבדק ב-2021-07-05. "Julia Language on Discourse". julialang.org. נבדק ב-2021-07-05. "Julia Language on Stack Overflow". stackoverflow.com. נבדק ב-2021-07-05. "Julia Language on YouTube". youtube.com. נבדק ב-2021-07-05. "Julia Language other Channels". julialang.org. נבדק ב-2021-07-05. "Alex Arsland joins the Julia Language as Community Manager". julialang.org. נבדק ב-2021-07-05. "Logan Kilpatrick joins the Julia Language as Community Manager". julialang.org. נבדק ב-2021-07-05. "Logan Kilpatrick, Experience". Linkedin. "Julia: NumFOCUS Sponsored Project since 2014". numfocus.org. נבדק ב-2020-09-29. "The Julia Language". julialang.org. נבדק ב-2019-09-22. Cimpanu, Catalin. "Mozilla is funding a way to support Julia in Firefox". ZDNet (באנגלית). נבדק ב-2019-09-22. "Julia in Iodide". alpha.iodide.io. נבדק ב-2019-09-22. "Language plugins - Iodide Documentation". iodide-project.github.io. נבדק ב-2019-09-22. "Mozilla Research Grants 2019H1". Mozilla (באנגלית). נבדק ב-2019-09-22. running language interpreters in WebAssembly. To further increase access to leading data science tools, we’re looking for someone to port R or Julia to WebAssembly and to attempt to provide a level 3 language plugin for Iodide: automatic conversion of data basic types between R/Julia and Javascript, and the ability to share class instances between R/Julia and Javascript. "Literate scientific computing and communication for the web: iodide-project/iodide". iodide. 2019-09-20. נבדק ב-2019-09-22. We envision a future workflow that allows you to do your data munging in Python, fit a quick model in R or JAGS, solve some differential equations in Julia, and then display your results with a live interactive d3+JavaScript visualization ... and all that within within a single, portable, sharable, and hackable file. "Sponsor the Julia Language". github.com. נבדק ב-2021-06-05. "Julia 1.9 Available Now - Free to Download and Use". juliahub.com. נבדק ב-2024-06-16. "GitHub - JuliaLang/PackageCompiler.jl: Compile your Julia Package". The Julia Language. 2019-02-14. נבדק ב-2019-02-15. "The Julia REPL · The Julia Language". docs.julialang.org. נבדק ב-2019-09-22. "Introducing Julia/The REPL - Wikibooks, open books for an open world". en.wikibooks.org. נבדק ב-2019-09-22. "Getting Started · The Julia Language". docs.julialang.org (באנגלית). נבדק ב-2018-08-15. ראו גם: docs.julialang.org/en/v1/manual/strings/ לאינטרפולציה של מחרוזות, וראו דוגמת string(greet, ", ", whom, ".\n") לדרכים מומלצות לחיבור מחרוזות. לג'וליה יש פונקציות println ו-print, אך גם את המאקרו @printf (שאינו פונקציה!) כדי לקצר את זמן הריצה של עיצוב המחרוזת (בניגוד לפונקציה המקבילה ב-C). "Julia Documentation". JuliaLang.org. נבדק ב-18 בנובמבר 2014. {{cite web}}: (עזרה) "Learn Julia in Y Minutes". Learnxinyminutes.com. נבדק ב-2017-05-31. Enthought (2014-07-09), Lightning Talks | SciPy 2014 | Tuesday July 8 2014, נבדק ב-2024-08-25 "Julia and Spark, Better Together". juliacomputing.com. 2020-06-02. נבדק ב-2020-07-14. "Unicode 13 support by stevengj · Pull Request #179 · JuliaStrings/utf8proc". GitHub (באנגלית). נבדק ב-2020-03-29. Short, Tom (2023-10-30), StaticCompiler, נבדק ב-2023-10-30 "JuliaRegistries / General". נבדק ב-2020-04-30. "Pkg.jl - Artifacts". נבדק ב-2020-06-04. "Pkg.jl - Registries". נבדק ב-2020-04-30. Bezanson, Jeff (6 ביוני 2019). "JeffBezanson/femtolisp". GitHub. נבדק ב-16 ביוני 2019. {{cite web}}: (עזרה) "Julia: A Fast Dynamic Language for Technical Computing" (PDF). 2012. "How To Make Python Run As Fast As Julia". 2015. "Basic Comparison of Python, Julia, R, Matlab and IDL". 2015. אורכב מ-המקור ב-2017-11-27. "Julia Downloads". julialang.org. נבדק ב-2019-05-17. "julia/arm.md". The Julia Language. 2019-11-29. נבדק ב-2019-11-29. "Bring Julia code to embedded hardware (ARM)". JuliaLang (באנגלית). 2019-01-23. נבדק ב-2021-03-30. Satoshi Terasaki. "Build Julia for RaspberryPi Zero". Gist (באנגלית). נבדק ב-2020-08-14. "JuliaBerry: Julia on the Raspberry Pi". juliaberry.github.io. נבדק ב-2020-08-14. "Julia available in Raspbian on the Raspberry Pi". Julia works on all the Pi variants, we recommend using the Pi 3. "Julia language for Raspberry Pi". Raspberry Pi Foundation. "Translate Julia to JavaScript". JuliaGizmos. 2019-07-07. נבדק ב-2019-07-25. "julia-wasm". github.com (באנגלית). נבדק ב-2021-08-04. "WebAssembly.jl". github.com (באנגלית). נבדק ב-2021-08-04. "Using Julia on Android?". Julialang.org (באנגלית). נבדק ב-2021-08-04. "Darwin/ARM64 tracking issue · Issue #36617 · JuliaLang/julia". GitHub (באנגלית). נבדק ב-2020-12-08. Carlton, Sam (2020-12-08), ThatGuySam/doesitarm, נבדק ב-2020-12-08 "Using Julia on Android?". JuliaLang (באנגלית אמריקאית). 2019-09-27. נבדק ב-2019-10-02. "Currently supported platforms". Julialang.org (באנגלית). נבדק ב-2021-08-04. "Julia on TPUs". JuliaTPU. 2019-11-26. נבדק ב-2019-11-29. "AMD ROCm · JuliaGPU". juliagpu.org. נבדק ב-2020-04-20. Jeff Bezanson; Stefan Karpinski; Viral Shah; Alan Edelman; et al. "Julia 1.6 Highlights". julialang.org (באנגלית). נבדק ב-2021-03-26. "Upgrade to OpenBLAS 0.3.13 · Pull Request #39216 · JuliaLang/julia". GitHub (באנגלית). נבדק ב-2021-04-26. Given that 1.7 is not too far away (timed releases going forward) "[Zlib_jll] Update to v1.2.12+3 by giordano · Pull Request #44810 · JuliaLang/julia". GitHub (באנגלית). נבדק ב-2022-05-25. "compiler: speed up bootstrapping time by 25% by aviatesk · Pull Request #41794 · JuliaLang/julia". GitHub (באנגלית). נבדק ב-2022-03-03. the bootstrapping took about 80 seconds previously, but on this PR the time is reduced to about 60 seconds.