|Paradigm||Multi-paradigm: multiple dispatch (primary paradigm), procedural, functional, meta, multistaged|
|Designed by||Jeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah|
|Developer||Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors|
|Stable release||1.8.5 / 8 January 2023 and|
1.6.6 LTS / 28 March 2022
|Typing discipline||Dynamic, strong, nominative, parametric, optional|
|Implementation language||Julia, C, C++, Scheme, LLVM|
|Platform||Tier 1: x86-64, IA-32; CUDA 10.1+/Nvidia GPUs (for Linux and Windows)|
Tier 2: 64-bit ARM, 32-bit Windows (64-bit is tier 1)
Tier 3: 32-bit ARM, PowerPC, AMD (ROCm) GPUs.
|OS||Linux, macOS, Windows and FreeBSD|
|License||MIT (core), GPL v2; a makefile option omits GPL libraries|
Julia is a high-performance programming language, which is also meant to be easy (was considered a contradictory goal before), originally made with technical computing or with science in mind (like MATLAB), but it's a fully general-purpose language similar to e.g. Python, can be used for e.g. web development to building artificial intelligence.
Julia is a high-level language, which means a programmer can focus on what to do, but does not require knowledge of computer hardware. Writing programs in Julia takes less time than in some other languages.
Some state-of-the-art software has already been written in Julia, because it's considered easier to do then in the other popular languages. Some of it can also be used from other languages like Python or R. Julia was designed to be unusually easy to work with other languages, i.e. to benefit from code already written in other languages, to "reuse" their code.
Some technical details[change | change source]
Julia is a high-level, high-performance, dynamic programming language. While it is a general-purpose language and can be used to write any application, many of its features are well suited for numerical analysis and computational science.
Distinctive aspects of Julia's design include multiple dispatch as its core programming paradigm. Julia supports concurrent, (composable) parallel and distributed computing. Julia uses a just-in-time (JIT) compiler, as Julia compiles code to machine code before running it.
Julia supports calling C (and also e.g. Fortran or Rust) without glue code, using the keyword
ccall. But it's also possible to call e.g. C++, Python, Java, MATLAB and R with help of Julia libraries for that purpose, and it's also possible to use those languages to call Julia, to reuse Julia libraries (that some of are state-of-the-art, such as SciML, made for scientific machine learning, which includes e.g. that DifferentialEquations.jl package).
References[change | change source]
- "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.
- "LICENSE.md". GitHub. September 2017.
- "Contributors to JuliaLang/julia". GitHub.
- "Releases · JuliaLang/julia". GitHub. Retrieved 30 March 2022.
- "release-1.6: Backports for 1.6.6 by KristofferC · Pull Request #43735 · JuliaLang/julia". GitHub. Retrieved 19 March 2022.
- Engheim, Erik (17 November 2017). "Dynamically Typed Languages Are Not What You Think". Medium. Retrieved 27 January 2021.
- "Julia". Julia. NumFocus project. Retrieved 9 December 2016.
Julia's Base library, largely written in Julia itself, also integrates mature, best-of-breed open source C and Fortran libraries for ...
- "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
- "Non-GPL Julia?". Groups.google.com. Retrieved 31 May 2017.
- "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.
- "Julia available in Raspbian on the Raspberry Pi".
Julia works on all the Pi variants, we recommend using the Pi 3.
- Bryant, Avi (15 October 2012). "Matlab, R, and Julia: Languages for data analysis". O'Reilly Strata. Archived from the original on 26 April 2014.
- Singh, Vicky (23 August 2015). "Julia Programming Language – A True Python Alternative". Technotification.
- Krill, Paul (18 April 2012). "New Julia language seeks to be the C for scientists". InfoWorld.
- Finley, Klint (3 February 2014). "Out in the Open: Man Creates One Programming Language to Rule Them All". Wired.
- Fischer, Keno; Nash, Jameson. "Growing a Compiler - Getting to Machine Learning from a General Purpose Compiler". Julia Computing Blog. Archived from the original on 11 April 2019. Retrieved 11 April 2019.
- "Creating a sysimage". PackageCompiler Documentation. Archived from the original on 23 July 2021. Retrieved 1 May 2022.
- "Suspending Garbage Collection for Performance...good idea or bad idea?". Groups.google.com. Retrieved 31 May 2017.
Further reading[change | change source]
- Nagar, Sandeep (2017). Beginning Julia Programming: For Engineers and Scientists. Springer. ISBN 9781484231715.
- Bezanson, J; Edelman, A; Karpinski, S; Shah, V. B (2017). "Julia: A fresh approach to numerical computing". SIAM Review. 59 (1): 65–98. arXiv:1411.1607. CiteSeerX 10.1.1.760.8894. doi:10.1137/141000671. S2CID 13026838.
- Joshi, Anshul (2016). Julia for Data Science － Explore the world of data science from scratch with Julia by your side. Packt. ISBN 9781783553860.