Julia (programming language)

Julia
ParadigmMulti-paradigm: multiple dispatch (primary paradigm), object-oriented,[1] functional, array, procedural (imperative), structured, reflective, meta, multistaged[2]
Designed byJeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah
DeveloperJeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors[3][4]
First appeared2012 (2012)[5]
Stable release
1.9.3[6] Edit this on Wikidata / 24 August 2023 (24 August 2023) and
1.6.7 LTS[8][9] / 19 July 2022 (2022-07-19)
Preview release
1.10.0-beta2 / 17 August 2023 (2023-08-17) and 1.11.0-DEV with daily updates[7] / 17 August 2023 (2023-08-17) and 1.10.0[10] and 1.6.8 LTS[11] being worked on
Typing disciplineDynamic,[12] inferred, optional, nominative, parametric, strong[12]
Implementation languageJulia, C, C++, LLVM[13], Scheme (parser)
PlatformTier 1: x86-64, IA-32, Apple silicon 64-bit Arm Macs; CUDA 11.0+[14]/Nvidia GPUs (for Linux and Windows)
Tier 2: FreeBSD, 64-bit Arm on Linux
Tier 3: 32-bit Arm, PowerPC, AMD (ROCm) GPUs and oneAPI/Intel's GPUs.
OSLinux, macOS, Windows and FreeBSD
LicenseMIT (mainly),[3] a makefile option omits GPL libraries.[15] 1.10.0-beta2 is non-copyleft by default.
Filename extensions.jl
WebsiteJuliaLang.org
Influenced by

Julia is a high-level, general-purpose[21] dynamic programming language. Its features are well suited for numerical analysis and computational science.[22][23][24][25]

Distinctive aspects of Julia's design include a type system with parametric polymorphism in a dynamic programming language; with multiple dispatch as its core programming paradigm. Julia supports concurrent, (composable) parallel and distributed computing (with or without using MPI[26] or the built-in corresponding[clarification needed][27] to "OpenMP-style" threads[28]), and direct calling of C and Fortran libraries without glue code. Julia uses a just-in-time (JIT) compiler that is referred to as "just-ahead-of-time" (JAOT) in the Julia community, as Julia compiles all code (by default) to machine code before running it.[21][29]

Julia is garbage-collected,[30] uses eager evaluation, and includes efficient libraries for floating-point calculations, linear algebra, random number generation, and regular expression matching. Many libraries are available, including some (e.g., for fast Fourier transforms) that were previously bundled with Julia and are now separate.[31]

Julia can work with other languages, e.g. has special (keyword) support for calling C language libraries; and e.g. for working with Python, R, Rust, C++, SQL with use of extra packages and to work with or even to compile Julia code to JavaScript.

Julia can be compiled to binary executables using a package for it supporting all Julia features. Small binary executables can also be made using a different package but then the Julia runtime is not included in the executable, e.g. down to 9 KB (then without e.g. the garbage collector since it is part of Julia's runtime, i.e. with similar limited capabilities to the C language), for computers or even microcontrollers, such as Arduino with 2 KB of RAM. By default, Julia code depends on the Julia runtime to support all Julia features, e.g. threading, but some (non-idiomatic, to smaller or larger degree) Julia code can be compiled to small executables (with limited Julia capabilities). In both cases no source code needs to be distributed.

Several development tools support coding in Julia, such as integrated development environments (e.g. for Microsoft's Visual Studio Code, an extension is available[32] providing debugging and linting support); with integrated tools, e.g. a profiler (and flame graph support available[33][34] for the built-in one), debugger,[35] and the Rebugger.jl package "supports repeated-execution debugging"[a] and more.[37]

  1. ^ "2. Object-Oriented Programming - Beginning Julia Programming: For Engineers and Scientists [Book]". www.oreilly.com. Retrieved 26 January 2023.
  2. ^ "Smoothing data with Julia's @generated functions". 5 November 2015. Retrieved 9 December 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.
  3. ^ a b "LICENSE.md". GitHub. September 2017.
  4. ^ "Contributors to JuliaLang/julia". GitHub.
  5. ^ a b c d "Why We Created Julia". Julia website. February 2012. Retrieved 7 February 2013.
  6. ^ "Download Julia".
  7. ^ "Set 'VERSION' to '1.11.0-DEV' by DilumAluthge · Pull Request #50314 · JuliaLang/julia". GitHub. Retrieved 3 July 2023.
  8. ^ "GitHub - JuliaLang/julia at release-1.6". GitHub. Retrieved 19 July 2022.
  9. ^ "release-1.6: Backports for 1.6.7 by KristofferC · Pull Request #45319 · JuliaLang/julia". GitHub. Retrieved 16 May 2022.
  10. ^ "[release-1.10] Backports for Julia 1.10.0-x by IanButterworth · Pull Request #50971 · JuliaLang/julia". GitHub. Retrieved 24 August 2023.
  11. ^ "release-1.6: Backports for Julia 1.6.8 by KristofferC · Pull Request #46116 · JuliaLang/julia". GitHub. Retrieved 4 August 2023.
  12. ^ a b Engheim, Erik (17 November 2017). "Dynamically Typed Languages Are Not What You Think". Medium. Retrieved 27 January 2021.
  13. ^ "Building Julia (Detailed)". GitHub. September 2017. Retrieved 16 May 2022.
  14. ^ "NVIDIA CUDA ⋅ JuliaGPU". juliagpu.org. Retrieved 17 January 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
  15. ^ "Introduce USE_GPL_LIBS Makefile flag to build Julia without GPL libraries". GitHub. 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.
  16. ^ Stokel-Walker, Chris. "Julia: The Goldilocks language". Increment. Stripe. Retrieved 23 August 2020.
  17. ^ "JuliaCon 2016". JuliaCon. Retrieved 6 December 2016. He has co-designed the programming language Scheme, which has greatly influenced the design of Julia
  18. ^ a b c d "Home · The Julia Language". docs.julialang.org. Retrieved 15 August 2018.
  19. ^ "Programming Language Network". GitHub. Archived from the original on 20 December 2020. Retrieved 6 December 2016.
  20. ^ "What Should We Call the Language of Mathematica?—Stephen Wolfram Writings". writings.stephenwolfram.com. Retrieved 24 June 2021.
  21. ^ a b Fischer, Keno; Nash, Jameson. "Growing a Compiler - Getting to Machine Learning from a General Purpose Compiler - JuliaHub". juliahub.com. Retrieved 16 November 2022.
  22. ^ Bryant, Avi (15 October 2012). "Matlab, R, and Julia: Languages for data analysis". O'Reilly Strata. Archived from the original on 26 April 2014.
  23. ^ Singh, Vicky (23 August 2015). "Julia Programming Language – A True Python Alternative". Technotification.
  24. ^ Krill, Paul (18 April 2012). "New Julia language seeks to be the C for scientists". InfoWorld.
  25. ^ Finley, Klint (3 February 2014). "Out in the Open: Man Creates One Programming Language to Rule Them All". Wired.
  26. ^ "GitHub - JuliaParallel/MPI.jl: MPI wrappers for Julia". Parallel Julia. Retrieved 22 September 2019.
  27. ^ "Questions about getting started with parallel computing". JuliaLang. 16 June 2019. Retrieved 8 October 2019.
  28. ^ "Julia and Concurrency". JuliaLang. 24 June 2019. Retrieved 22 September 2019.
  29. ^ "Sysimages · PackageCompiler". julialang.github.io. Retrieved 10 April 2023.
  30. ^ "Suspending Garbage Collection for Performance...good idea or bad idea?". Groups.google.com. Retrieved 31 May 2017.
  31. ^ now available with using FFTW in current versions (That dependency, is one of many which, was moved out of the standard library to a package because it is GPL licensed, and thus is not included in Julia 1.0 by default.) "Remove the FFTW bindings from Base by ararslan · Pull Request #21956 · JuliaLang/julia". GitHub. Retrieved 1 March 2018.
  32. ^ "Julia for Visual Studio Code". www.julia-vscode.org. Retrieved 17 July 2022.
  33. ^ Holy, Tim (13 September 2019). "GitHub - timholy/ProfileView.jl: Visualization of Julia profiling data". GitHub. Retrieved 22 September 2019.
  34. ^ Gregg, Brendan (20 September 2019). "GitHub - brendangregg/FlameGraph: Stack trace visualizer". GitHub. Retrieved 22 September 2019.
  35. ^ "A Julia interpreter and debugger". julialang.org. Retrieved 10 April 2019.
  36. ^ "[ANN] Rebugger: interactive debugging for Julia 0.7/1.0". JuliaLang. 21 August 2018. Retrieved 10 April 2019.
  37. ^ "Home · Rebugger.jl". timholy.github.io. Retrieved 10 April 2019.


Cite error: There are <ref group=lower-alpha> tags or {{efn}} templates on this page, but the references will not show without a {{reflist|group=lower-alpha}} template or {{notelist}} template (see the help page).


From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Nelliwinne