About the Julia programming language
Julia is a high-level, high-performance dynamic programming language for numerical computing. It was designed to be a flexible dynamic language, appropriate for scientific and numerical computing, with performance comparable to traditional statically-typed languages.
Work on creating Julia begin in 2009 by Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and Alan Edelman. They were users of MatLab, List, Ruby, Python, Mathematica, R, and C, and loved those languages, but wanted more. They wanted:
- the speed of C/C++
- the dynamism of Ruby
- the general purpose nature and easy of coding of Python
- macros like Lisp
- statistic power in R
- the string processing in Perl
- the mathemtical capabilities in Matlab
- the distributed processing ability of Hadoop
- and for it all to be open source.
Julia is said to posses the "The usability of Python and the speed of C++.
It's an MIT-created language they intended "for those who want it all".
"MIT says Julia is the only high-level dynamic programming language in the "petaflop club," having been used to simulate 188 million stars, galaxies, and other astronomical objects on Cori, the world's 10th-most powerful supercomputer. The simulation ran in just 14.6 minutes, using 650,000 Intel Knights Landing Xeon Phi cores to handle 1.5 petaflops (quadrillion floating-point operations per second)." Source: TechRepublic
Among the key features of Julia are:
- Multiple dispatch: providing the ability to define function behavior across many combinations of argument types
- Dynamic type system: types for documentation, optimization, and dispatch
- Good performance, approaching that of statically-compiled languages like C. (In 2017, Julia joined C, C++, and Fortran as high-level languages in which petaflop computations have been written).
- Built-in package manager
- Lisp-like macros and other metaprogramming facilities
- Call Python functions: use the PyCall package
- Call C functions directly: no wrappers or special APIs
- Powerful shell-like capabilities for managing other processes
- Designed for parallelism and distributed computation
- Coroutines: lightweight “green” threading
- User-defined types are as fast and compact as built-ins
- Automatic generation of efficient, specialized code for different argument types
- Elegant and extensible conversions and promotions for numeric and other types
- Efficient support for Unicode, including but not limited to UTF-8
- MIT licensed: free and open source
Julia showed up on Stack Overflow's Most Loved Lanuage list from their 2018 Developers Survey.