- Already know erlang
I feel like this needs a “I’m picking it up as I go along”. Plan makes it sound like a dedicated thing.
I’d differ here between Erlang as a language, which you really don’t need to learn unless you have to. There is no fun in reading its source and having to keep three different kind of expression delimeters in the forehead is somewhat ugly sometimes. Reorganizing some top-level pattern matches is really nasty if one of them was the last one in the chain before the change…
, separates expressions the usual way, very similar to Cs
;, which again in erlang means “end of block”, sometimes it resembles elixirs
end but only sometimes. The last one is
., which ends the definition of a function or anything ultimatively, if you forgot it or put one to many or to early or to late, nothing works anymore with the funniest errormessages, which usually don’t even tell the name of the function you did it wrong. Very similar to a forgotten
; in the early 90 in C code.
, wrong may compile, but don’t have to. If it compiles you are basically lost in runtime errors, if it doesn’t it is similar to
To be honest, I still like to work with erlang directly, because it is much more spread, and I can rely on having it in default repositories of most linux distributions, even if the version available may be a “bit” aged.
On the other hand side, you do have the erlang stdlib and kernel applications, which in fact are transient dependecies of the elixir application. I really think everyone using Elixir should be aware of the erlang modules residing in both applications that aren’t directly wrapped by Elixirs stdlib.
Also sometimes understanding erlang and beam, does help to understand some of the things that feel weird in Elixir…
I’d love to! But I have to say no. I’m rather spending my time for other more enjoyable languages, like haskell or elm. Syntax is really important for me. And after many years coding php I’m really happy using elixir. When I see erlang code I do not feel the desire to learn it. Still I think it would improve my skills with elixir. If in the future I will be able to set aside this feeling I’ll give it a go.
Apparently I need to know enough to read documentation. So I didn’t plan on it, but I’m picking it up (minimally) out of necessity…
for ML languages
I actually “started” by reading Learn You Some Erlang but stopped at the middle of the book for some reason. I guess it’s one of those things I’ll get to some day. Honestly Elixir isn’t that big of an abstraction, it’s one of the reasons I like it.
I answered “Already know erlang” but only because I’ve been doing Elixir long enough to delve into it by reading Programming Erlang by Joe Armstrong and Designing for Scalability with OTP/Erlang by Caesarini and Vinoski. Both are great books for Elixir programmers. They teach so much about the underlying ideas behind OTP.
I’m mostly at a read-only level with erlang, but haven’t written much. It’s not hard to learn to read for Elixirists.
Interesting, I’m waiting on those two books to be delivered and delve into it. I’m not interested in Erlang perse, but I’m more interesting in doing things the Erlang way.
I really believe you have to be wary of applying your existing programming paradigms wrongly to Elixir.
Actually by learning and using elixir day to day, reading and understanding Erlang code becomes easier.
Elixir opens the doors to the BEAM and OTP, with time (and some dedication) I think you get accustomed to Erlang naturally.
I think that I should know the base of Elixir, so I will learn Erlang!
I seem to have come from the other way. I’ve known Erlang for almost ten years, have a lot of code in it. I only picked up Elixir in the past 6 months but I see how thin of a layer it is on top of Erlang and as such it was really easy to pick up, especially by reading it most base Erlang code that makes Elixir, Elixir.
I do not know of the ruby influences on Elixir as ruby is one of the few ‘mainstream’ languages that I do not know yet, but from what little I have known of it is that the ‘monkey-patching’ (Python terminology, unsure if the same in Ruby) is pretty much taken to an extreme, and from my experience in Python (where monkey-patching is possible but is extremely looked down upon, kind of like macros in Elixir) the few areas it was really needed it was still hacky, so I’ve tried to stay away from Ruby overall. Elixir on the other hand is built on Erlang, there is no monkey patching, macros are well thought out and very limited in scope on what they can interact on, and the community seems to askew using macros when ‘functions will do’, which is how it should be.
EDIT: Oh, as well as heard of Ruby’s speed issues, I.E. it is even slower than Python (‘why not just use python then?’ was my general thinking for years)
Like others have stated, by learning and using Elixir more and more, I will inherently begin to understand Erlang more. Then I feel I will need to dive into it deeper to better utilize it’s capabilities with the BEAM and OTP.
Only as much as I need to in order to be able to make use of Erlang libraries, const definition files (for defrecord purposes, normally), and some Erlang code examples here and there.
Besides that, the language doesn’t really appeal to me.
Same with me, I couldn’t finish the book because I just got caught up with other events. I still plan on finishing it and finishing Erlang Programming By Francesco Cesariani and Simon Thompson. There’s a lot in both books about the BEAM and how Erlang works that applies to Elixir. Just understanding why things work they way they do seems very beneficial to me.
I want to know enough Erlang to where I can read code in other projects to understand how they work and how they applied OTP.
I reached this to know whether I should learn Erlang or not. So my answer is No as I don’t want. But I feel it is necessary.
I was deceived that I should learn Erlang.
I don’t think it is necessary, but it is fun! Erlang is an awesome language.
Erlang, as a language, is simple. The specification is small and consistent. Normally the hard part for people learning erlang is that they transition from an OO language, so functional programming is new to them. Then of course the hard part is grasping message passing, processes and the OTP framework. I’d say these are the same things people have problem with starting out with elixir as well and anyone programming in elixir will be able to pick up erlang pretty quickly
Hm, I think it is necessary, since most of the projects for beam are written in erlang. And it’s good practice to read good source code from time to time.
Perhaps I have a different definition of learning.
To know and use a language you need to learn it. To read it you just need to know the basic syntax.
For example I don’t know lots of languages but I am perfectly able to read and understand them even if I wouldn’t be able to develop in them.
It is of course helpful if you know the basic syntax of erlang, but do you need to read erlang code? I guess it is project specific. In my phoenix web development I don’t think I ever had to look at the erlang code for anything.
I guess it is project specific
Yeah, I guess it’s true. I had to write a media server, and since all of the good “server code” is in erlang, I’ve read a lot of it.