I was recently attempting to formulate a concise list of the things that I liked about Julia. This is what I came up with so far:
automated and practically invisible build system (no more configuration files, make files, compilers, linkers),
multiple dispatch is a natural framework for program development (much less constraining than OOP),
the language is expressive and “obvious”, so that design and coding are relatively easy,
high-performance implementation is possible in a single language, which is both high-level and sufficiently expressive to allow implementation of fine-granularity operations (loops)
reproducibility is easy and built-in (projects can be completely reconstructed at any time in the future),
great community of Julia users and experts that are happy to provide guidance and assistance with “Julian” software development.
If you were to compile your own list, what would it look like?
I am on the fence about the ability to write in Unicode. Well, I am really on the other side of the fence now. I think writing in Unicode breaks the 'obviousness" (explicitness) dictum. See Unicode Look-alikes · GitHub, for instance.
Incredible turn around time. Between reading an advanced algorithm in a technical publication and implementing concise and fast Julia code with similar mathematical notation.
Beauty. I can only see the outer beauty, but Julia’s aliens can confirm the inner beauty.
I don’t know enough about computer science or scientific computing to appreciate/understand most of the other alleged advantages of Julia, but the above is important to me. It is the same reason I like Lyx instead of regular Latex.
Julia is JIT-compiled to machine code with native performance.
Julia is transparent about lower level details such as memory allocations and give you tools to control them yourself.
It is designed from the bottom up to be a standalone language for technical computing, not some heavy baggage bolstered on top of another scripting language like Python. I like that I am not forced to write vectorized code to achieve good performance. On top of that arrays are first-class and quite ergonomic.
Unicode support is nice. I agree that overusing them is problematic, but judicious use can make a numerical scheme much more readable.
I like the fact that, with a little bit of knowledge of performance hints, one can quickly write code in the “obvious” way, and it will be quite performant. I also like it for teaching, as it is free, runs well, is easy to install on all operating systems, and is a good path for reproducible research. I feel like recommending Julia to students is a responsible thing to do.
It’s hard to have a coherent problem-solving discussion in a big thread with lots of people listing problems. Usually easier if they’re separated into their own threads.
this thread is actually much nicer than what it could be, I find this kind of open question difficult to maintain focused. Opening the “What do I dislike in Julia" thread, I fear the TTX, Debugging coming back like a boomerang
There is only one simple reason I like Julia: the way it (seems to) work conforms with my expectations. Of course this can be said for any (person, language) pair, which leads to the proposal that perhaps different people would like different languages, both out of familiarity or how it matches one’s thinking.