Hacker News new | ask | show | jobs
by phtrivier 2540 days ago
Of course they are, but thé article seems to be from someone interested by elixir, rather than someone who used it long enough to discover them (although I might have misunderstood the article.)

From own experience, the problematic parts are :

- deployment being a bit messy if you try to follow 12 factors (might be improving in 1.9)

- absence of a decent debugger

- younth of the ecosystem and size of the community (aka hard the find a maintained lib that works for a few common issues.)

- compiler being a bit slow to my taste (YMMV)

- then, of course, the elephant in the room: the absence of the kind of static type checking that facilitate refactoring ord relatively large codebases.

Nothing unbearable or permanent, but some things to keep in mind. Go try it !

4 comments

BEAM based languages lack "good" debuggers, because they historically depend on tracing instead of debuggers. I recently wrote a blogpost about the tracing landscape in Elixir. https://www.erlang-solutions.com/blog/a-guide-to-tracing-in-... But the main reason is that BEAM languages are mainly used for concurrent computing which is a very difficult problem to debug with classical debuggers. I know it is not a mainstream way to "debug" but a very useful one once one learns it.
Wow, since moving over to Elixir/Phoenix I have been doing all my bug fixing this way but wasn't sure if I was doing it right!
Author here. You are right in that I haven't had a chance to see what a few-years-old Elixir project feels like to run and maintain. I've been following and experimenting with Elixir for a few years and I'm doing more stuff with it recently.

And the post was very much intended to be enthusiastic about cool things, rather than nuanced and looking for problems. So I think your take-away is entirely fair.

Using a combination of IO.inspect and IEx.pry, I've never found myself wanting or needing any other debugging tools.
Can you describe a situation where you would have wanted a debugger that io.inspect couldn't get you out of? I haven't found one yet.