I’ve submitted the following proposal for the main track, comments welcome:
The Julia programming language
subtitle: A C++ programmer’s perspective
The Julia programming language is a high-level language, primarily developed for scientific computing. It uses just-in-time compilation to get a performance level that is comparable to C/C++. It was designed to overcome the “two-language problem”, where a proof-of-concept in a high-level language needs to be translated to a compiled language by specialists to get the required performance. In this talk, the main features of the language will be highlighted from the perspective of a “convert” coming from C++. The aspect of interoperability with existing C/C++ libraries will also be discussed in some detail.
Julia is a typed language, where users can build their own types and write functions that operate on them. In this system, there are no “privileged” types, i.e. user defined types are treated equally to predefined types. A central concept in the system is “multiple dispatch”, where the function that is to be called is decided based on the passed arguments, thus making it possible to overload existing functions for new types. The decision on what function to call can happen both dynamically and at compile time, depending on the information available at compile time. As will be shown, this system, while very simple on the surface, results in surprisingly elegant and fast code.
The LLVM compiler is used as a just-in-time compiler, resulting in many cases in runtime performance that is on-par with equivalent C++ code. This allow prototypes to be developed quickly into production code running at speeds close to what would be achieved with more common high-performance languages such as C/C++ or Fortran, thus solving the “two-language problem”.
To ensure compatibility with existing software, Julia has a well-developed C interface. On top of this the CxxWrap.jl package was built to interface with C++ in a similar fashion to what the Boost.Python library does for Python. We will present some examples using this approach, as well as an analysis of the overhead and a comparison between C++ and Julia for some typical applications.
While the Julia language is initially targeted at a scientific programming audience, it shows promise as a general programming language, so this talk should appeal to a wide audience.