# One Does Not Simply Walk Into Mordor: Julia, the last language?

**URL:** <https://discourse.julialang.org/t/one-does-not-simply-walk-into-mordor-julia-the-last-language/104544>\
**Category:** Offtopic\
**Tags:** community, julia\
**Created:** [October 3, 2023, 4:11pm UTC](https://discourse.julialang.org/t/one-does-not-simply-walk-into-mordor-julia-the-last-language/104544 "2023-10-03T16:11:45Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![algunion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/algunion/32/51630_2.png) [@algunion](https://discourse.julialang.org/u/algunion)\
**Post date:** [October 3, 2023, 4:11pm UTC](https://discourse.julialang.org/t/one-does-not-simply-walk-into-mordor-julia-the-last-language/104544/1 "2023-10-03T16:11:45Z")

</div>

Just wanted to let you all know that one does not simply give up Julia.

I attempted to do this without being able to evaluate in advance how hooked my brain became on multiple dispatch. With some effort, I can compensate for metaprogramming by using other languages - but multiple dispatch is a f-king virus.

Julia seems to be _ **my last language** _ (the way @mbauman expressed it [here](https://discourse.julialang.org/t/julia-as-first-language/104383/48)).

P. S. The reasons why I attempted to give up the language were philosophical and related to the _ex-cathedra_ way of communication of some elite users (and also associated with _academicism_ - the nasty flavor). I don’t care about it anymore - that can no longer interfere with my Julia way. I know that now.

P. P. S. I don’t want to talk about the above P. S.

---

<div class="post-metadata">

**Author:** ![torrance](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/torrance/32/38990_2.png) [@torrance](https://discourse.julialang.org/u/torrance)\
**Post date:** [October 4, 2023, 4:40am UTC](https://discourse.julialang.org/t/one-does-not-simply-walk-into-mordor-julia-the-last-language/104544/2 "2023-10-04T04:40:53Z")

</div>

I recently had to jump to C++ for a project where hardware compatibility required it. And just like you, I found multiple dispatch had infected my brain. My C++ is now highly templated and I make extensive use of function overloading in a way I doubt I would have before using Julia.

Which is weird, because when I present on Julia and try to extol the virtues of multiple dispatch I often find I can’t make a convincing case.

For that matter, I also refused to give up my use lambdas, higher order functions and more generally functional idioms when jumping to C++. These are obviously not unique to Julia but I haven’t used them to the extent I currently am in any other language, with the exception of Haskell.

---

<div class="post-metadata">

**Author:** ![mrufsvold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mrufsvold/32/31600_2.png) [@mrufsvold](https://discourse.julialang.org/u/mrufsvold)\
**Post date:** [October 4, 2023, 11:47am UTC](https://discourse.julialang.org/t/one-does-not-simply-walk-into-mordor-julia-the-last-language/104544/3 "2023-10-04T11:47:40Z")

</div>

Another thing – the fluidity of Documenter.jl is highly underrated IMO. I am trying to write some docs for a Python project at work, and it is so painful.

---

<div class="post-metadata">

**Author:** ![frylock](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/frylock/32/50213_2.png) [@frylock](https://discourse.julialang.org/u/frylock)\
**Post date:** [October 4, 2023, 12:26pm UTC](https://discourse.julialang.org/t/one-does-not-simply-walk-into-mordor-julia-the-last-language/104544/4 "2023-10-04T12:26:29Z")

</div>

I also am beginning to really like multiple dispatch, but I am not yet fluent with it. Even so, with shockingly little time spent, I have re-written a lot of our tools in Julia, and they run like greased lightning. The vocal Fortran people have stopped talking about how fast Fortran is, because they are so far behind in development … :).

I started out in Fortran, moved through various C flavors, then on a whim tried reading [The Little Schemer](https://mitpress.mit.edu/9780262560993/the-little-schemer/) and [SICP](https://web.mit.edu/6.001/6.037/sicp.pdf) … previously I had dismissed “functional” programming as too academic, but I found it to be very expressive and fun, but it took me a while to get comfortable with it. It forever changed how I wrote code - even in other languages. I’m sure that with time, multiple dispatch will have a similar effect.

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [October 5, 2023, 12:46am UTC](https://discourse.julialang.org/t/one-does-not-simply-walk-into-mordor-julia-the-last-language/104544/5 "2023-10-05T00:46:12Z")

</div>

> [@torrance](#):
>
> when I present on Julia and try to extol the virtues of multiple dispatch I often find I can’t make a convincing case.

Most software was written without multiple dispatch, so it’s not reasonable to convince people that they really need it. Despite having said that, I do really appreciate how multiple dispatch makes composition easier (only fair because a tradeoff of no concrete supertypes is no inheritance of fields). It’s easy to dispatch Julia methods on multiple components instead of a single composite, so it’s also easier to keep larger composites as flat as possible by containing the components instead of other composites. Meanwhile in primarily single-dispatch languages it’s easier for composites to get very nested with multiple stages of forwarding, and if it is at all possible to work around you’d have to know your way around method overloading, templates, virtual overriding, static vs runtime dispatch, yada yada yada.
