Julia is becoming a language of choice for many developers, especially in the field of data analysis, and it's not a surprise. Julia has grown immensely in only a few short years.
You may wonder why I would post an article about Julia on a Fortran site. The reason is simple: Julia can call Fortran and C directly, and use other language libraries. In other words, you may already have routines that can easily be used by Julia.
If this is your first time hearing about Julia, it is worth your while to learn more about it. If you considered using Julia in the past and decided it wasn't quite mature enough, its time to take another look.
Get to know Julia and become the local expert while the language is relatively young. The number of packages continues to grow and popularity continues to rise. There is a lot to learn, even in its current state, but it's still manageable.
Julia's execution times approach and, in some cases, even surpass the performance of C. To take advantage of Julia's strengths, you will need to become very familiar with the many packages that are available to you.
Julia makes it possible to harness and exploit the power of parallel programming.
Julia also provides the tooling you need to write code for parallel processing. Code can run in fractions of the time required for serial routines.
Learning the Julia language
The JuliaLang.org Website
At a minimum, you can visit the Julia Language webpage for more information, to download, and access documentation.
According to their website, JuliaAcademy is "The definitive source for learning all things Julia for free". Simply enroll or sign up to get started.
You will receive a "Certificate of Completion" following each course. You may have to brush up on your math skills, especially matrices, to better understand some of the materials presented.
A side benefit of following the courses on JuliaAcademy is learning the power of notebooks and more specifically, using nteract, an interactive notebook application that supports several languages including Julia.
Julia wants to be synonymous with the speed of execution and it's clear from the training that knowing your hardware and the right software can make a significant difference.
Julia Programming - Projects (Packt Publishing)
This book is an excellent resource that will help you get started with Julia from setup and a brief introduction to some of the key language features. Once you become familiar with Julia and the JuliaPro IDE, you will begin to appreciate what it can do for you.
As Julia continues to evolve, so does the syntax. The book, though rather recent, is already dated as some features or "functions" are deprecated, but of those most still work with a warning!
Julia Cookbook - (Packt Publishing)
This book is currently under review.
Learn Julia 1.0 by Gary Feierbach, Packt Publishing (April 2019)
Julia Frameworks and Web Applications
Frameworks are the mark of a language coming of age. Genie is one of several frameworks available. The Genie.jl webpage sums it up best:
Genie is a full-stack MVC web framework that provides a streamlined and efficient workflow for developing modern web applications. It builds on Julia’s strengths (high-level, high-performance, dynamic, JIT-compiled), exposing a rich API and a powerful toolset for productive web development.
If there is a downside to using Julia, it's having to download packages and wait for them to pre-compile before you can use them. While this may be a convenience on the execution side, you need to know which packages are available and when to use them on the development side.
Julia offers a robust IDE (JuliaPro), a host of packages, integrated version control, and it is very fast. While this is impressive, Julia has it's downsides too. Julia is NOT a compiled language where a "binary" executable can simply be distributed once the application is written.
Using nteract, or some other notebook application, to work with Julia, as awesome as it may be, limits the distribution of Julia applications to those who already have Julia installed on their system.
From a "developer to developer" standpoint, notebooks are great tools and make it easy to relive a well-documented development process.
As much as I enjoy the simplicity of Julia, I still prefer delivering a compiled solution to my clients. However, it is great to be able to test and prototype ideas using Julia as my testbed.
Related Articles and Resources
JuliaLang.org - The official Julia Language website.
nteract.io - Interactive notebook application