Julia: A Fast Dynamic Language For Technical Computing
Julia is a dynamic language in the tradition of Lisp, Perl, Python and Ruby. It aims to advance expressiveness and convenience for scientific and technical computing beyond that of environments like Matlab and NumPy, while simultaneously closing the performance gap with compiled languages like C, C++, Fortran and Java.
Most high-performance dynamic language implementations have taken an existing interpreted language and worked to accelerate its execution. In creating Julia, we have reconsidered the basic language design, taking into account the capabilities of modern JIT compilers and the specific needs of technical computing. Our design includes:
- Multiple dispatch as the core language paradigm.
- Exposing a sophisticated type system including parametric dependent types.
- Dynamic type inference to generate fast code from programs with no declarations.
- Aggressive specialization of generated code for types encountered at run-time.
Julia feels light and natural for data exploration and algorithm prototyping, but has performance that lets you deploy your prototypes.
Stefan Karpinski is one of the co-creators and core developers of the Julia language. He is an applied mathematician and data scientist by trade, having worked at Akamai, Citrix Online, and Etsy, but currently is employed as a researcher at MIT, focused on advancing Julia’s design, implementation, documentation, and community. He received an AB in Mathematics from Harvard in 2000, and is long overdue to finish his PhD in Computer Science at UCSB.