Julia or Python? If you're trying to pick out a programing language for your next project, it's
not an easy choice, but let me help you decide. If you're looking into a programing language to dive
into data science, Python is a strong contender. It's become the language for AI, machine learning
and all things numbers. And it's easy to see why. It's got a gentle learning curve. It's
available on just about any computing platform. And thanks to a very active user community,
Python has tons and tons of sample source code out there. There's really not a whole lot you can't do
with Python. At first glance, Julia and Python might seem very similar. They do have a lot of
similarities. Both are relatively high-level languages. They're also both open source.
And they also share a characteristic of being dynamically typed languages-- that applies
to both of them. And that means that they can be used for data science applications. And look,
even the way that you write code for Julia looks kind of similar to the way that you write code
for Python. But there are a few key differences to be aware of. First of all, Julia is all about
performance. Now, of course, no language starts out with the goal of being slow. But Julia
compiles down to efficient native code through the use of LLVM, which is a series of compiler and
toolchain technologies designed around optimizing code compilations for specific platforms.
Python code can be compiled into byte code for some performance gains,
but the advantage still goes to Julia. When benchmarked against other languages
in a series of tests performing common code patterns like sorting, parsing integers,
matrix multiplication and statistics, the Julia compiled code consistently ran faster than Python.
One of Julia's main stated goals from the very beginning was to be competing with compiled C,
which has long been seen as the benchmark for highly performant optimized code.
So that's Julia's -- performance. One of Python's greatest strengths is its extensibility.
What do I mean by extensibility? Well, after we've worked out the core element of our projects,
we can bring in any number of additional libraries to extend the core functionality of the language.
So maybe we've worked out some pretty clever AI logic. We've got some AI logic here. And then
simply by including a few new Python libraries, we can extend that coding to include some-- let's see
--those are glasses. OCR, so they can read text on its own. And then perhaps we can
introduce some robotics to help it get around. All that functionality is just a library call
away and it means that Python really is the "do anything" language. It really is very extensible.
However, that extensibility is perhaps why it lags behind Julia in the performance category. You see,
Python provides a basic functionality and gains its superpowers through the use of these
libraries. So for that benchmark that I mentioned earlier, Python is using things like numPy
for all of its matrix statistics and multiplications. And then it's using OpenBlas
for some other work, like the basic-- that's the B --linear algebra sub-programs. So these are
all libraries that it's needing to use. And these are extremely powerful and widely used libraries,
but using them does require knowledge of those specific libraries, whereas Julia
attempts to bring many of those capabilities and functionalities into the Julia language itself.
And that gives Julia a certain advantage on the speed and simplicity side of things.
With regards to the code that you type and read, neither is terribly complex or confusing,
but they both follow a familiar and easy-to-read format. They're both dynamically typed,
though Julia does something interesting, which is called "multiple dispatch"
with its typing. Now that's where different methods can be used to handle different
combinations of data types. So, for example, if we have the addition of two floats-- so float
plus float --that can be handled differently and optimized differently than the addition of
something else, say, two integers or even a string plus an integer. Now that means with multiple
dispatch, the method most specifically applicable to the data type in the argument-- say five plus
three --is matched to the optimization method that is most optimal, in this case int plus int.
At the end of the day, the decision is up to you. Python is just about available everywhere
that there's a process of capable of processing ones and zeros. It's like your your local general
contractor who's been around for several decades. They've seen every problem and if they can't solve
it themselves, they at least have a subcontractor they can bring in to get the job done.
Julia started off as a general purpose language, but it's really finding its success in the field
of data science and machine learning. It's like the younger upstart who built their approach
around modern tools and techniques to get more done thanks to specialization and efficiency. But
it's also been around long enough where it can't be simply ignored as a flavor of the week. As far
as I can see, Python will be the language to learn, if you're going to learn a language. It
provides a strong set of functionality that only gets stronger when extended
through libraries and frameworks, where Julia is built with performance as its top priority. So
it really comes down to where you need to go and how important it is that you get there quickly.
If you have any questions, please drop us a line below. And if you want to see more
videos like this in the future, please like and subscribe. Thanks for watching.