
What are the main benefits of Elixir compared to Clojure? - simonpure
https://elixirforum.com/t/what-are-the-main-benefits-of-elixir-compared-to-clojure/29959
======
slifin
The main benefits of Clojure compared to Elixir?

I can create

    
    
      - Desktop apps
      - Server-side apps
      - Mobile apps
      - Unity games
      - Live coding music performance
      - AI apps
      - C libraries
      - Native apps
    

I can use libraries with low friction from the following ecosystems:

    
    
      - JavaScript
      - Java
      - .NET
      - Python
    

Runtimes include but limited to:

    
    
      - JavaScript
      - JVM
      - CLR
      - Erlang
      - SubstrateVM
    

Clojure specific advantages:

    
    
      - Datomic
      - Crux
      - Datascript
      - Datahike
    

Most "functional" languages bottom out into some highly mutable SQL thing and
it's gross

Then there are the cultural things, so as you grew as a programmer you
probably went imperative, OO to FP, well with Clojure you go another step:
imperative, OO, FP, Data-driven:
[https://youtu.be/vK1DazRK_a0](https://youtu.be/vK1DazRK_a0)

Technologies like this: [https://unity.com/dots](https://unity.com/dots),
machine learning etc are showing that data and data processing is likely to
yield the next frontiers in computer programming

The next things on the near horizon are data-driven declarative layers to
raise the bar of abstraction like
[https://youtu.be/jkx9F-RIFiY](https://youtu.be/jkx9F-RIFiY)

------
xrd
Seems like the main takeaways from this are that concurrency on BEAM is
amazing and the JVM can't match that. So it feels like it boils down to
whether you like Ruby syntax versus Lisp syntax. For me that is a no brainer,
I love Ruby but always worried about the limitations of the runtime. Is there
anything else I'm missing? BEAM plus Ruby seems like an absolute winner here.

~~~
EdwardDiego
Yeah, that's what I miss about Beam's actors vs. actor implementations in the
JVM - the design pattern was to write actors that blocked, which dramatically
simplifies your code - on Akka actors, for example, you very much should not
block the actor, because it blocks the JVM thread that is being used to run
the pseudo-green threads, which makes it harder to write straightforward code.

~~~
wrmsr
loom ( [https://jdk.java.net/loom/](https://jdk.java.net/loom/) ) is well on
its way :)

