# What do I like about Julia?

**URL:** <https://discourse.julialang.org/t/what-do-i-like-about-julia/89831>\
**Category:** Offtopic\
**Created:** [November 5, 2022, 11:55pm UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831 "2022-11-05T23:55:49Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [November 5, 2022, 11:55pm UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/1 "2022-11-05T23:55:49Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![dylanxyz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dylanxyz/32/36646_2.png) [@dylanxyz](https://discourse.julialang.org/u/dylanxyz)\
**Post date:** [November 6, 2022, 12:10am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/2 "2022-11-06T00:10:59Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [November 6, 2022, 12:18am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/3 "2022-11-06T00:18:38Z")

</div>

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](https://gist.github.com/StevenACoffman/a5f6f682d94e38ed804182dc2693ed4b), for instance.

---

<div class="post-metadata">

**Author:** ![jacobusmmsmit](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jacobusmmsmit/32/217669_2.png) [@jacobusmmsmit](https://discourse.julialang.org/u/jacobusmmsmit)\
**Post date:** [November 6, 2022, 12:21am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/4 "2022-11-06T00:21:58Z")

</div>

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 🙂

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [November 6, 2022, 12:53am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/5 "2022-11-06T00:53:06Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![samerb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/samerb/32/9242_2.png) [@samerb](https://discourse.julialang.org/u/samerb)\
**Post date:** [November 6, 2022, 12:59am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/6 "2022-11-06T00:59:52Z")

</div>

> [@dylanxyz](#):
>
> Julia code that uses math formulas generally looks closer to how you would write them in paper.

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.

---

<div class="post-metadata">

**Author:** ![gtgt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gtgt/32/46932_2.png) [@gtgt](https://discourse.julialang.org/u/gtgt)\
**Post date:** [November 6, 2022, 3:16am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/7 "2022-11-06T03:16:29Z")

</div>

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 🙂

---

<div class="post-metadata">

**Author:** ![mcreel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mcreel/32/30088_2.png) [@mcreel](https://discourse.julialang.org/u/mcreel)\
**Post date:** [November 6, 2022, 7:50am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/8 "2022-11-06T07:50:28Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![zdenek\_hurak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zdenek_hurak/32/53118_2.png) [@zdenek\_hurak](https://discourse.julialang.org/u/zdenek_hurak)\
**Post date:** [November 6, 2022, 9:58am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/9 "2022-11-06T09:58:42Z")

</div>

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

```julia
julia> θ = 2π
6.283185307179586

```

is great. On the other hand, this

```julia
julia> a = 3
3

julia> а + 1
5

```

is… confusing, indeed.

And I am literally frustrated by

```julia
julia> a = 1
1

julia> b = 2
2

julia> a₊b
4

```

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [November 6, 2022, 10:34am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/10 "2022-11-06T10:34:16Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![gustaphe](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gustaphe/32/18174_2.png) [@gustaphe](https://discourse.julialang.org/u/gustaphe)\
**Post date:** [November 7, 2022, 7:38am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/11 "2022-11-07T07:38:08Z")

</div>

- 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

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 7, 2022, 8:57am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/12 "2022-11-07T08:57:42Z")

</div>

> [@gustaphe](#):
>
> Homoiconicity (if it’s valid Julia code it also exists as a Julia object)

Is it though…

> <https://stackoverflow.com/questions/31733766/in-what-sense-are-languages-like-elixir-and-julia-homoiconic/31734725#31734725>

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

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [November 7, 2022, 11:37am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/13 "2022-11-07T11:37:29Z")

</div>

> [@PetrKryslUCSD](#):
>
> See [Unicode Look-alikes · GitHub](https://gist.github.com/StevenACoffman/a5f6f682d94e38ed804182dc2693ed4b), for instance.

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

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [November 7, 2022, 11:46am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/14 "2022-11-07T11:46:15Z")

</div>

> [@DNF](#):
>
> 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.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [November 7, 2022, 11:53am UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/15 "2022-11-07T11:53:02Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [November 7, 2022, 6:53pm UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/16 "2022-11-07T18:53:51Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [November 7, 2022, 7:09pm UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/17 "2022-11-07T19:09:18Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jar1](https://avatars.discourse-cdn.com/v4/letter/j/c0e974/32.png) [@jar1](https://discourse.julialang.org/u/jar1)\
**Post date:** [November 7, 2022, 7:09pm UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/18 "2022-11-07T19:09:21Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [November 7, 2022, 7:59pm UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/19 "2022-11-07T19:59:08Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Syx\_Pek](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/syx_pek/32/6364_2.png) [@Syx\_Pek](https://discourse.julialang.org/u/Syx_Pek)\
**Post date:** [November 8, 2022, 5:18pm UTC](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831/20 "2022-11-08T17:18:26Z")

</div>

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.

[Next page](https://discourse.julialang.org/t/what-do-i-like-about-julia/89831.md?page=2)
