Julia (programming language)

From Simple English Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Julia
Julia Programming Language Logo.svg
ParadigmMulti-paradigm: multiple dispatch (primary paradigm), procedural, functional, meta, multistaged[1]
Designed byJeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah
DeveloperJeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors[2][3]
First appeared2012; 10 years ago (2012)
Stable release1.7.3 Edit this on Wikidata / 25 May 2022; 39 days ago (25 May 2022) and
1.6.6 LTS[4][5] / 28 March 2022; 3 months ago (2022-03-28)
Typing disciplineDynamic,[6] strong,[6] nominative, parametric, optional
Implementation languageJulia, C, C++, Scheme, LLVM[7]
PlatformTier 1: x86-64, IA-32; CUDA 10.1+[8]/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.
OSLinux, macOS, Windows and FreeBSD
LicenseMIT (core),[2] GPL v2;[7][9] a makefile option omits GPL libraries[10]
Filename extensions.jl
WebsiteJuliaLang.org

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.

Julia drew inspiration from other programming languages like Python, MATLAB, R, Ruby, Perl, Mathematica, Lisp, and C.

Julia works on the Raspberry Pi computer, i.e. is supported in Raspbian.[11]

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.[12][13][14][15]

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.[16][17]

Julia is garbage-collected,[18] and includes efficient libraries for floating-point calculations, linear algebra, random number generation, and regular expression matching.

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]

  1. "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.
  2. 2.0 2.1 "LICENSE.md". GitHub. September 2017.
  3. "Contributors to JuliaLang/julia". GitHub.
  4. "Releases · JuliaLang/julia". GitHub. Retrieved 30 March 2022.
  5. "release-1.6: Backports for 1.6.6 by KristofferC · Pull Request #43735 · JuliaLang/julia". GitHub. Retrieved 19 March 2022.
  6. 6.0 6.1 Engheim, Erik (17 November 2017). "Dynamically Typed Languages Are Not What You Think". Medium. Retrieved 27 January 2021.
  7. 7.0 7.1 "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 ...
  8. "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
  9. "Non-GPL Julia?". Groups.google.com. Retrieved 31 May 2017.
  10. "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.
  11. "Julia available in Raspbian on the Raspberry Pi". Julia works on all the Pi variants, we recommend using the Pi 3.
  12. Bryant, Avi (15 October 2012). "Matlab, R, and Julia: Languages for data analysis". O'Reilly Strata. Archived from the original on 26 April 2014.
  13. Singh, Vicky (23 August 2015). "Julia Programming Language – A True Python Alternative". Technotification.
  14. Krill, Paul (18 April 2012). "New Julia language seeks to be the C for scientists". InfoWorld.
  15. Finley, Klint (3 February 2014). "Out in the Open: Man Creates One Programming Language to Rule Them All". Wired.
  16. 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.
  17. "Creating a sysimage". PackageCompiler Documentation. Archived from the original on 23 July 2021. Retrieved 1 May 2022.
  18. "Suspending Garbage Collection for Performance...good idea or bad idea?". Groups.google.com. Retrieved 31 May 2017.

Further reading[change | change source]

Other websites[change | change source]