What do I like about Julia?

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?

21 Likes
  1. Multiple dispatch.
  2. Julia code that uses math formulas generally looks closer to how you would write them in paper.
  3. Performance.
  4. How different packages can interact with each other (like extending themselves).
  5. Nice community.
2 Likes

I am on the fence about the ability to write in Unicode. Well, I am really on the other side of the fence now. :wink: I think writing in Unicode breaks the 'obviousness" (explicitness) dictum. See Unicode Look-alikes · GitHub, for instance.

I like the @code_xyz macros that allow for introspection. It’s like a game trying to figure out the compiler while you’re coding. I enjoy it :slight_smile:

5 Likes

Two more bulett points:

  • 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.

6 Likes

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.

  1. Julia is JIT-compiled to machine code with native performance.
  2. Julia is transparent about lower level details such as memory allocations and give you tools to control them yourself.
  3. 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.
  4. Unicode support is nice. I agree that overusing them is problematic, but judicious use can make a numerical scheme much more readable.
  5. Expression-oriented language
  6. snake_case variables and function names :slight_smile:
5 Likes

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.

9 Likes

I am somehow on both sides. Being allowed to write this

julia> θ = 2π
6.283185307179586

is great. On the other hand, this

julia> a = 3
3

julia> а + 1
5

is… confusing, indeed.

And I am literally frustrated by

julia> a = 1
1

julia> b = 2
2

julia> a₊b
4
6 Likes

Just because you have a beautiful silver table knife set doesn’t mean you stab yourself with it :slight_smile:

18 Likes
  • Sensible (consistent) choices for array shapes, array interactions, syntax …
  • Homoiconicity (if it’s valid Julia code it also exists as a Julia object)
  • Prototyping QoL, no creating a file just to define a throwaway function etc
2 Likes

Is it though…

(I guess Stefan says “you can decide for yourself whether Julia qualifies” so you can only be correct :slight_smile: )

3 Likes

I think editors will highlight ambiguous characters for you, though it doesn’t seem to actually work for me in VS Code.

With the following VS Code setting checked:
editor.unicodeHighlight.ambiguousCharacters

It works partially for me in the example above: OK for the letters but not for the ₊ symbol.

3 Likes

Very nice! Works for me too, now. I just didn’t find the right setting, I find setting navigation very difficult in VS Code.

1 Like

Why not a constructive “What do I dislike in Julia”?

2 Likes

Go for it! I was interested in the “like” list.

3 Likes

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.

1 Like

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.