> This is good shit. The funny thing is that Erlang and Elixir are the same thing under the surface. They “feel” the same to me.
https://joearms.github.io/published/2013-05-31-a-week-with-e...
But I do have a certain duality about my feelings on Elixir
On one hand, yes, it is cool to see more adoption of BEAM, I do wish Erlang could have done that by itself.
I vastly prefer Erlang to Elixir and find it does slightly... taint the simplicity and cleanliness of the syntax Erlang made made me fall in love with, just to be Ruby-like.
I don't feel it actually benefits the language at all past the meta reason of attracting Ruby-ists (which again, isn't necessarily a bad thing by itself)
I'll say my own personal experience is that I knew of Erlang but had never really looked into it or knew of the benefits of OTP and BEAM. Being a Rubyist, Elixir bridged that gap for me and I've been reading more and trying to learn more about this new (to me) environment.
I would also say that Elixir has benefited Erlang because José hasn't just built Elixir, but has gone and helped implement new things into Erlang; the entire environment is benefiting from drawing in new engineers.
I mean, I didn't imply you can't work in Erlang, and I already stated drawing Ruby-ists isn't a bad thing... so I guess I don't get why anything but the middle paragraph was needed here.
Erlang actively makes it hard to write hard to maintain systems because it's syntax is so lean, there's no way to make your FactoryFactoryBeanFactory
Macros can easily be abused, and to me the biggest gain I've seen is removing OTP boilerplate, which is not that much compared to what you get out of it
I will say I haven't used Elixir in anger so I don't know if people are doing more with it now, but I'd just rather not have it.
I can read any Erlang program I wrote 10 years ago with ease. I have difficulty understanding a small Elixir project I wrote just a few months ago.
This could be affected by my background. My trajectory is 99% in the imperative set of languages. BASIC in the 80s, a little COBOL and Pascal, a lot of C and Perl, some Visual Basic, a few PHP, a little eLisp, some Java, a lot of JavaScript for the web but mostly Perl until I picked up Ruby on Rails in the middle 2000s. Some Node and some Python until I got a customer with Django. I'm mostly work with Elixir, Python, Ruby and some React now.
I script in Ruby for myself. The Python ecosystemis for the web looks complicated by design (but simple compared to Java), Elixir is OK for large projects, too cumbersome for small ones.
I sincerely dislike the syntax of GenServers (this would need a blog post) and Ecto is unnecessarily complex and a productivity sink. But the Elixir and Erlang way to pattern matching is heaven.
I have no problem reading my elixir code from a year ago. The erlang otp tftp module, by contrast, is indecipherable, with three layers of module indirection I had to fight against (there was a fatal bug with a misspelled atom that I couldn't trace the code path to). In the end, I just wrote my own tftp.
Of course only LISPs have achieved syntax perfection, all hail LFE and other lispy fronts to erlang!