When working on data science projects, you have a wide range of options when it comes to the top programming languages. As well as the heavy hitters such as Python, R, and SQL, there are also other general and specialized languages you can use, such as MATLAB, C/C++, and Go. But what about Julia, a relative newcomer to the scene? Here, we look at what Julia is used for and why you should consider learning it.
What is Julia?
Julia is an exciting and relatively new programming language designed to be the ideal language for scientific computing, machine learning, and data mining. Released in 2012, Julia has rapidly become a favorite among experienced data practitioners.
Designed to possess the speed of C, the general programming ability of Python, and the statistical power of R, Julia is a powerful language that is reasonably simple to learn compared to other languages.
Today, Julia has been downloaded over 40 million times and has forged a community that’s registered over 8,000 packages for the programming language. As of October 2022, Julia ranks 25th and 27th in the PYPL Index and TIOBE Index, respectively. That is to say, while not yet as popular as Python, R, or MATLAB, Julia is a rising star with similar popularity to SAS or Scala.
Pros and Cons of Julia
Of course, it’s easy to get excited about a new programming language, especially when it aims to be so revolutionary. However, as with all languages, Julia has its positives and negatives. Below, we’ve outlined some of the pros and cons of Julia. We explore these in more detail in our article on the rise of Julia:
Julia Pros
- It’s fast. You’ll see a lot of talk about Julia’s speed. In terms of micro-benchmarks (measuring the performance on a range of common code patterns), it performs very well, although these results don’t include compile time. One deep-dive found that Julia’s CSV.jl package for handling delimited text data was 1.5 to 5 times faster than Python’s pandas package at reading CSV data.
- It has a clear syntax. Julia syntax takes inspiration from existing data programming languages. Think of it as MATLAB but with some good ideas taken from Python, R, and Ruby.
- It’s versatile. As we’ll see, there are many uses for Julia. A number of its features, such as its multiple dispatch, make it applicable in many industries and across all kinds of projects.
Julia Cons
- The language is young. As mentioned, Julia is a relative newcomer to the space. As such, it’s not as widespread or well-supported as languages such as Python and R.
- Its ecosystem is small (but growing). As a result of its newness, the community and ecosystem are still relatively small. There are plenty of unique solutions and packages emerging, but compared to heavyweights like Python, it has a long way to go.
- It has some compilation issues. Several sources have noted a lag that comes when compiling code using Julia’s just-in-time (JIT) compiler. JIT compiles all code to machine code before running it. This delay can make it a little frustrating when trying to carry out quick scripting.
Julia Uses
So, as an emerging language, Julia has several pros and cons. But what is Julia used for?
One of the main aims of Julia’s inception was to create a language that enables programmers to write code that is clear, high-level, generic, and abstract code resembling mathematical formulas while still being able to produce fast, low-level machine code usually seen in static languages. Check out the language in action with our Julia tutorial.
Below, we’ve outlined several areas where the programming language excels.
1. Numerical Computing
There is a range of packages that allow Julia programmers to carry out numerical computing tasks. For example, for linear algebra-related tasks, there is the LinerAlgebra.jl module; for root-finding, there is NonlinearSolve; and for automatic differentiation, there is ForwardDiff or Enzyme.
2. Machine Learning
Again, Julia was built with machine learning in mind, particularly scientific machine learning, which focuses specifically on challenges and insights from scientific data sets. As a compiled language designed for parallelism, Julia can offer immense speed on certain machine learning tasks. For example, Julia can significantly improve training times and reduce costs when deploying machine learning models into production.
With a burgeoning community and many new packages for ML, many of which are included in the MLJ framework, Julia can be a great choice for this field. One great example of machine learning in Julia at work comes from an Australian company maintaining powerlines in the country. By creating a 3D map and using Julia machine learning, they were able to identify network failures and potential failures 100x faster than before.
3. Statistics
Another main function of Julia is for statistics and statistical analysis. For example, the StatsKit meta-package contains Julia packages for basic statistics functions, as well as tools for working with DataFrames tabular data, probability distributions, multivariate statistical analysis, hypothesis tests, and more.
4. General Programming
As a general-purpose programming language, Julia is capable of building a wide range of software and functions. For example, the Blink package lets you build Electron GUI apps, GameZero introduces game development for beginners, and Miletus allows you to build financial contracts in Julia.
We’ve mentioned already that Julia was designed to be relatively easy and quick to write programs in, given its straightforward syntax. However, it also runs code and performs calculations very quickly.
5. Web Development
There are several great Julia web development tools available to users. Packages like Genie.jl and Dash.jl. Genie allows users to work with data on the web in Julia. It’s a full-stack web framework providing users with a way of developing web applications with a streamlined and efficient workflow. Dash.jl is a Julia interface to the Dash ecosystem, allowing you to create web applications in Julia.
Julia Examples in Industries
Now that we know what Julia is used for in broad terms, let’s take a look at some examples of Julia in industries. The Julia website lists many of the language’s applications, and we’ve highlighted some of the key ones below:
6. Pharmaceutical Modelling and Development
Julia is widely used in the medical field. Researchers use Julia to identify and test new drugs, optimize treatments, and for diagnosis and treatments. Packages such as BioJulia (a bioinformatics infrastructure) and Pumas (for pharmacometrics modeling, the science of qualifying drug trial information) are commonplace. As an example, pharmaceutical giant Pfizer used Julia to accelerate simulations of new therapies.
7. Parallel Supercomputing
One of the finest examples of Julia’s speed is in the field of astronomy, where the AstroLib.jl bundle of astronomical and astrophysical routines is often used.
An example of Julia’s use in astronomy is the Celeste project, where a research team of astronomers, physicists, computer engineers, and statisticians, developed a new parallel computing method using Julia. After three years of development, they used this method to produce the most accurate catalog of 188 million astronomical objects in just 14.6 minutes, a performance improvement of over 1,000x.
8. Financial Modeling and Management
The performance and flexibility of Julia make it a powerful tool in the world of finance. Professionals use the language for developing models and projections to make financial decisions. One of the popular packages is JuliaFin, which specializes in areas such as asset management, risk management, algorithmic trading, backtesting, and other areas of computational finance, including modeling financial contracts.
9. Robotics
Roboticists from MIT use Julia to program robots. Examples include training them to walk, climb stairs, and cover difficult and hazardous terrain. Again, experts cite the flexibility and generic code of Julia as reasons for its prowess in this sector, as it allows practitioners to write clear functions that may operate on a variety of data types.
One of the popular collections of packages in this area is JuliaRobotics, which includes Julia packages like MotionCaptureJointCalibration.jl, which provides kinematic calibration for robots from motion capture data.
10. Network Security
Network specialists at Cisco used the Flux.jl Julia package to improve network security and for machine learning. The ability to write efficient code in a single language is cited as one of the main benefits of using Julia in this field.
Getting Started With Julia
Evidently, the uses of Julia are significant. Although it’s far from an immediate replacement for Python or R in the field of data science, given how established the latter are, it certainly has the potential to expand your repertoire. Those interested in learning Julia should start with our Introduction to Julia course, which will take you through the key features of this rapidly developing language. You can also find our Julia cheat sheet, which gives a handy reference for the basics of Julia.
blog
An Introduction to Machine Learning with Julia
blog
What is Python Used For? 7 Real-Life Python Uses
blog
Julia vs R - Which Should You Learn?
blog
Progressing from MATLAB to Julia
tutorial
Julia Programming Tutorial For Beginners
Bekhruz Tuychiev
20 min
code-along
Julia for Absolute Beginners
John Verzani