Julia (bahasa pemrograman)

bahasa pemrograman dinamis berperforma tinggi

Julia adalah bahasa pemrograman tingkat tinggi, tujuan umum, dan dinamis.[12] Bahasa pemrograman ini didesain agar cepat dan produktif,[13] dan digunakan untuk ilmu data, kecerdasan buatan, pemelajaran mesin, modeling dan simulasi, dan biasanya digunakan dalam analisis numerik dan ilmu komputasi.[14][15][16]

Julia
Edit nilai pada Wikidata
ParadigmaMulti-paradigma: pengiriman ganda (paradigma utama), fungsional, array, prosedural (imperatif), terstruktur, reflektif, meta, bertingkat
Dirancang olehJeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah
PengembangJeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors[1][2]
Rilis perdana2012; 12 tahun lalu (2012)[3]
Rilis stabil
1.11.2[4] Sunting di Wikidata / 1 Desember 2024
Tipe sistemDinamis, inferens, opsional, nominal, parametrik, kuat
Implementasi dariJulia, C, C++, LLVM,[5] Scheme (digunakan pengurai; hampir secara eksklusif)
PlatformTier 1: x86-64, IA-32, Apple silicon (ARM64) Mac; Nvidia GPU/CUDA (di Linux)[6]
Tier 2: FreeBSD, 64-bit Arm di Linux, Apple GPU; Intel GPU/OneAPI 6.2+ dan Nvidia GPU (di Windows)
Tier 3: 32-bit Arm; 64-bit RISC-V dan PowerPC; dan AMD GPU/ROCm 5.3+.
Sistem operasiLinux, macOS, Windows dan FreeBSD
LisensiMIT
Ekstensi nama berkas.jl
Situs webJuliaLang.org
Repositorijulialang.org
Terpengaruh oleh
Sunting kotak info
Sunting kotak info • L • B
Info templat
Bantuan penggunaan templat ini

Aspek yang membedakan Julia adalah sistem tipe dengan polimorfisme parametrik dan penggunaan pengiriman ganda sebagai paradigma pemrograman utama. Selain itu, Julia juga menggunakan kompilator just-in-time (JIT)[12][17], dukungan kompilasi sebelumnya[18][19][20] dan pengumpulan sampah yang efisien.[21] Julia juga tidak mendukung kelas dengan metode terwadahi dan mengandalkan structs dengan fungsi atau metode umum yang tidak terikat pada struktur tersebut.

Secara bawaan, Julia berjalan seperti bahasa scripting, menggunakan waktu eksekusinya dan memperbolehkan interaksi.[18] Namun, program atau kode sumber Julia dapat juga secara opsional dikirim ke pengguna dalam satu berkas yang siap dijalankan, tanpa perlu apa pun untuk dipasang di komputer pengguna.[22] Program Julia juga dapat dikompilasi secara terpisah menjadi program yang dapat dieksekusi, tanpa perlu distribusi kode sumber. Kompilasi tersebut tidak dibutuhkan untuk kecepatan eksekusi, tapi dapat mengurangi biaya eksekusi awal. Hal ini karena program Julia juga dikompilasi ketika dijalankan secara interaktif.

Program Julia dapat menggunakan kembali pustaka dari bahasa lain, seperti C atau Rust, dengan cara memanggilnya. Selain itu, pustaka Julia juga dapat dipanggil melalui bahasa lain, seperti Python dan R, dengan beberapa paket Julia telah dibuat dalam bentuk pustaka dalam bahasa tersebut. Pemanggilan pustaka dalam dua arah juga telah diimplementasikan dalam banyak bahasa, termasuk C++.

Interaksi

sunting

Distribusi resmi Julia memasukkan baris perintah interaktif dengan gelung baca-evaluasi-cetak (bahasa Inggris: read-eval-print loop; REPL),[23] dengan riwayat yang dapat dicari, Penyelesaian baris perintah, dan mode bantuan dan cangkang,[24] yang dapat digunakan untuk bereksperimen dan mencoba kode secara cepat.[25] Potongan kode berikut merepresentasikan sesi contoh di mana untaian dapat dirangkai secara otomatis dengan println:

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!

Kemampuan REPL memberikan pengguna akses ke cangkang sistem dan ke mode bantuan masing-masing dengan menekan tombol ; atau ? setelah masukan (mendahului setiap perintah). REPL juga menyimpan riwayat perintah, termasuk riwayat antar sesi.[26] Kode dapat diuji coba dalam sesi interaktif Julia atau disimpan dalam berkas dengan ekstensi .jl dan dijalankan dengan perintah baris per baris dengan mengetik:[27]

$ julia <nama_berkas>

Julia menggunakan kode UTF-8 dan LaTeX, yang memungkinkan Julia untuk mendukung simbol matematika umum sebagai operator, seperti ∈ sebagai operator himpunan masuk, yang dapat diketik dengan memasukkan \in dan menekan Tab ↹. Selain itu, pengguna juga dapat melakukan salin-tempel simbol, seperti √ dan ∛ untuk fungsi akar kuadrat dan akar pangkat tiga. Julia mendukung rilis mayor Unicode 15.0 terbaru. Julia 1.11-DEV mendukung versi Unicode 15.1[28])[29] untuk bahasa yang digunakan, bahkan untuk kode sumber seperti nama variabel walaupun direkomendasikan untuk menggunakan bahasa Inggris untuk kode publik, seperti nama paket.

Julia didukung oleh Jupyter, sebuah lingkungan buku catatan daring interaktif.[30] Selain itu, terdapat juga sebuah "buku catatan reaktif" Pluto.jl yang menyimpan buku catatan dalam berkas Julia murni, sebagai salah satu opsi pengganti untuk Jupyter.[31] Sebagai tambahan, sistem publikasi Quarto milik Posit (sebelum RStudio Inc.) mendukung Julia, Python, R, dan Observable JavaScript. Bahasa-bahasa tersebut didukung secara resmi oleh Posit, bahkan dapat digunakan bersamaan dalam buku catatan yang sama; bahasa lain didukung secara tidak resmi.[32][33]

REPL dapat dikembangkan dengan mode tambahan menggunakan paket, seperti mode SQL[34] untuk akses basis data, dan RCall.jl yang menambahkan mode R untuk bekerja dengan bahasa pemrograman R.[35]

Penggunaan dengan bahasa lain

sunting

Julia secara praktik interoperabel dengan bahasa lain, bahkan untuk mayoritas 20 bahasa terpopuler. Julia dapat digunakan untuk memanggil fungsi pustaka bersama secara sendiri-sendiri, seperti yang ditulis dengan C atau Fortran. Terdapat juga paket yang tersedia untuk memanggil bahasa lain (yang tidak memiliki fungsi yang diekspor dari C secara langsung), seperti Python (dengan PythonCall.jl), R,[36] MATLAB, C# (dan bahasa .NET lainnya dengan DotNET.jl), JavaScript, dan Java (dan bahasa JVM lainnya, seperti Scala dengan JavaCall.jl). Selain itu, Julia juga memiliki paket untuk memanggil Julia dari bahasa lain, seperti Python, R,[37] Rust, Ruby, atau C#. Julia juga digunakan untuk perangkat keras, dengan kode dikompilasi ke VHDL sebagai alat sintesis tingkat tinggi, misalnya FPGA.[38]

Julia memiliki paket yang mendukung bahasa markah, seperti HTML (dan juga HTTP), XML, JSON, dan BSON. Paket-paket lain juga tersedia, misalnya untuk mendukung basis data, seperti PostgreSQL,[39] Mongo,[40], Oracle, termasuk TimesTen,[41] MySQL, SQLite, Microsoft SQL Server,[40] Amazon Redshift, Vertica, dan ODBC. Julia juga dapat digunakan dalam penggunaan web secara umum.[42][43]

Sistem paket

sunting

Julia memiliki manajer paket bawaan yang dimasukkan dalam sistem registrasi bawaan.[44] Paket sering didistribusikan sebagai kode sumber yang dihos pada GitHub, walaupun hos alternatif dapat digunakan juga. Paket juga dapat dipasang secara biner, menggunakan artifak.[45] Paket manajer Julia digunakan untuk mengueri dan mengompilasi paket, sekaligus untuk mengelola lingkungan. Registrasi paket bebas juga didukung, memungkinkan registrasi paket di luar paket resmi yang ditambahkan secara lokal.[46]

Referensi

sunting
  1. ^ "LICENSE.md". GitHub. September 2017. Diarsipkan dari versi asli tanggal 23 Januari 2021. Diakses tanggal 20 Oktober 2014. 
  2. ^ "Contributors to JuliaLang/julia". GitHub. Diarsipkan dari versi asli tanggal 23 Januari 2021. Diakses tanggal 20 Oktober 2014. 
  3. ^ a b c d Jeff Bezanson; Stefan Karpinski; Viral Shah; Alan Edelman (Februari 2012). "Why We Created Julia". Julia website. Diarsipkan dari versi asli tanggal 2 Mei 2020. Diakses tanggal 7 Februari 2013. 
  4. ^ https://julialang.org/downloads/.
  5. ^ "Building Julia (Detailed)". GitHub. September 2017. Diarsipkan dari versi asli tanggal 16 Mei 2022. Diakses tanggal 16 Mei 2022. 
  6. ^ "NVIDIA CUDA ⋅ JuliaGPU". juliagpu.org. Diarsipkan dari versi asli tanggal 29 Januari 2022. Diakses tanggal 17 Januari 2022. we have shown the performance to approach and even sometimes exceed that of CUDA C on a selection of applications from the Rodinia benchmark suite 
  7. ^ Stokel-Walker, Chris. "Julia: The Goldilocks language". Increment. Stripe. Diarsipkan dari versi asli tanggal 9 November 2020. Diakses tanggal 23 Agustus 2020. 
  8. ^ "JuliaCon 2016". JuliaCon. Diarsipkan dari versi asli tanggal 4 Maret 2017. Diakses tanggal 6 Desember 2016. He has co-designed the programming language Scheme, which has greatly influenced the design of Julia 
  9. ^ a b c d "Home · The Julia Language". docs.julialang.org (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 11 Januari 2021. Diakses tanggal 2018-08-15. 
  10. ^ "Programming Language Network". GitHub. Diarsipkan dari versi asli tanggal 20 Desember 2020. Diakses tanggal 6 Desember 2016. 
  11. ^ "What Should We Call the Language of Mathematica?—Stephen Wolfram Writings". writings.stephenwolfram.com (dalam bahasa Inggris). 12 Februari 2013. Diarsipkan dari versi asli tanggal 4 September 2024. Diakses tanggal 24 Juni 2021. 
  12. ^ a b Fischer, Keno; Nash, Jameson (19 Februari 2019). "Growing a Compiler - Getting to Machine Learning from a General Purpose Compiler". Julia Hub. Diarsipkan dari versi asli tanggal 23 Februari 2024. Diakses tanggal 16 November 2022. 
  13. ^ "'Why We Created Julia' Turns Ten Years Old". JuliaHub. Diarsipkan dari versi asli tanggal 16 November 2022. Diakses tanggal 16 November 2022. 
  14. ^ Bryant, Avi (15 Oktober 2012). "Matlab, R, and Julia: Languages for data analysis". O'Reilly Strata. Diarsipkan dari versi asli tanggal 26 April 2014. 
  15. ^ Krill, Paul (18 April 2012). "New Julia language seeks to be the C for scientists". InfoWorld. Diarsipkan dari versi asli tanggal 13 September 2014. Diakses tanggal 4 Juli 2021. 
  16. ^ Finley, Klint (3 Februari 2014). "Out in the Open: Man Creates One Programming Language to Rule Them All". Wired. Diarsipkan dari versi asli tanggal 20 Desember 2016. Diakses tanggal 8 Maret 2017. 
  17. ^ "Sysimages · PackageCompiler". julialang.github.io. Diarsipkan dari versi asli tanggal 10 April 2023. Diakses tanggal 10 April 2023. 
  18. ^ a b "GitHub - JuliaLang/PackageCompiler.jl: Compile your Julia Package". The Julia Language. 14 Februari 2019. Diarsipkan dari versi asli tanggal 23 Maret 2019. Diakses tanggal 15 Februari 2019. 
  19. ^ "julia/doc/src/devdocs/aot.md at master · JuliaLang/julia". GitHub (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 3 Oktober 2023. Diakses tanggal 3 Oktober 2023. 
  20. ^ "System Image Building · The Julia Language". docs.julialang.org. Diakses tanggal 3 Oktober 2023. 
  21. ^ "Suspending Garbage Collection for Performance...good idea or bad idea?". (Web link).
  22. ^ "AppBundler.jl". PeaceFounder. 13 Desember 2023. Diarsipkan dari versi asli tanggal 18 Desember 2023. Diakses tanggal 18 Desember 2023. 
  23. ^ "The Julia REPL · The Julia Language". docs.julialang.org. Diarsipkan dari versi asli tanggal 22 September 2019. Diakses tanggal 22 September 2019. 
  24. ^ "Introducing Julia/The REPL - Wikibooks, open books for an open world". en.wikibooks.org. Diarsipkan dari versi asli tanggal 23 June 2019. Diakses tanggal 2019-09-22. you can install the Julia package OhMyREPL.jl [..] which lets you customize the REPL's appearance and behaviour 
  25. ^ "Getting Started · The Julia Language". docs.julialang.org (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 10 August 2019. Diakses tanggal 2018-08-15. 
  26. ^ "Julia Documentation". JuliaLang.org. Diarsipkan dari versi asli tanggal 17 Desember 2016. Diakses tanggal 18 November 2014. 
  27. ^ "Learn Julia in Y Minutes". Learnxinyminutes.com. Diarsipkan dari versi asli tanggal 15 Agustus 2018. Diakses tanggal 31 Mei 2017. 
  28. ^ "Unicode 15.1 support by stevengj · Pull Request #253 · JuliaStrings/utf8proc". GitHub (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 22 Januari 2024. Diakses tanggal 22 Januari 2024. 
  29. ^ "support Unicode 15 via utf8proc 2.8 by stevengj · Pull Request #47392 · JuliaLang/julia". GitHub (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 3 November 2022. Diakses tanggal 3 November 2022. 
  30. ^ "Project Jupyter". Diarsipkan dari versi asli tanggal 29 Juni 2017. Diakses tanggal 19 Agustus 2015. 
  31. ^ Boudreau, Emmett (16 Oktober 2020). "Could Pluto Be A Real Jupyter Replacement?". Medium (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 12 April 2023. Diakses tanggal 8 Desember 2020. 
  32. ^ Machlis, Sharon (27 Juli 2022). "RStudio changes name to Posit, expands focus to include Python and VS Code". InfoWorld (dalam bahasa Inggris). Diakses tanggal 18 Januari 2023. 
  33. ^ "Heads up! Quarto is here to stay. Immediately combine R & Python in your next document: An extension on a recent post". ds-econ (dalam bahasa Inggris). 20 Juli 2022. Diarsipkan dari versi asli tanggal 31 Januari 2023. Diakses tanggal 18 Januari 2023. 
  34. ^ Foster, Chris (4 April 2022). "SQLREPL.jl". GitHub. Diarsipkan dari versi asli tanggal 27 September 2022. Diakses tanggal 27 September 2022. 
  35. ^ "Getting Started · RCall.jl". juliainterop.github.io. Diarsipkan dari versi asli tanggal 4 September 2024. Diakses tanggal 27 September 2022. 
  36. ^ "Julia crashes on installation of the RCall module". Julia Programming Language (dalam bahasa Inggris). 21 Oktober 2024. Diakses tanggal 22 Oktober 2024. For me RCall loads without issue on Julia 1.11 on MacOS 
  37. ^ "juliacall fails in julia 1.11 with 'undefined symbol: jl_stdout_obj' · Issue #234 · Non-Contradiction/JuliaCall". GitHub (dalam bahasa Inggris). Diakses tanggal 22 Oktober 2024. 
  38. ^ Biggs, Benjamin; McInerney, Ian; Kerrigan, Eric C.; Constantinides, George A. (2022). "High-level Synthesis using the Julia Language". arΧiv:2201.11522 [cs.SE]. "We present a prototype Julia HLS tool, written in Julia, that transforms Julia code to VHDL.". 
  39. ^ "Home · LibPQ.jl". invenia.github.io. Diarsipkan dari versi asli tanggal 8 November 2022. Diakses tanggal 8 November 2022. 
  40. ^ a b "Home · FunSQL.jl". docs.juliahub.com. Diarsipkan dari versi asli tanggal 8 November 2022. Diakses tanggal 8 November 2022. 
  41. ^ Hood, Doug (21 Oktober 2022). "Using Julia with Oracle Databases". Diarsipkan dari versi asli tanggal 8 November 2022. Diakses tanggal 8 November 2022. 
  42. ^ "Genie Builder - Visual Studio Marketplace". marketplace.visualstudio.com (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 8 November 2022. Diakses tanggal 2022-11-08. 
  43. ^ "How to Build Your First Web App in Julia with Genie.jl". freeCodeCamp.org (dalam bahasa Inggris). 1 Februari 2022. Diarsipkan dari versi asli tanggal 8 November 2022. Diakses tanggal 8 November 2022. 
  44. ^ "JuliaRegistries / General". GitHub. Diarsipkan dari versi asli tanggal 3 Agustus 2020. Diakses tanggal 30 April 2020. 
  45. ^ "Pkg.jl - Artifacts". Diarsipkan dari versi asli tanggal 2 Agustus 2020. Diakses tanggal 2020-06-04. 
  46. ^ "Pkg.jl - Registries". Diarsipkan dari versi asli tanggal 13 Juni 2020. Diakses tanggal 30 April 2020. 

Bacaan lebih lanjut

sunting

Pranala luar

sunting