จูเลีย (ภาษาโปรแกรม)
| จูเลีย | |
|---|---|
| กระบวนทัศน์ | หลายกระบวนทัศน์ : การส่งคำสั่งหลายรายการ (กระบวนทัศน์หลัก), ฟังก์ชัน , อาร์เรย์ , ขั้นตอน ( คำสั่ง ), โครงสร้าง , การสะท้อน , เมตา , หลายขั้นตอน[ 1 ] |
| ออกแบบโดย | เจฟฟ์ เบซานสัน , อลัน เอเดลแมน , สเตฟาน คาร์ปินสกี้ , ไวรอล บี. ชาห์ |
| นักพัฒนา | เจฟฟ์ เบซานสัน, สเตฟาน คาร์ปินสกี, ไวรัล บี. ชาห์ และผู้มีส่วนร่วมอื่นๆ[ 2 ] [ 3 ] |
| ปรากฏครั้งแรก | 2012 [ 4 ] |
| เวอร์ชันเสถียร | |
| รุ่นทดลองใช้งาน | 1.13.0-beta3 [ 6 ] / 4 กุมภาพันธ์ 2569 |
| วินัยในการพิมพ์ | ไดนามิก[ 8 ]อนุมานได้ทางเลือกนามพารามิเตอร์แข็งแกร่ง[ 8 ] |
| ภาษาการใช้งาน | Julia, C , C++ , LLVM , Scheme [ 9 ] |
| แพลตฟอร์ม | ระดับ 1: Linux 64 บิตและ 32 บิต, Windows 10ขึ้นไปและmacOS 64 บิต; IA-32 , x86-64 , Apple silicon ( ARM64 ) Mac; GPU ของ Nvidia/ CUDA 11.0 ขึ้นไป (บน Linux; ระดับ 2สำหรับ Windows) [ 10 ] [ 11 ] [ 12 ] ระดับ 2: FreeBSD 13.4 ขึ้นไป 64 บิต(สำหรับ x86-64), Arm 64 บิตสำหรับ Windows 11 (Prism [ 13 ] ) และ Linux; GPU ของ Apple/Metal บน macOS 13 ขึ้นไป, GPU ของ Intel/ OneAPI 6.2 ขึ้นไป และ GPU ของ Nvidia (บน Windows) ระดับ 3: RISC-V 64 บิต , [ 14 ] musl 64 บิต(เช่นAlpine Linux ); และ GPU ของ AMD/ ROCm 5.3 ขึ้นไป |
| โอเอส | ลินุกซ์ , มอสซาเรลล่า , วินโดวส์ 10 ขึ้นไป และ ฟรีบีเอสดี |
| ใบอนุญาต | เอ็มไอที |
| นามสกุลไฟล์ | .jl |
| เว็บไซต์ | JuliaLang.org |
| ได้รับอิทธิพลจาก | |
Juliaเป็นภาษาโปรแกรมมิ่งอเนกประสงค์แบบไดนามิก ในฐานะ ภาษาโปรแกรม ระดับสูงคุณลักษณะเด่นของการออกแบบ Julia ได้แก่ ระบบประเภทข้อมูลที่มีพาราเมตริกโพลีมอร์ฟิซึม การใช้มัลติเดชเป็นกระบวนทัศน์การเขียนโปรแกรม หลัก การ คอมไพล์ แบบทันเวลาและ การใช้งาน การเก็บขยะ แบบขนาน ที่สำคัญ Julia ไม่รองรับคลาสที่มี เมธอด แบบห่อหุ้มแต่จะอาศัยประเภทของอาร์กิวเมนต์ทั้งหมดของฟังก์ชันเพื่อกำหนดว่าจะเรียกใช้เมธอดใด
โดยค่าเริ่มต้น Julia จะทำงานคล้ายกับภาษาสคริปต์โดยใช้รันไทม์ และอนุญาตให้มีการโต้ตอบ [ 20 ] แต่โปรแกรม Julia ยังสามารถคอมไพล์เป็นไฟล์ปฏิบัติการแบบสแตนด์อโลนไบนารีขนาดเล็ก (หรือเป็นไลบรารีขนาดเล็กสำหรับเช่น Python) โดยใช้คอมไพเลอร์JuliaC.jl [ 21 ] [ 22 ] [ 23 ] [ 24 ]
โปรแกรม Julia สามารถนำไลบรารีจากภาษาอื่นมาใช้ซ้ำได้ และในทางกลับกัน Julia มีความสามารถในการทำงานร่วมกับC , C++ , Fortran , Rust , PythonและRนอกจากนี้ แพ็กเกจ Julia บางตัวยังมีส่วนเชื่อมต่อที่สามารถนำมาใช้เป็นไลบรารี จาก Python และ R ได้อีก ด้วย
Julia รองรับการใช้งานโดยเครื่องมือสำหรับโปรแกรมเมอร์ เช่น IDE (ดูด้านล่าง) และโดยโน้ตบุ๊ก เช่น Pluto.jl, Jupyterและตั้งแต่ปี 2025 Google Colabก็รองรับ Julia อย่างเป็นทางการในรูปแบบเนทีฟ
บางครั้ง Julia ถูกใช้ในระบบฝังตัว (เช่น ถูกใช้ในดาวเทียมในอวกาศบนRaspberry Pi Compute Module 4; Pi 64 บิตทำงานได้ดีที่สุดกับ Julia และ Julia ได้รับการสนับสนุนในRaspbian ) [ 25 ]
ประวัติศาสตร์
การพัฒนา Julia เริ่มขึ้นในปี 2009 เมื่อJeff Bezanson , Stefan Karpinski , Viral B. ShahและAlan Edelmanตั้งเป้าที่จะสร้างภาษาฟรีที่มีทั้งระดับสูงและรวดเร็ว ในวันที่ 14 กุมภาพันธ์ 2012 ทีมงานได้เปิดตัวเว็บไซต์พร้อมบทความบล็อกที่อธิบายภารกิจของภาษา[ 4 ]ในการสัมภาษณ์กับInfoWorldในเดือนเมษายน 2012 Karpinski กล่าวถึงชื่อของภาษา Julia ว่า "จริงๆ แล้วไม่มีเหตุผลที่ดีอะไรหรอก มันแค่ดูเหมือนชื่อที่เพราะดี" [ 26 ] Bezanson กล่าวว่าเขาเลือกชื่อนี้ตามคำแนะนำของเพื่อน[ 27 ]จากนั้นหลายปีต่อมาเขาก็เขียนว่า:
บางที Julia อาจหมายถึง " การพูดติดอ่างที่ไม่ธรรมดาของJeffถูกทำให้เป็นอัตโนมัติ"? [ 28 ]
ไวยากรณ์ของ Julia มีความเสถียรมาตั้งแต่เวอร์ชัน 1.0 ในปี 2018 และ Julia มี การรับประกัน ความเข้ากันได้แบบย้อนหลังสำหรับเวอร์ชัน 1.x และยังมีการรับประกันความเสถียรสำหรับAPI ที่มีการบันทึกไว้ (เสถียร) ในขณะที่ในช่วงหลายปีก่อนหน้านั้น ในช่วงการพัฒนาก่อนเวอร์ชัน 0.7 ไวยากรณ์ (และความหมาย) ได้ถูกเปลี่ยนแปลงในเวอร์ชันใหม่ๆระบบนิเวศ ทั้งหมด (แพ็กเกจที่ลงทะเบียนแล้ว) ใช้ไวยากรณ์ใหม่และปรับปรุงแล้ว และในกรณีส่วนใหญ่จะอาศัย API ใหม่ๆ ที่เพิ่มเข้ามาอย่างสม่ำเสมอ และในบางกรณีมีการเพิ่มไวยากรณ์เพิ่มเติมเล็กน้อยในลักษณะที่เข้ากันได้กับเวอร์ชันก่อนหน้า เช่น ใน Julia 1.7
ในช่วง 10 ปีนับตั้งแต่การเปิดตัว Julia เวอร์ชันก่อน 1.0 ในปี 2012 ชุมชนได้เติบโตขึ้น ระบบนิเวศของแพ็กเกจ Julia มีโค้ดมากกว่า 11.8 ล้านบรรทัด (รวมถึงเอกสารและการทดสอบ) [ 29 ]การประชุมวิชาการ JuliaCon สำหรับผู้ใช้และนักพัฒนา Julia ได้จัดขึ้นเป็นประจำทุกปีตั้งแต่ปี 2014 โดย JuliaCon2020 [ 30 ]มีผู้เข้าร่วมชมมากกว่า 28,900 คน[ 31 ]และ JuliaCon2021 ได้ทำลายสถิติทั้งหมดก่อนหน้านี้ (โดยมีการนำเสนอ JuliaCon2021 มากกว่า 300 รายการให้รับชมฟรีบน YouTube เพิ่มขึ้นจาก 162 รายการในปีที่แล้ว) และมีผู้เข้าร่วมชม 43,000 คนในระหว่างการประชุม[ 32 ]
ผู้ร่วมสร้าง Julia สามคนได้รับรางวัลJames H. Wilkinson Prize for Numerical Software ประจำปี 2019 (มอบทุกสี่ปี) "สำหรับการสร้าง Julia ซึ่งเป็นสภาพแวดล้อมที่เป็นนวัตกรรมสำหรับการสร้างเครื่องมือประสิทธิภาพสูงที่ช่วยให้สามารถวิเคราะห์และแก้ปัญหาทางวิทยาศาสตร์การคำนวณได้" [ 33 ]นอกจากนี้ Alan Edelman ศาสตราจารย์ด้านคณิตศาสตร์ประยุกต์ที่MITยังได้รับการคัดเลือกให้รับ รางวัล IEEE Computer Society Sidney Fernbach Award ประจำปี 2019 "สำหรับความก้าวหน้าที่โดดเด่นในการคำนวณประสิทธิภาพสูง พีชคณิตเชิงเส้น และวิทยาศาสตร์การคำนวณ และสำหรับการมีส่วนร่วมในภาษาการเขียนโปรแกรม Julia" [ 34 ]
เวอร์ชัน 0.3 เปิดตัวในเดือนสิงหาคม 2014 ทั้ง Julia 0.7 [ 35 ]และเวอร์ชัน 1.0 เปิดตัวในวันที่ 8 สิงหาคม 2018 Julia 1.4 เพิ่มไวยากรณ์สำหรับการจัดทำดัชนีอาร์เรย์ทั่วไปเพื่อจัดการกับอาร์เรย์ แบบ 0-based เป็นต้น [ 36 ]รูปแบบหน่วยความจำก็ได้รับการเปลี่ยนแปลงเช่นกัน[ 37 ] Julia 1.5 ที่เปิดตัวในเดือนสิงหาคม 2020 เพิ่มการสนับสนุนการบันทึกและเล่นซ้ำการดีบัก[ 38 ] สำหรับเครื่องมือ rrของ Mozilla การเปิดตัวครั้งนี้เปลี่ยนพฤติกรรมในREPL (เป็น soft scope) ไปเป็นแบบที่ใช้ในJupyterแต่ยังคงเข้ากันได้อย่างสมบูรณ์กับโค้ดที่ไม่ใช่ REPL (ซึ่งยังคง hard scope ไว้) [ 39 ] Julia 1.6 เป็นการเปิดตัวครั้งใหญ่ที่สุดนับตั้งแต่ 1.0 และเป็น เวอร์ชัน สนับสนุนระยะยาว (LTS) เป็นเวลานานที่สุด[ 40 ]เนื่องจากการพัฒนา Julia 1.7 กลับมาใช้การเผยแพร่ตามเวลา [ 41 ]และได้เผยแพร่ในเดือนพฤศจิกายน 2021 พร้อมด้วยตัวสร้างเลขสุ่มเริ่มต้นใหม่และ Julia 1.7.3 ได้แก้ไขปัญหาด้านความปลอดภัยอย่างน้อยหนึ่งรายการ[ 42 ] Julia 1.8 เพิ่มตัวเลือกสำหรับการซ่อนซอร์สโค้ดเมื่อคอมไพล์ซอร์สโค้ด Julia เป็นไฟล์ปฏิบัติการ[ 43 ] [ 44 ] Julia 1.9 ได้เพิ่มความสามารถในการคอมไพล์แพ็กเกจล่วงหน้าเป็นโค้ดเครื่องเนทีฟโดยอัตโนมัติ เพื่อปรับปรุงการคอมไพล์แพ็กเกจล่วงหน้า จึงมีการแนะนำแพ็กเกจใหม่PrecompileTools.jlสำหรับนักพัฒนาแพ็กเกจ Julia 1.10 ได้รับการเผยแพร่เมื่อวันที่ 25 ธันวาคม 2023 พร้อมคุณสมบัติใหม่ เช่น การรวบรวมขยะแบบขนาน[ 45 ] Julia 1.11 เปิดตัวเมื่อวันที่ 7 ตุลาคม 2024 และด้วยเหตุนี้ 1.10.5 จึงกลายเป็น เวอร์ชัน สนับสนุนระยะยาว (LTS) ถัดไป (กล่าวคือ มีเพียงสองเวอร์ชันนี้เท่านั้นที่ได้รับการสนับสนุน) ซึ่งต่อมาถูกแทนที่ด้วย 1.10.10 ที่เปิดตัวเมื่อวันที่ 27 มิถุนายน และ 1.6 ไม่ใช่เวอร์ชัน LTS อีกต่อไป Julia 1.11 เพิ่มpublicคำหลักใหม่ เช่น เพื่อส่งสัญญาณ API สาธารณะที่ปลอดภัย (ผู้ใช้ Julia ควรใช้ API ดังกล่าว ไม่ใช่ส่วนภายในของ Julia หรือแพ็กเกจ และผู้เขียนแพ็กเกจควรใช้คำหลัก โดยทั่วไปแล้วทางอ้อม เช่น นำหน้าด้วย@compatมาโคร จากCompat.jlเพื่อรองรับ Julia เวอร์ชันเก่ากว่า อย่างน้อยก็เวอร์ชัน LTS)
Julia 1.12 เปิดตัวเมื่อวันที่ 7 ตุลาคม 2025 (และ 1.12.5 เมื่อวันที่ 9 กุมภาพันธ์ 2026) พร้อมกับ แพ็คเกจ JuliaC.jlซึ่งรวมถึงjuliacคอมไพเลอร์ที่ทำงานร่วมกับ Julia เพื่อสร้างไฟล์ปฏิบัติการไบนารีขนาดเล็ก (เล็กกว่าที่เคยเป็นไปได้มาก โดยใช้คุณสมบัติการตัดแต่งแบบใหม่) Julia 1.10 LTSยังคงเป็นสาขาที่ได้รับการสนับสนุนอย่างเป็นทางการ แต่สาขา 1.11 ก็ได้รับการดูแลรักษาหลังจากการเปิดตัว 1.12 โดยมีการเปิดตัว 1.11.8 และ 1.11.9 เมื่อวันที่ 8 กุมภาพันธ์ 2026 [ 46 ]
จูเลียคอน
ตั้งแต่ปี 2014 [ 47 ]ชุมชน Julia ได้จัดงานประชุม Julia ประจำปีโดยมุ่งเน้นที่นักพัฒนาและผู้ใช้ งาน JuliaCon ครั้งแรกจัดขึ้นที่ชิคาโกและเป็นจุดเริ่มต้นของการจัดงานประชุมประจำปี ตั้งแต่ปี 2014 งานประชุมได้จัดขึ้นในหลายสถานที่ รวมถึง MIT [ 48 ]และมหาวิทยาลัยแมริแลนด์ บัลติมอร์[ 49 ] จำนวน ผู้เข้าร่วมงานเพิ่มขึ้นจากไม่กี่สิบคนเป็นผู้เข้าร่วมงานกว่า 28,900 คน[ 50 ]ในงาน JuliaCon 2020 ซึ่งจัดขึ้นในรูปแบบเสมือนจริง งาน JuliaCon 2021 ก็จัดขึ้นในรูปแบบเสมือนจริงเช่นกัน[ 51 ]โดยมีการกล่าวปาฐกถาพิเศษจากศาสตราจารย์William Kahanสถาปนิกหลักของ มาตรฐานจุดลอยตัว IEEE 754 (ซึ่ง CPU และภาษาเกือบทั้งหมด รวมถึง Julia ใช้) [ 52 ] Jan Vitek [ 53 ] Xiaoye Sherry Liและ Soumith Chintala ผู้ร่วมสร้างPyTorch [ 54 ] JuliaCon มีผู้เข้าร่วมงานมากกว่า 43,000 ราย และมีการนำเสนอมากกว่า 300 รายการ (ยังคงเข้าถึงได้ฟรี รวมถึงสำหรับปีที่ผ่านมา) JuliaCon 2022 จะจัดขึ้นในรูปแบบเสมือนจริงระหว่างวันที่ 27 ถึง 29 กรกฎาคม 2022 เป็นครั้งแรก โดยจะนำเสนอในหลายภาษา ไม่ใช่แค่ภาษาอังกฤษเท่านั้น
ผู้สนับสนุน
ภาษา Julia กลายเป็นโครงการที่ได้รับการสนับสนุนทางการเงินจาก NumFOCUS ในปี 2014 เพื่อให้มั่นใจถึงความยั่งยืนในระยะยาวของโครงการ[ 55 ] Jeremy Kepner จากMIT Lincoln Laboratoryเป็นผู้สนับสนุนหลักของโครงการ Julia ในช่วงเริ่มต้น นอกจากนี้ เงินทุนจากมูลนิธิ Gordon and Betty Moore , มูลนิธิ Alfred P. Sloan , Intelและหน่วยงานต่างๆ เช่นNSF , DARPA , NIH , NASAและFAAมีความสำคัญอย่างยิ่งต่อการพัฒนา Julia [ 56 ] Mozillaผู้ผลิตเว็บเบราว์เซอร์ Firefox ได้ให้ทุนวิจัยสำหรับครึ่งแรกของปี 2019 สนับสนุน "สมาชิกของทีม Julia อย่างเป็นทางการ" สำหรับโครงการ "Bringing Julia to the Browser" [ 57 ]ซึ่งหมายถึง Firefox และเว็บเบราว์เซอร์อื่นๆ[ 58 ] [ 59 ] [ 60 ] [ 61 ]ภาษา Julia ยังได้รับการสนับสนุนจากผู้บริจาครายบุคคลบน GitHub อีกด้วย[ 62 ]
บริษัทจูเลีย
JuliaHub, Inc.ก่อตั้งขึ้นในปี 2015 ในชื่อ Julia Computing, Inc. โดยViral B. Shah , Deepak Vinchhi, Alan Edelman , Jeff Bezanson , Stefan KarpinskiและKeno Fischer [ 63 ] [ 64 ]
ในเดือนมิถุนายน 2017 Julia Computing ระดม ทุนได้ 4.6 ล้านดอลลาร์สหรัฐจากGeneral Catalystและ Founder Collective [ 65 ]ในเดือนเดียวกันนั้น บริษัทได้รับเงินสนับสนุน 910,000 ดอลลาร์สหรัฐจากมูลนิธิ Alfred P. Sloanเพื่อสนับสนุน การพัฒนา Julia แบบโอเพน ซอร์ส รวมถึง 160,000 ดอลลาร์สหรัฐเพื่อส่งเสริมความหลากหลายในชุมชน Julia [ 66 ]และในเดือนธันวาคม 2019 บริษัทได้รับ เงินทุน 1.1 ล้านดอลลาร์สหรัฐจากรัฐบาลสหรัฐฯ เพื่อ "พัฒนา เครื่องมือ การเรียนรู้ของเครื่อง ส่วนประกอบประสาท เพื่อลดการใช้พลังงานทั้งหมดของระบบทำความร้อน การระบายอากาศ และเครื่องปรับอากาศ (HVAC) ในอาคาร" [ 67 ] ในเดือนกรกฎาคม 2021 Julia Computing ประกาศว่าพวกเขาระดมทุน รอบ Series Aได้ 24 ล้านดอลลาร์สหรัฐนำโดย Dorilton Ventures [ 68 ]ซึ่งเป็นเจ้าของทีมแข่งรถ Formula One Williams Racingที่ได้ร่วมเป็นพันธมิตรกับ Julia Computing ผู้อำนวยการฝ่ายการค้าของวิลเลียมส์กล่าวว่า "การลงทุนในบริษัทที่สร้างเทคโนโลยีคลาวด์ที่ดีที่สุดเป็นจุดเน้นเชิงกลยุทธ์สำหรับ Dorilton และแพลตฟอร์มที่หลากหลายของ Julia ซึ่งมีความสามารถในการจำลองและการสร้างแบบจำลองที่ปฏิวัติวงการนั้นมีความเกี่ยวข้องอย่างมากกับธุรกิจของเรา เราหวังที่จะฝัง Julia Computing ไว้ในกีฬาที่มีเทคโนโลยีล้ำหน้าที่สุดในโลก" [ 69 ]ในเดือนมิถุนายน 2023 JuliaHub ได้รับการลงทุนเชิงกลยุทธ์ใหม่มูลค่า 13 ล้านดอลลาร์สหรัฐ (อีกครั้งภายใต้ชื่อใหม่) นำโดย AE Industrial Partners HorizonX ("AEI HorizonX") AEI HorizonX เป็นแพลตฟอร์มการลงทุนร่วมทุนที่ก่อตั้งขึ้นโดยความร่วมมือกับบริษัทโบอิ้งซึ่งใช้ Julia [ 70 ]งานของ Tim Holy (ที่ Holy Lab ของ มหาวิทยาลัยวอชิงตันในเซนต์หลุยส์ ) เกี่ยวกับ Julia 1.9 (การปรับปรุงการตอบสนอง) ได้ รับ ทุนสนับสนุนจากChan Zuckerberg Initiative
ลักษณะทางภาษา
Julia เป็น ภาษา โปรแกรมอเนกประสงค์[ 71 ]ในขณะเดียวกันก็ได้รับการออกแบบมาเพื่อการคำนวณเชิงตัวเลข/ทางเทคนิคโดยเฉพาะ นอกจากนี้ยังเป็นประโยชน์สำหรับการเขียนโปรแกรมระบบระดับต่ำ[ 72 ] ในฐานะภาษาสำหรับการกำหนดคุณสมบัติ [ 73 ] เครื่องมือสังเคราะห์ระดับสูง (HLS) (สำหรับฮาร์ดแวร์ เช่นFPGA ) [ 74 ]และสำหรับการเขียนโปรแกรมเว็บ[ 75 ]ทั้งฝั่งเซิร์ฟเวอร์[ 76 ] [ 77 ]และฝั่ง ไคลเอ็นต์ [ 78 ] [ 79 ]
ลักษณะสำคัญของภาษามีดังนี้:
- การเรียกใช้ฟังก์ชันหลายรูปแบบ: ช่วยให้สามารถกำหนดพฤติกรรมของฟังก์ชันได้ในรูปแบบการผสมผสานของประเภทอาร์กิวเมนต์ต่างๆ
- ระบบ ประเภทแบบไดนามิก : ประเภทสำหรับเอกสาร การเพิ่มประสิทธิภาพ และการส่งต่อ
- ประสิทธิภาพใกล้เคียงกับ ภาษาโปรแกรม แบบ statically typedเช่น C
- ตัวจัดการแพ็กเกจในตัว
- มาโครแบบ Lispและสิ่งอำน1วยความสะดวกในการเขียนโปรแกรมแบบเมตา อื่นๆ
- ออกแบบมาเพื่อ การประมวลผล แบบขนานและแบบกระจาย
- โครูทีน : การเชื่อมต่อสีเขียว น้ำหนักเบา
- การสร้างโค้ดอัตโนมัติสำหรับประเภทอาร์กิวเมนต์ต่างๆ
- การแปลงและการส่งเสริมการขายที่ขยายได้สำหรับตัวเลขและประเภทอื่นๆ
การเรียกใช้ฟังก์ชันหลายรายการ (หรือเรียกว่ามัลติเมธอดในภาษา Lisp แม้ว่าจะช้ากว่า แต่ภาษาโปรแกรมส่วนใหญ่ก็ไม่มีการใช้งานที่เหมาะสมที่สุด) เป็นการขยายความของการเรียกใช้ฟังก์ชันรายการเดียว ซึ่ง เป็น กลไกแบบพหุรูป ที่ใช้ในภาษา การเขียนโปรแกรมเชิงวัตถุ (OOP) ทั่วไปเช่นPython , C++ , Java , JavaScriptและSmalltalk ซึ่งใช้การ สืบทอด
ในภาษา Julia ประเภทที่เป็นรูปธรรมทั้งหมดเป็นประเภทย่อยของประเภทนามธรรม โดยเป็นประเภทย่อยโดยตรงหรือโดยอ้อมของAnyประเภทที่เป็นระดับสูงสุดของลำดับชั้นของประเภท ประเภทที่เป็นรูปธรรมไม่สามารถกำหนดประเภทย่อยได้ด้วยตัวเองเหมือนในภาษาอื่นๆ แต่จะใช้การประกอบแทน (ดูเพิ่มเติมที่การสืบทอดเทียบกับการกำหนดประเภทย่อย )
โดยค่าเริ่มต้น รันไทม์ Julia จะต้องได้รับการติดตั้งไว้ล่วงหน้าเมื่อรันซอร์สโค้ดที่ผู้ใช้ให้มา หรืออีกทางหนึ่ง แอป Julia (GUI) สามารถรวมเข้าเป็นไฟล์เดียวได้อย่างรวดเร็วด้วยAppBundler.jl [ 24 ]สำหรับ "การสร้างแอปพลิเคชัน Julia GUI ในรูปแบบตัวติดตั้งแอปพลิเคชันเดสก์ท็อปสมัยใหม่ โดยใช้ Snap สำหรับ Linux, App Installerสำหรับ Windows และ DMG สำหรับ MacOS เป็นเป้าหมาย และรวม Julia ทั้งหมดไว้ในแอป" [ 80 ] PackageCompiler.jlสามารถสร้างไฟล์ปฏิบัติการ แบบสแตนด์อโลน ที่ไม่ต้องใช้ซอร์สโค้ด Julia ในการรันได้[ 20 ]
ในภาษา Julia ทุกสิ่งทุกอย่างเป็นวัตถุ คล้ายกับภาษาโปรแกรมเชิงวัตถุ แต่แตกต่างจากภาษาโปรแกรมเชิงวัตถุส่วนใหญ่ตรงที่ ฟังก์ชันทั้งหมดใช้การเรียกใช้แบบหลายทาง (multiple dispatch ) เพื่อเลือกเมธอด แทนที่จะใช้การเรียกใช้แบบทางเดียว (single dispatch)
รูปแบบการเขียนโปรแกรมส่วนใหญ่สามารถนำไปใช้ได้โดยใช้มาโครและแพ็กเกจแบบโฮโมไอโคนิก ของ Julia มาโครเชิงไวยากรณ์ ของ Julia (ที่ใช้สำหรับการเขียนโปรแกรมแบบเมตา ) เช่นเดียวกับมาโครของ Lisp มีประสิทธิภาพมากกว่ามาโครแบบแทนที่ข้อความที่ใช้ในพรีโปรเซสเซอร์ของภาษาอื่นๆ เช่น C เนื่องจากทำงานในระดับของต้นไม้ไวยากรณ์นามธรรม (AST) ระบบมาโครของ Julia นั้นมีความสะอาด (hygienic ) แต่ยังรองรับการจับแบบจงใจเมื่อต้องการ (เช่น สำหรับมาโครแบบอ้างอิง ) โดยใช้escโครงสร้าง
Julia ได้รับแรงบันดาลใจจากภาษา Lisp หลายสำเนียง รวมถึงSchemeและCommon Lispและมีคุณสมบัติหลายอย่างร่วมกับDylanซึ่งเป็นภาษาไดนามิกที่เน้นการส่งคำสั่งหลายทาง (ซึ่งมี ไวยากรณ์ แบบอินฟิกซ์แทนที่จะเป็นไวยากรณ์แบบพรีฟิกซ์คล้าย Lisp ในขณะที่ใน Julia "ทุกสิ่ง" [ 81 ]เป็นนิพจน์ ) และกับFortressซึ่งเป็นภาษาการเขียนโปรแกรมเชิงตัวเลขอีกภาษาหนึ่ง (ซึ่งมีการส่งคำสั่งหลายทางและระบบประเภทพารามิเตอร์ที่ซับซ้อน) แม้ว่าCommon Lisp Object System (CLOS) จะเพิ่มการส่งคำสั่งหลายทางให้กับ Common Lisp แต่ฟังก์ชันทั้งหมดไม่ได้เป็นฟังก์ชันทั่วไป
ในภาษา Julia, Dylan และ Fortress ความสามารถในการขยายเป็นค่าเริ่มต้น และฟังก์ชันในตัวของระบบทั้งหมดเป็นแบบทั่วไปและสามารถขยายได้ ใน Dylan การเรียกใช้ฟังก์ชันหลายทาง (multiple dispatch) มีความสำคัญเช่นเดียวกับใน Julia: ฟังก์ชันที่ผู้ใช้กำหนดเองทั้งหมดและแม้แต่การดำเนินการในตัวพื้นฐาน เช่น ` +get` ก็เป็นแบบทั่วไป อย่างไรก็ตาม ระบบประเภทของ Dylan ไม่รองรับประเภทพารามิเตอร์อย่างเต็มที่ ซึ่งเป็นลักษณะทั่วไปของภาษาในตระกูล MLโดยค่าเริ่มต้น CLOS ไม่อนุญาตให้เรียกใช้ฟังก์ชันหลายทางบนประเภทพารามิเตอร์ของ Common Lisp ความหมายของการเรียกใช้ฟังก์ชันแบบขยายดังกล่าวสามารถเพิ่มได้ผ่านโปรโตคอล CLOS Metaobject เท่านั้น ด้วยการออกแบบแบบบรรจบกัน Fortress ยังมีคุณสมบัติการเรียกใช้ฟังก์ชันหลายทางบนประเภทพารามิเตอร์ด้วย อย่างไรก็ตาม ต่างจาก Julia Fortress ใช้การกำหนดประเภทแบบคงที่ (statically typed) แทนที่จะเป็นแบบไดนามิก (dynamically typed) โดยมีขั้นตอนการคอมไพล์และการดำเนินการที่แยกจากกัน คุณสมบัติของภาษาต่างๆ สรุปได้ในตารางต่อไปนี้:
| ภาษา | ระบบประเภท | ฟังก์ชันทั่วไป | ประเภทพาราเมตริก |
|---|---|---|---|
| จูเลีย | พลวัต | ค่าเริ่มต้น | ใช่ |
| ลิสปาร์กทั่วไป | พลวัต | ยินยอมเข้าร่วม | ใช่ (แต่ไม่มีการจัดส่ง) |
| ดีแลน | พลวัต | ค่าเริ่มต้น | บางส่วน (ไม่มีการจัดส่ง) |
| ป้อม | สถิต | ค่าเริ่มต้น | ใช่ |
ตัวอย่างหนึ่งของความสามารถในการขยายขีดความสามารถของ Julia คือ แพ็กเกจ Unitful.jlซึ่งเพิ่มการรองรับหน่วยวัด ทางกายภาพ ให้กับภาษา
ความสามารถในการทำงานร่วมกัน
Julia มีการสนับสนุนในตัวสำหรับการเรียกใช้ไลบรารีภาษาCหรือFortran โดยใช้มาโคร ไลบรารีเพิ่มเติมช่วยให้ผู้ใช้สามารถเรียกใช้จากหรือไปยังภาษาอื่น ๆ@ccallเช่นPython [ 82 ] C++ [ 83 ] [ 84 ] Rust , R [ 85 ] Java [ 86 ] และใช้งานร่วมกับSQL ได้[ 87 ] [ 88 ] [ 89 ] [ 90 ]
ตัวเลือกไฟล์ปฏิบัติการที่คอมไพล์แยกต่างหาก
Julia สามารถคอมไพล์เป็นไฟล์ปฏิบัติการ ไบนารี ได้ด้วยPackageCompiler.jl [ 20 ] (หรือด้วยjuliac) นอกจากนี้ยังสามารถเขียนไฟล์ปฏิบัติการขนาดเล็กกว่าได้โดยใช้ชุดย่อยคงที่ของภาษาที่จัดเตรียมโดยStaticCompiler.jlซึ่งไม่รองรับการส่งคำสั่งรันไทม์ (หรือการเก็บขยะ เนื่องจากไม่รวมรันไทม์ที่จัดเตรียมไว้) [ 91 ]
ปฏิสัมพันธ์
การแจกจ่าย Julia อย่างเป็นทางการประกอบด้วยลูปอ่าน-ประเมิน-พิมพ์แบบ โต้ตอบ (REPL; "บรรทัดคำสั่ง") (สามารถเลือก ใช้รหัสสี ได้ [ 92 ] ) [ 93 ]พร้อมประวัติการค้นหาการเติมข้อความอัตโนมัติด้วยแท็บและโหมด ช่วยเหลือและ เชลล์ เฉพาะ [ 94 ]ซึ่งสามารถใช้เพื่อทดลองและทดสอบโค้ดได้อย่างรวดเร็ว[ 95 ]ส่วนต่อไปนี้แสดงตัวอย่างเซสชันตัวอย่างที่สตริงถูกต่อกันโดยอัตโนมัติโดย: [ 96 ]println
julia> p ( x ) = 2 x ^ 2 + 1 ; f ( x , y ) = 1 + 2 p ( 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!เนื่องจากรองรับUnicode รวมถึงตัวแปรและฟังก์ชัน คุณจึงสามารถกำหนด ฟังก์ชัน Riemann xiได้ดังนี้:
ใช้ฟังก์ชันพิเศษ: gamma เป็นΓ , zeta เป็นζ ξ ( s ) = 1 / 2 * s * ( s - 1 ) * π ^ ( - s / 2 ) * Γ ( s / 2 ) * ζ ( s )เนื่องจากอ่านยากและไม่ได้รับการสนับสนุนจากบรรณาธิการบางราย การใช้สัญลักษณ์เหล่านี้จึงเป็นที่ถกเถียงกัน เพราะผู้ใช้อาจเชื่อว่าการใช้สัญลักษณ์เหล่านี้เป็นสิ่งจำเป็น ความคิดนี้บังคับให้นักพัฒนาต้องใช้ตัวอักษร Unicode/Greek ที่เกี่ยวข้อง โดยเฉพาะในแพ็กเกจที่สำคัญ ตัวอย่างหนึ่งคือฟังก์ชันแกมมาซึ่งกำหนดโดยแพ็กเกจด้วย สัญลักษณ์ ASCIIโค้ดตัวอย่างแสดงให้เห็นว่าสามารถใช้ทั้งสัญลักษณ์และชื่อเรียกแทนได้อาร์กิวเมนต์คีย์เวิร์ดสามารถกำหนดได้ด้วย ASCII หรือกำหนดด้วยสัญลักษณ์กรีกหรือ Unicode ขอแนะนำให้กำหนดชื่อเรียกแทนสำหรับสัญลักษณ์ ASCII ทั้งหมดในแพ็กเกจที่ลงทะเบียนไว้หากเป็นไปได้
REPL ช่วยให้ผู้ใช้เข้าถึงเชลล์ระบบและโหมดช่วยเหลือได้ โดยการกด;หรือ?หลังจากข้อความแจ้ง (ก่อนคำสั่งแต่ละคำสั่ง) ตามลำดับ นอกจากนี้ยังเก็บประวัติคำสั่ง รวมถึงระหว่างเซสชันด้วย[ 97 ]สามารถทดสอบโค้ดภายในเซสชันแบบโต้ตอบของ Julia หรือบันทึกเป็นไฟล์ (โดยใช้.jlส่วนขยาย ที่เหมาะสม ที่สุด) และเรียกใช้จากบรรทัดคำสั่งโดยพิมพ์: [ 81 ]
$จูเลีย<ชื่อไฟล์> Julia ใช้ รหัส UTF-8และLaTeXทำให้สามารถรองรับสัญลักษณ์ทางคณิตศาสตร์ทั่วไปสำหรับตัวดำเนินการหลายตัว เช่น ∈ สำหรับinตัวดำเนินการ ซึ่งสามารถพิมพ์ได้โดย\inการกดTab ↹(เช่น ใช้ รหัส LaTeXหรือสามารถทำได้โดยการคัดลอกและวาง เช่น √ และ ∛ สามารถทำได้สำหรับ ฟังก์ชัน sqrtและcbrt ) Julia 12.x รองรับUnicode 16 [ 98 ] (Julia 1.13-DEV รองรับเวอร์ชันล่าสุด 17.0 [ 99 ]และจะรองรับ ตัว อักษรเป็นตัวห้อย[ 100 ]น่าจะเป็นภาษาโปรแกรมแรกที่ทำเช่นนั้น) สำหรับภาษาต่างๆ ทั่วโลก แม้แต่สำหรับซอร์สโค้ด เช่น ชื่อตัวแปร (ในขณะที่แนะนำให้ใช้ภาษาอังกฤษสำหรับโค้ดสาธารณะ และชื่อแพ็กเกจ)
Julia ได้รับการสนับสนุนโดยJupyterซึ่งเป็นสภาพแวดล้อม "สมุดบันทึก" แบบโต้ตอบออนไลน์[ 101 ]และPluto.jlซึ่งเป็น "สมุดบันทึกแบบตอบสนอง" (โดยที่สมุดบันทึกจะถูกบันทึกเป็นไฟล์ Julia บริสุทธิ์) ซึ่งอาจใช้แทนแบบเดิมได้[ 102 ]นอกจากนี้ ระบบการเผยแพร่ Quarto ของ Posit (เดิมคือRStudio Inc) ยังรองรับ Julia, Python, R และ Observable JavaScript (ภาษาเหล่านี้ได้รับการสนับสนุนอย่างเป็นทางการจากบริษัท และสามารถผสานรวมเข้าด้วยกันในเอกสารสมุดบันทึกเดียวกันได้ มีภาษาอื่นๆ ที่ได้รับการสนับสนุนอย่างไม่เป็นทางการ) [ 103 ] [ 104 ]
REPL สามารถขยายได้ด้วยโหมดเพิ่มเติม และได้มีการขยายด้วยแพ็กเกจต่างๆ เช่นโหมดSQL [ 105 ]สำหรับการเข้าถึงฐานข้อมูล และRCall.jlเพิ่มโหมด Rเพื่อทำงานกับภาษา R [ 106 ]
ส่วนขยาย Visual Studio Codeของ Julia มีสภาพแวดล้อมการพัฒนาแบบบูรณาการ ที่มีคุณสมบัติครบถ้วน พร้อม "การเติมข้อความอัตโนมัติแบบไดนามิกในตัว ผลลัพธ์แบบอินไลน์ ช่องพล็อต REPL แบบบูรณาการ มุมมองตัวแปร การนำทางโค้ด และคุณสมบัติภาษาขั้นสูงอื่นๆ อีกมากมาย" [ 107 ]เช่น สามารถดีบัก ตรวจสอบโค้ดและวิเคราะห์ ประสิทธิภาพ ได้[ 108 ] [ 109 ] [ 110 ] [ 111 ]
ใช้กับภาษาอื่นๆ
ในทางปฏิบัติ Julia สามารถทำงานร่วมกับภาษาอื่นๆ ได้ โดยส่วนใหญ่แล้วสามารถทำงานร่วมกับภาษายอดนิยม 20 อันดับแรกได้ Julia สามารถใช้เรียกฟังก์ชันไลบรารีที่ใช้ร่วมกันได้ทีละฟังก์ชัน เช่น ฟังก์ชันที่เขียนด้วยภาษา C หรือ Fortran และมีแพ็กเกจที่ช่วยให้สามารถเรียกใช้ภาษาอื่นๆ ได้ (ซึ่งไม่ได้ให้ฟังก์ชันที่ส่งออกของ C โดยตรง) เช่น Python (ด้วยPythonCall.jl ), R, [ 112 ] MATLAB, C# (และภาษา .NET อื่นๆ ด้วยDotNET.jlและจากภาษาเหล่านั้นด้วยJdotNET ), JavaScript, Java (และภาษา JVM อื่นๆ เช่นScalaด้วยJavaCall.jl ) และแพ็กเกจสำหรับภาษาอื่นๆ ช่วยให้สามารถเรียกใช้ Julia ได้ เช่น จาก Python, R (ปัจจุบันสามารถเรียกใช้ Julia 1.10.x ได้[ 113 ] ), Rust , Ruby หรือ C# เช่นเดียวกับการใช้ juliacall (ส่วนหนึ่งของPythonCall.jl ) เพื่อเรียกจาก Python และ แพ็คเกจ JuliaCall ที่แตกต่างกันสำหรับการเรียก Julia จนถึงเวอร์ชัน 1.10.x จาก R นอกจาก นี้ Julia ยังถูกใช้สำหรับฮาร์ดแวร์ เช่น การคอมไพล์เป็นVHDLในฐานะ เครื่องมือ สังเคราะห์ระดับสูงเช่นFPGA [ 74 ]
Julia มีแพ็กเกจที่รองรับภาษามาร์กอัป เช่นHTML (และสำหรับHTTP ด้วย ) XML , JSONและBSONและสำหรับฐานข้อมูล (เช่น PostgreSQL, [ 114 ] Mongo, [ 115 ] Oracle รวมถึงสำหรับTimesTen , [ 116 ] MySQL, SQLite, Microsoft SQL Server, [ 115 ] Amazon Redshift, Vertica, ODBC) และการใช้งานเว็บโดยทั่วไป[ 117 ] [ 118 ]
ระบบบรรจุภัณฑ์
Julia มี ตัวจัดการแพ็กเกจในตัวและมีระบบรีจิสทรีเริ่มต้น[ 119 ]แพ็กเกจส่วนใหญ่มักถูกแจกจ่ายในรูปแบบซอร์สโค้ดที่โฮสต์บนGitHubแม้ว่าจะสามารถใช้ทางเลือกอื่นได้เช่นกัน แพ็กเกจยังสามารถติดตั้งในรูปแบบไบนารีโดยใช้อาร์ติแฟกต์ได้[ 120 ]ตัวจัดการแพ็กเกจของ Julia ใช้สำหรับสอบถามและคอมไพล์แพ็กเกจ รวมถึงการจัดการสภาพแวดล้อม รองรับรีจิสทรีแพ็กเกจแบบรวมศูนย์ ทำให้สามารถเพิ่มรีจิสทรีอื่นนอกเหนือจากรีจิสทรีอย่างเป็นทางการได้ในพื้นที่[ 121 ]
การดำเนินการ
แกนหลักของ Julia ถูกนำไปใช้ใน Julia และCร่วมกับC++สำหรับ การพึ่งพา LLVMการแยกวิเคราะห์โค้ด การลดระดับโค้ด และการบูตสแตรปถูกนำไปใช้ใน FemtoLisp ซึ่งเป็น ภาษาถิ่น ของ Schemeจนถึงเวอร์ชัน 1.10 [ 122 ] ตั้งแต่เวอร์ชันนั้นเป็นต้นมา ไลบรารีมาตรฐาน JuliaSyntax.jlที่เป็น Julia ล้วนๆ จะถูกใช้สำหรับการแยกวิเคราะห์ (ในขณะที่ยังสามารถเลือกใช้เวอร์ชันเก่าได้) [ 123 ]ซึ่งช่วยเพิ่มความเร็วและ "ปรับปรุงข้อความแสดงข้อผิดพลาดของตัวแยกวิเคราะห์ในกรณีต่างๆ ได้อย่างมาก" [ 124 ]โครงการโครงสร้างพื้นฐานคอมไพเลอร์ LLVM ถูกใช้เป็นแบ็กเอนด์สำหรับการสร้างโค้ดเครื่อง ที่ปรับให้เหมาะสม สำหรับแพลตฟอร์มที่ใช้กันทั่วไปทั้งหมด โดยมีข้อยกเว้นบางประการไลบรารีมาตรฐานถูกนำไปใช้ใน Julia
แพลตฟอร์มปัจจุบันและอนาคต
Julia มีระดับการสนับสนุนสี่ระดับ โปรดดูตารางการสนับสนุนอย่างเป็นทางการของ Julia เป็นข้อมูลอ้างอิง[1]
ณ เดือนมิถุนายน 2026 Julia มีการสนับสนุนระดับ Tier 1 (สมบูรณ์) สำหรับWindowsและLinux ทั้งแบบ 32 บิตและ 64 บิต รวมถึงMacOS (ทั้ง x64 Intel และApple Siliconโดยธรรมชาติ); การสนับสนุนระดับ Tier 2 (สร้างได้ แต่อาจมีบางการทดสอบที่ไม่ผ่าน) สำหรับ ARM64 บนทั้ง Windows และ Linux, FreeBSDและการจำลอง เช่นWSLและ x86-on-Arm; การสนับสนุนระดับ Tier 3 (อาจสร้างได้) สำหรับสถาปัตยกรรมที่แปลกใหม่ เช่นRISC , PowerPCและ Linux musl; และการสนับสนุนระดับ Tier 4 (เดิม) สำหรับ ARM32 Julia ยังรองรับตัวเร่งฮาร์ดแวร์ผ่านแพ็คเกจภายนอก โดยมีระดับอย่างเป็นทางการ: NVidia CUDAบน Linux (Tier 1), CUDA บน Windows, Apple Metal และ Intel oneAPI บน Linux (Tier 2) และ AMD ROCmและ Intel OneAPIบน Windows (Tier 3) รองรับการทำงานแบบมัลติเธรดโดยธรรมชาติ[ 125 ]
Julia ถูกสร้างขึ้นสำหรับแพลตฟอร์ม ARM หลายแพลตฟอร์ม ตั้งแต่ Raspberry Pi ขนาดเล็กไปจนถึงA64FXที่ใช้ ARM ของFugakuซึ่งเพิ่งเป็นซูเปอร์คอมพิวเตอร์ที่เร็วที่สุดในโลกเมื่อไม่นานมานี้[ 126 ]
Julia มีการสนับสนุนอย่างเป็นทางการ (ระดับ 2) สำหรับ ARMv8 64 บิต ซึ่งหมายความว่าคอมพิวเตอร์Raspberry Pi 64 บิตรุ่นใหม่ (ARMv8-A) สามารถใช้งานร่วมกับ Julia ได้ (เช่น Pi Compute Module 4 ถูกนำไปใช้ในอวกาศโดยรันโค้ด Julia) [ 127 ]สำหรับ Pi หลายรุ่น โดยเฉพาะรุ่นเก่า 32 บิต การคอมไพล์ข้ามแพลตฟอร์มสำหรับโค้ด Julia ของผู้ใช้จะช่วยได้ Pi ARMv7 32 บิตรุ่นเก่าสามารถใช้งานกับ Julia เวอร์ชันเก่าได้ (ปัจจุบันยังคงใช้งานได้ แต่สำหรับ Julia เวอร์ชันล่าสุด โปรดทราบว่ามีการลดระดับการสนับสนุนจากระดับ 3 เป็นระดับ 4 ในปัจจุบัน: "Julia เคยสร้างได้ในอดีต แต่ปัจจุบันทราบว่าสร้างไม่ได้") Raspberry Pi 1 รุ่นดั้งเดิมไม่มีการสนับสนุนอย่างเป็นทางการ (เนื่องจากใช้ARMv6ซึ่งไม่มีระดับการสนับสนุนอย่างเป็นทางการ แม้ว่า Julia เวอร์ชันย่อบางส่วนจะสามารถทำงานบน Pi รุ่นนั้นได้ก็ตาม) [ 128 ] [ 129 ] เวอร์ชัน Pico ของ Pi เป็นที่ทราบกันว่าใช้งานไม่ได้ (เนื่องจากใช้ Arm โปรไฟล์ M ซึ่งไม่ได้ทำงานภายใต้ Linux และยังไม่ได้รับการสนับสนุน) ปัจจุบัน Julia ได้รับการสนับสนุนในRaspbian แล้ว [ 130 ] ในขณะที่การสนับสนุนดีกว่าสำหรับ Pi รุ่นใหม่กว่า เช่น รุ่นที่มี Armv7 หรือใหม่กว่า การสนับสนุน Julia ได้รับการส่งเสริมโดยมูลนิธิ Raspberry Pi [ 131 ]
ในบางแพลตฟอร์ม Julia อาจต้องคอมไพล์จากซอร์สโค้ด (เช่นRaspberry Pi รุ่นดั้งเดิม ) ด้วยตัวเลือกการสร้างเฉพาะ ซึ่งได้ดำเนินการไปแล้ว และมีไบนารีที่สร้างไว้ล่วงหน้าแบบไม่เป็นทางการ (และคำแนะนำในการสร้าง) ให้ใช้งานได้[ 132 ] [ 133 ]
Julia ยังถูกสร้างขึ้นสำหรับ RISC-V 64 บิต(รองรับระดับ 3) [ 134 ]กล่าวคือมีโค้ดสนับสนุนบางส่วนใน Julia หลัก
แม้ว่า Julia จะต้องการระบบปฏิบัติการตามค่าเริ่มต้น และไม่มีการสนับสนุนอย่างเป็นทางการให้ทำงานโดยไม่มีระบบปฏิบัติการ หรือบน แพลตฟอร์ม ระบบฝังตัวเช่นArduinoแต่โค้ด Julia ก็ยังคงทำงานบน Arduino ได้ โดยมีข้อจำกัดบางประการ เช่น บน ไมโครคอนโทรลเลอร์ AVR 8 บิต ( ATmega328P ) ความเร็ว 16 MHz แบบ baremetal ที่มี RAM 2 KB (บวกหน่วยความจำแฟลช 32 KB) [ 135 ] [ 136 ]
การรับเลี้ยงบุตรบุญธรรม
Julia ได้รับการนำไปใช้ในมหาวิทยาลัยหลายแห่ง รวมถึงMIT , Stanford , UC Berkeley , มหาวิทยาลัย Ferdowsi แห่ง Mashhadและมหาวิทยาลัย Cape Townบริษัทเอกชนขนาดใหญ่ในหลายภาคส่วนได้นำภาษานี้ไปใช้ รวมถึงAmazon , IBM , JP Morgan AI Research [ 137 ]และASMLนอกจากนี้ Julia ยังถูกใช้โดยหน่วยงานของรัฐ รวมถึงNASAและFAAตลอดจนห้องปฏิบัติการพลังงานแห่งชาติของสหรัฐอเมริกาทุกแห่ง[ 138 ] [ 139 ]
การคำนวณทางวิทยาศาสตร์และวิศวกรรม
- Amazonสำหรับการคำนวณควอนตัม[ 140 ]และการเรียนรู้ของเครื่องผ่านAmazon SageMaker [ 141 ]
- ASMLสำหรับ การเขียนโปรแกรม แบบเรียลไทม์ที่เข้มงวดด้วยเครื่องจักรของพวกเขา[ 142 ]
- พันธมิตรการสร้างแบบจำลองสภาพภูมิอากาศ[ 143 ]สำหรับการสร้างแบบจำลองการเปลี่ยนแปลงสภาพภูมิอากาศ[ 144 ]
- CERNเพื่อวิเคราะห์ข้อมูลจากเครื่องเร่งอนุภาคขนาดใหญ่ ( การทดลอง LHCb ) [ 145 ] [ 146 ] [ 147 ] [ 148 ] [ 149 ] [ 150 ]
- NASA และJet Propulsion Laboratoryใช้ Julia เพื่อจำลองพลวัตการแยกตัวของยานอวกาศ[ 151 ] [ 152 ] [ 153 ]วิเคราะห์ชุดข้อมูลดาวเคราะห์นอกระบบTRAPPIST [ 154 ] [ 155 ]และวิเคราะห์ ข้อมูล พื้นหลังไมโครเวฟจักรวาลจากบิ๊กแบง[ 156 ]
- INPEของบราซิลสำหรับภารกิจอวกาศและการจำลองดาวเทียม[ 157 ]
- จูเลียยังได้บินในอวกาศด้วย โดยใช้ดาวเทียมขนาดเล็ก[ 127 ]ซึ่งใช้สำหรับโมดูล GPS และจูเลียยังถูกใช้ในการออกแบบกลุ่มดาวเทียม อีกด้วย [ 158 ]
- ฮาร์ดแวร์ ฝังตัวเพื่อวางแผนและดำเนินการบินของโดรนVTOL อัตโนมัติของ ห้องปฏิบัติการวิจัยกองทัพอากาศ สหรัฐฯ [ 159 ]
เภสัชภัณฑ์และการพัฒนายา
Julia ถูกนำมาใช้กันอย่างแพร่หลายในการพัฒนายาในอุตสาหกรรมยา โดยได้รับการนำไปใช้โดยModerna , Pfizer , AstraZeneca , Procter & GambleและUnited Therapeutics [ 160 ] [ 161 ]
เศรษฐศาสตร์ การเงิน และรัฐศาสตร์
- ธนาคารกลางสหรัฐสาขานิวยอร์กได้ใช้ Julia สำหรับการสร้างแบบจำลองเศรษฐกิจมหภาคตั้งแต่ปี 2015 รวมถึงการประมาณการผลกระทบจากCOVID-19ในปี 2021 [ 162 ]
- นอกจากนี้ ธนาคาร กลางของแคนาดายังใช้สำหรับการสร้างแบบจำลองเศรษฐกิจมหภาค ด้วย [ 163 ]
- BlackRockซึ่งเป็นผู้จัดการสินทรัพย์ที่ใหญ่ที่สุดในโลก สำหรับการวิเคราะห์อนุกรมเวลาทางการเงิน[ 164 ]
- Aviva บริษัทประกันภัยทั่วไปที่ใหญ่ที่สุดใน สหราชอาณาจักรสำหรับการคำนวณทางคณิตศาสตร์ประกันภัย[ 164 ]
- บริษัท Mitre Corporationเพื่อตรวจสอบผลการเลือกตั้งที่เผยแพร่[ 165 ]
- โทมัส เจ. ซาร์เจนท์ผู้ได้รับรางวัล โนเบล สาขาการสร้างแบบจำลองเศรษฐศาสตร์มหภาค[ 166 ]
ดูเพิ่มเติม
- การเปรียบเทียบโปรแกรมวิเคราะห์ทางสถิติ
- การเขียนโปรแกรมเชิงอนุพันธ์
- JuMP – ภาษาสร้างแบบจำลองเชิงพีชคณิตสำหรับการเพิ่มประสิทธิภาพทางคณิตศาสตร์ที่ฝังอยู่ในภาษา Julia
- รายชื่อซอฟต์แวร์และเครื่องมือ Julia
- ไพธอน
- โมโจ
- นิม
ลิงก์ภายนอก
- เอกสารประกอบการใช้งาน Julia
อ่านเพิ่มเติม
- นากา, แซนดีป (2017). การเขียนโปรแกรม Julia เบื้องต้น: สำหรับวิศวกรและนักวิทยาศาสตร์ . สปริงเกอร์. ISBN 978-1-4842-3171-5.
- เบซานสัน, เจ; เอเดลแมน, เอ; คาร์ปินสกี้, เอส; ชาห์ วี.บี. (2017) "จูเลีย: แนวทางใหม่ในการคำนวณเชิงตัวเลข" สยาม รีวิว . 59 (1): 65– 98. arXiv : 1411.1607 . CiteSeerX 10.1.1.760.8894 ดอย : 10.1137/141000671 . S2CID 13026838 .
- Joshi, Anshul (2016). Julia for Data Science - สำรวจโลกของวิทยาศาสตร์ข้อมูลตั้งแต่เริ่มต้นด้วย Julia เคียงข้างคุณ . Packt. ISBN 978-1-78355-386-0.
- Tobin A Driscoll และ Richard J. Braun (สิงหาคม 2022). พื้นฐานของการคำนวณเชิงตัวเลข: ฉบับ Julia . SIAM. ISBN 978-1-611977-00-4.
- CT Kelley (2022). การแก้สมการไม่เชิงเส้นด้วยวิธีการวนซ้ำ: ตัวแก้ปัญหาและตัวอย่างใน Julia , SIAM. ISBN 978-1-611977-26-4.
- คาลิชารัน, โนเอล (2021). Julia - Bit by Bit . หัวข้อระดับปริญญาตรีในสาขาวิทยาการคอมพิวเตอร์. สปริงเกอร์. doi : 10.1007/978-3-030-73936-2 . ISBN 978-3-030-73936-2. S2CID 235917112 .
- Clemens Heitzinger (2022): Algorithms with Julia , Springer, ISBN 978-3-031-16559-7.
- Kenneth Lange (มิถุนายน 2025): Algorithms from THE BOOK (ฉบับที่ 2), SIAM, ISBN 978-1-61197-838-4
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- https://juliahub.com
- จูเลียบนGitHub