Developed at MIT, with a focus on fast numerical computing, Julia has a syntactical complexity similar to that of Python or Matlab but a performance orders of magnitude faster. We will present an introduction to the language, followed by a sampling of some of our favourite packages. The focus is on which aspects of Julia are currently ready for use by numerical computing and data scientists.
Julia is a new and exciting language, sponsored in part by NumFocus, and developed at MIT. With a focus on fast numerical computing, it has a syntactical complexity similar to that of Python or Matlab but a performance orders of magnitude faster. This means you can quickly code up your ideas in a scripting language, but you don't need to switch langauges when you later need to squeeze out every last ounce of performance on production data.
Should you stick with Python, or is it time to move to Julia?
We will try to answer this question by presenting an introduction to the language, followed by a sampling of packages from the most important projects relevant to data and numerical science. Python has become a powerhouse in these fields largely due to its available libraries. Julia is fast making up this ground, with an integrated package manager and the ability to call Python libraries, we will show where the gap has already been bridged and where there is still reason to hold back. We will demonstrate that the language syntax is already as easy as the simplest specialist alternatives (eg. Matlab/Mathematica/S-Plus), but this is a fully fledged programming language, and the libraries are no longer necessarily a reason to hold back.
The Tutorial format
We will begin by introducing the basic syntax, showing the paths of least resistance for users moving from Python, Matlab and other major languages. We will quickly move-on to explain the details of how Julia is different from other scripted programming languages. Typically, these differences, such as the system of multiple dispatch, have been specifically chosen as they allow for faster runtimes from scripted code without impacting on read/writeability. Finally, we will work through some specific examples of Visualisation (Plots.jl), Data Wrangling (ie DataFrame-type options), Numerical Optimisation (JuliaOpt/JuMP.jl) and High-Performance Computing (JuliaGPU/OpenCL.jl, also profiling, benchmarking and debugging if time allows) as an introduction to some of the packages currently available in the Julia package ecosystem.
Note: this is an interactive tutorial please follow the Installation Instructions, which will be posted at https://github.com/daveh19/pydataberlin2017 shortly before the meeting, if you wish to participate!