Doubts about language

Since the language is in beta, it is true that new versions of the language require some changes, however, the language will be in 0.6 any day now and 0.7 will contain all of the features of 1.0. At that point the language development will be far less disruptive. With a few exceptions, from the user perspective most of the changes so far have been simply fixed syntax changes. I have personally found updating packages from 0.4 to 0.5 and from 0.5 to 0.6 to be quite trivial, however getting packages to work on both 0.(n) and 0.(n-1) is somewhat harder.

It is true that Julia is a young language and therefore the ecosystem is poorly maintained compared to R or Python, however, something that doesn’t get said enough is that, because of the way the language works, Julia has some pretty remarkable advantages when it comes to maintenance and extensibility

  • You can write everything in Julia without worrying about performance (compared to R or Python). This is a really, really big deal. It is far easier to figure out how code works in Julia and make changes to it if need be.
  • Julia has lots of really powerful introspection tools that are missing from other languages and I find that it is far easier to reason about multiple dispatch code than C++ style OO code.
  • Julia packages are powerfully extensible in a way that R and Python packages simply aren’t. This is mainly a result of metaprogramming and the ability to extend or overload functions using multiple dispatch. There are quite a few impressive examples, but see, especially ReverseDiff.jl and Flux.jl.