Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. The library, largely written in Julia itself, also integrates mature, best-of-breed C and Fortran libraries for linear algebra, random number generation, signal processing, and string processing.
In addition, the Julia developer community is contributing a number of external packages through Julia’s built-in package manager at a rapid pace. Julia programs are organized around multiple dispatch; by defining functions and overloading them for different combinations of argument types, which can also be user-defined.
In an interview with Analytics India Magazine, Julia co-creator Viral Shah speaks about how Julia is relevant to the analytics community.
AIMAnalytics India Magazine: Why Julia? What are the gaps that you saw in current hosts of languages that you planned to address through Julia?
VSViral Shah: Along with my colleagues Jeff Bezanson, Stefan Karpinski, Prof Alan Edelman, I started working on Julia to scratch an itch, being users of similar language ourselves. We wanted a language that did not trade-off performance for productivity, and instead provided both, high performance and high productivity.
The motivation for creating Julia is captured well in our first blog post:
AIM: Do you think that Julia would be able to replace the more popular R? What are your reasons for the same?
VS: R is an amazing open source language, with a large library and a large user base. I do not like to think in terms of replacing one tool with another, but rather having one more high quality tool at hand to address use cases that existing tools do not address. Julia’s focus on performance, expressivity, it’s metaprogramming capabilities, parallelism from the beginning, and interoperability with C/Fortran are a few of the things that programmers find appealing. As a result, in the first 6 months since Julia has had a package manager, over 150 packages have been contributed by the community.
The attractiveness of Julia to the R community is summed up well by the fact that some of the most read R blog posts in 2012 were about Julia:
AIM: What level of adoption do you see currently for Julia as a preferred tool in the analytics industry?
VS: Julia is currently seeing adoption in the world of scientific computing. However, upcoming data scientists need to use many of the same tools in the analytics industry. The community is currently working on tools such as integrating with Amazon Web Services, and being able to work with datasets from Hadoop File System (HDFS), which is becoming the de-facto standard for users of big data. As these projects become more robust, I feel that Julia will see adoption in the analytics industry.
Interestingly, the authors of both these packages, Amit Murthy and Tanmay Mohapatra, are both based in Bangalore.
AIM: How easy or difficult do you think it is for an R user to migrate to Julia as a preferred tool in terms of usability?
VS: A number of well known R developers are now also contributing to Julia. Packages such as Distributions and DataFrames provide capabilities in Julia that R users are familiar with.
In addition, with a number of machine learning and optimization becoming quickly available in Julia, programmers are likely to find that the ability to rapidly prototype, and deploy the same code in production without rewriting in C/C++/Java is quite attractive.
AIM: What is the way forward for Julia?
VS: The way forward for Julia is to first and foremost work towards a 1.0 release, which will have stable APIs and long term support. In addition, we already have a great community and would like to build upon it further.
Specifically, I would like to see it in use in more universities – especially since it can save educational institutions large amounts of licensing fees from use of commercial software. Also, when students are trained on open source software, they learn skills that are not hostage to a particular company or product, and can stay with them through their professional careers.
AIM: What are some of the other cool stuff that you are working on or plan to start in future?
VS: Currently, I remain largely focused on making Julia the best it can be. I am also the author of a tool for conservation – Circuitscape, and I will most likely be porting that to Julia too, given its computational demands:
AIM: Anything else you wish to add?
VS: Being based in Bangalore myself, and having done all my work on Julia from Bangalore, I would love to see more contributions to Julia and open source projects in general from India. Recently, the folks at Hasgeek held a Julia Hacknight, where I came across a number of wonderful young folks who I expect will take up Julia.
I hope we will see more engineering colleges and research institutions in India take up Julia and contribute to it, and I am happy to help out in any way I can.
Below is the two part video tutorial on Julia by Viral-