Similarly, for the data science practitioners with a mathematical background the main language is often R. There are an enormous number of libraries which have been written keeping these two languages in mind ranging from Bioinformatics to Linguistics and everything in between.
However, in the enterprise and for all large scale development we often find these domains populated by Java, C# or C++. Which, though very fast, are slow for the use case of feedback driven rapid prototyping.
Programmers spend years trying to master one technology or the other. There is an element of craftsmanship in programming and pride involved in the tools we spend so much time with.
Even though these languages are good in themselves they have their limits when it comes to the problem of concurrency, hackability and execution speed. You really need to master the C / C++ or Java language to have a solution that scales to the modern computing scenario.
As someone who needs to do exploratory programming and has a certain preference for either language the situation is tough!
Desperate times call for desperate measures!
This language has been designed from the ground up to address the problems of Data Science and to be a language which is hackable to the core.
Unlike the Virtual Machines of Python, R etc. which are implemented in C/C++ for performance purposes – Julia is implemented almost in itself. Thus the distinction between a developer / contributor for the language and the user blurs and this is the sweet melting pot of innovation.
In addition to being a language that “Moves like Python, Runs like C” – Julia offers interoperability bridges
Using Julia you can use any Python, R, MATLAB or Mathematica function or library. If these are not enough, you can write your own language bridges for Perl, Ruby, C++ or any of the modern languages like Go or Rust as well.
Though, one of the major selling points of Julia is that it solves the infamous “Two language problem” that we come across as we transition from exploratory work to production code in the pipeline. Many organizations choose to write the code in a compiled language like Java or C++ for the purpose of being able to use the inherent multi-threaded architecture of the modern day machines and clouds.
Julia language leverages the state of the art compiler technology using LLVM and combines the features of a high level language with constructs like first class function with the raw speed of a low level language which is often what is used for writing kernels and game engines for high performance.
In addition to this, Julia has a typing system which facilitates approaching the problem rather than re-stating the problem in the terms of the type system you can leverage the type system to approach and deconstruct the problem itself. This is liberating for the programmers coming from the world of OOP languages like Java, C# and C++.
Julia’s type system sits conveniently between the mainstream industries based Java-like OOP type systems and the academically oriented Haskell or Scala like type systems. This makes Julia extremely approachable as an instrument of problem solving.
Julia language comes with a REPL (Read Evaluate Print Loop) which is a must for any Data Scientist or Programmer who treasures rapid feedback loop and for trying this out you can download a full-fledged Julia distribution from Julia Computing’s JuliaPro distribution.
Julia is not only for Scientific computing but also for general purpose programming like algorithmic challenges as well as web frameworks, but since the inventors of Julia are all from MIT having a leniency towards the scientific community is in its DNA.
An interesting fact about Julia is that, since it’s written in Julia itself, essentially every user of the language is also a developer of the Julia language itself. This is a liberating fact for the curiosity oriented amongst us.
Julia, though very young, has made an impact in many different ways be it from programming language design or to real world HPC (High Performance Computing) needs for the industry. It will very soon reach its 1.0.0 version and the community is steadily moving towards stabilizing the core of the language as much as possible so that the community can build upon this stable foundation.
I am quite positive about the future of Julia and have been an enthusiastic user of the Julia language.
This post was authored by Abhinav Sharma. If you want to sponsor or contribute an article please reach us at firstname.lastname@example.org
Machine Learning Engineer, Product Strategist
Fourtek IT Solutions