Wrapping Up Julia

We had a lot of fun working in Julia. It is young, but its unique assimilation of the best features of its competitors is not an amalgamation of parts but a coherent and designed assembly. It is fast and dynamic, yet it has strong types and macros.

To us, it feels like the focus on a particular domain—scientific computing—while taking inspiration from many sources has produced a tool that is well thought out and executed. Julia has pushed the frontier of what is possible to achieve when trading off dynamic language ease of use and static language performance, and it may get previously esoteric features like multiple dispatch and real macros in front of everyday programmers.

Julia is, above all else, extremely practical, but unlike other more practical languages, it doesn’t feel that anything we would have wanted was sacrificed to get the job done. If you’ve ever worked with MATLAB or R, using Julia is like moving from Perl to Python or Ruby.

Strengths

Julia excels at number crunching as we’ve seen, but features that scientists need are useful in many domains. Having a solid concurrency story is going to give Julia staying power in the current crop of languages and a leg up against older languages.

Julia’s home page doesn’t have one mention of the word “functional,” yet Julia has clearly been put together by people with a deep respect for functional programming. The line will continuously shift as languages like Julia push functional programming concepts into the mainstream.

Julia’s package system is built right in, and there are already a number of packages for doing many tasks. Previously this level of interactivity—being able to install packages and then continue working—was reserved for people who use Emacs for everything.

Weaknesses

Julia has two downsides, both of which will correct themselves over time. The first is its youth, and the second is the lack of available packages.

Julia is new and still growing, possibly not even out of the awkward teenage years. The syntax may still change. Some things don’t quite work yet. This affects Julia more than the other languages in this book because Julia’s competitors include Fortran, and the libraries people depend on are decades old and rock solid.

R and MATLAB have enormous libraries of packages that have been built up over their lifetimes. Because Julia is new, its package library is pretty small. Julia’s ecosystem is surely going to grow like wildfire due to having packaging built in from the start. The lack of packages is a feature that Julia shares with all new languages.

Final Thoughts

We love and use a lot of languages, but the list of languages we look to first to solve problems is fairly short. Previously we have used Fortran, Python (with NumPy), and MATLAB for scientific computing, but we are now believers in Julia.

If you are more comfortable with functional languages than object-oriented ones, you’ll feel right at home in Julia. If you’ve wanted access to powerful features from Lisp but lacked a language capable of being grokked by the rest of your team, give Julia a try.

As Graydon Hoare, creator of the Rust language, puts it, Julia is a “Goldilocks language.”[71] It’s just right.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset