Julia: Numerical Applications Pushing the Limits of Language Design
Jeff Bezanson & Stefan Karpinski
MIT

@jeffbezanson & @stefankarpinski


Abstract

A major goal of Julia is allowing people to write fast, generic numeric libraries cleanly and easily. In the process of designing the language, we have found that this requires some surprisingly advanced language features, including:

  • an expressive language of types
  • a theory of subtyping
  • a powerful multiple dispatch system
  • Lisp-style metaprogramming and macros
  • carefully designed equality, ordering and hashing
  • easy-to-use, implicit staged programming

These features have enabled high-performance, general libraries for problems such as optimization (think logistics, not compilers), numerical integration, and automatic differentiation, among others. We will give hands on examples of the kinds of problems we’ve encountered and how we’ve solved them, while highlighting recent developments in the language.

Bio

Jeff and Stefan are co-creators of the Julia programming language, as well as co-founders of Julia Computing, Inc. (juliacomputing.com), a company providing support, training and consulting for Julia and its ecosystem.