top | item 44747070

(no title)

johnnyjeans | 7 months ago

No rebinding, better fits the grain of the OTP, no AST macros. Last I checked, the debugging experience with elixir was pretty subpar. Erlang is also a fundamentally nicer syntax that I find a great deal more readable. I'm not really sure what the appeal of Elixir as a language is actually supposed to be, outside of people who have spent a lot of time writing Ruby code.

discuss

order

asa400|7 months ago

Full disclosure: I started with Erlang, I get paid to work with Elixir every day, I love Erlang still.

Why someone might like Elixir:

  - slightly less crufty stdlib for a lot of the basic stuff (though we still use the Erlang stdlib all the time)
  - the Elixir community started off using binaries instead of charlists so everything uses binaries
  - great general collections libraries in the stdlib that operate on interfaces/protocols rather than concrete collections (Enum, Stream)
  - macros allow for default impls and a good deal less boilerplate, great libraries like Phoenix and Ecto, and the community seems to be pretty judicious with their use
  - protocols allow datatype polymorphism in a really nice way (I know about behaviours, they are also good)
  - very standard build tool/project layout/generators that have been there from the start (Erlang has caught up here with rebar, it seems)
  - a lot of high quality libraries for web stuff, specifically
  - convenience stuff around common OTP patterns like Task, Task.Supervisor, Agent, etc.
For me, I love the clarity and brevity of Erlang the language but I find Elixir a lot more pleasant to use day-to-day. This is just personal, I am not making a general statement saying Elixir is better.

> Last I checked, the debugging experience with elixir was pretty subpar.

Just curious, why is this? All of the Erlang debugging stuff seems to work.

klibertp|7 months ago

> Just curious, why is this? All of the Erlang debugging stuff seems to work.

But you'd see a decompiled Erlang-ish code in the (WX-based, graphical) debugger, no? Genuinely curious, I think it was like that last I checked, but that was in 2019.

klibertp|7 months ago

> I'm not really sure what the appeal of Elixir as a language is actually supposed to be

Easy:

    - rebinding
    - higher-level OTP abstractions
    - AST macros
    - nicer, more readable syntax
    - (optionally) cleaner stdlib
(Assuming you're not trolling: you chose to focus on features that can only be judged subjectively, and therefore can only be discussed as preferences. It's ok to have them, but actively displaying them is a bit pointless. Objectively measurable features of both languages put them very close together, with both having slight advantages over the other in different areas, on average making them almost equivalent. Especially compared to anything non-BEAM.)

johnnyjeans|7 months ago

I'm not trolling, but I'm very serious about language design after going through a long gauntlet. I don't think making mutation easy, and also having the ability to hide code execution, is necessarily a good practice in a system principally designed for safe, robust and efficient concurrency. Don't use a flathead on a phillips screw.