I followed a link to another post on the blog that was one of the best honest analyses of Erlang. I've been meaning to play with it a while, maybe these upcoming holidays. http://www.evanmiller.org/why-i-program-in-erlang.html
OTOH Kotlin is on that list too, its difficult to choose!
Learning Erlang/Elixir is like learning a new paradigm, or a new way to think about programming. You can then apply these concepts to other languages. It's made me a better programmer.
Kotlin, IMO, is just a "better" java. It would be just learning new syntax if you are already familiar with java like languages.
The language is not hard. What's needed is the OA kind of explanation to teach
1. understanding the breadth (pitfalls, hidden gems, whats there) of the "std lib".
2. the ErlangVM / runtime.
3. Esp the OTP/whatever it's called.
4. Erlang tooling how to build, test, deploy, redeploy a non trivial project.
Evan writes posts about multiple languages, IIRC. I had seen his blog earlier and read a few posts about other languages.
Another blogger with an interesting blog, who writes about multiple languages, is Chris Double. His blog is https://bluishcoder.co.nz (Bluish Coder is an anagram of his name, IIRC). I recently saw a post on his blog called "Introduction to J." The post also has a short list of links for learning J.
A question for any Erlang devs out there. For Erlang neophytes, what are the arguments for learning vanilla Erlang over one of the other ErlangVM languages?
The only other language that has any commercial acceptance is Elixir, so really it boils down to those two.
Elixir has more syntax to learn than Erlang. You could learn just about everything there is to know about Erlang syntax in a half hour, with the exception of a few advanced features like list comprehensions.
Elixir's syntax is much more familiar to most developers. Most consider this a good thing; I'm biased because Erlang's unusual syntax helps me think differently. If I write something that looks like Ruby, I tend to think like Ruby.
Knowing Erlang can only help with Elixir, but it's not necessary. There are probably more jobs with Elixir these days, which is a good thing. I guess I'm not really helping, so I'll shut up.
Erlang is simpler, there are less syntactic constructs to learn, has more information and learning resources available probably due to its age (30+ years),maybe more tools and libraries, that also means more example to look at. It is also the default language the VM is written for. So you can track and follow the latest changes as they are released.
However if you come from Rails or want to do mostly web development, then Phoenix is a nice framework, so maybe a good place to start. Also Elixir has a very friendlier community for newcomers perhaps, kudos to Jose and team there, they went above and beyond to make that happen.
All in all, there is a huge overlap. Some of the harder or more interesting concepts - functional programming aspect, using light-weight processes with isolated heaps for concurrency, performance evaluation and debugging will be the same. It is not like if you pick Erlang or Elixir you'll be wasting time and going in a separate direction, they share a lot of common concepts, and could transition easier if you need to between them in the future.
"Over one of the other" practically means "over Elixir".
Erlang as a language is very simple, without any magic that Elixir has with
its marcos. And there's the tooling aspect: you're not detached from the VM
and its mechanisms, so if anything breaks (and something will break sooner
or later), you have a chance to know where to hit with a hammer.
The underlying libraries you'll use - gen_server, supervision trees etc are all obviously written in Erlang. It may aid in understanding of them. In practice though something like Elixir provides a superset of the functionality of Erlang. If you learn Elixir, learning to read Erlang is not very difficult.
It's like how you kinda need to know js to do anything with coffeescript. The fastest way to learn Elixir is to learn Erlang first.
You will be dealing with Erlang data structures (sans syntax sugar), the Erlang stdlib (Elixir doesn't wrap everything) and Erlang libraries to accomplish anything substantial. Sooner or later you'll have to grok Erlang.
My problem is not that which ErlangVM language to learn but more like how to work with OTP. Most of my Erlang projects are not OTP which is a heretic move according to Erlang devs.
Erlang's syntax is a bit more obscure than other languages that are on BEAM. That being said, there's little reason to learn Erlang directly. It's better to learn OTP and Elixir and Erlang as you need it (e.g. libraries not available in Elixir).
To piggyback on this question: regardless of the merits of each language, do people think that in terms of enterprise adoption and job opportunity Elixir is more interesting than Erlang at this point?
I haven't used Erlang since 16 (maybe 17), but the two features that attracted me to Elixir were support for UTF-8 strings and macros. Erlang may have both now—I'm not sure—but doing localization in Elixir was a lot easier than it was in Erlang back in the day.
I would recommend learning both Erlang and Elixir. They're both amazing languages, I think, and your Erlang skills transfer nicely into Elixir, since you can call any Erlang function from within Elixir code.
If you're the type that looks into sources of libraries when you have questions/problems, learning erlang will be helpful -- most of OTP (basically the standard library) is written in erlang itself, so it's useful to know that. (There's some amount of C code in OTP, but not too much.
[+] [-] rb808|8 years ago|reply
OTOH Kotlin is on that list too, its difficult to choose!
[+] [-] snappyTertle|8 years ago|reply
Kotlin, IMO, is just a "better" java. It would be just learning new syntax if you are already familiar with java like languages.
[+] [-] noncoml|8 years ago|reply
The downsides are:
1. A somewhat flaky build tool(rebar3)
2. Not nearly as many libraries as Python/Java/Ruby/etc..
[+] [-] njharman|8 years ago|reply
[+] [-] macintux|8 years ago|reply
http://www.erlang-in-anger.com
[+] [-] macintux|8 years ago|reply
[+] [-] vram22|8 years ago|reply
Another blogger with an interesting blog, who writes about multiple languages, is Chris Double. His blog is https://bluishcoder.co.nz (Bluish Coder is an anagram of his name, IIRC). I recently saw a post on his blog called "Introduction to J." The post also has a short list of links for learning J.
jsoftware.com is the J site.
https://en.wikipedia.org/wiki/J_(programming_language)
J was developed by Kenneth Iverson, creator of APL.
[+] [-] chops|8 years ago|reply
[+] [-] Hupriene|8 years ago|reply
[+] [-] macintux|8 years ago|reply
Elixir has more syntax to learn than Erlang. You could learn just about everything there is to know about Erlang syntax in a half hour, with the exception of a few advanced features like list comprehensions.
Elixir's syntax is much more familiar to most developers. Most consider this a good thing; I'm biased because Erlang's unusual syntax helps me think differently. If I write something that looks like Ruby, I tend to think like Ruby.
Knowing Erlang can only help with Elixir, but it's not necessary. There are probably more jobs with Elixir these days, which is a good thing. I guess I'm not really helping, so I'll shut up.
[+] [-] rdtsc|8 years ago|reply
However if you come from Rails or want to do mostly web development, then Phoenix is a nice framework, so maybe a good place to start. Also Elixir has a very friendlier community for newcomers perhaps, kudos to Jose and team there, they went above and beyond to make that happen.
All in all, there is a huge overlap. Some of the harder or more interesting concepts - functional programming aspect, using light-weight processes with isolated heaps for concurrency, performance evaluation and debugging will be the same. It is not like if you pick Erlang or Elixir you'll be wasting time and going in a separate direction, they share a lot of common concepts, and could transition easier if you need to between them in the future.
[+] [-] dozzie|8 years ago|reply
Erlang as a language is very simple, without any magic that Elixir has with its marcos. And there's the tooling aspect: you're not detached from the VM and its mechanisms, so if anything breaks (and something will break sooner or later), you have a chance to know where to hit with a hammer.
[+] [-] rkangel|8 years ago|reply
The underlying libraries you'll use - gen_server, supervision trees etc are all obviously written in Erlang. It may aid in understanding of them. In practice though something like Elixir provides a superset of the functionality of Erlang. If you learn Elixir, learning to read Erlang is not very difficult.
[+] [-] Buttes|8 years ago|reply
You will be dealing with Erlang data structures (sans syntax sugar), the Erlang stdlib (Elixir doesn't wrap everything) and Erlang libraries to accomplish anything substantial. Sooner or later you'll have to grok Erlang.
[+] [-] StreamBright|8 years ago|reply
[+] [-] _m8fo|8 years ago|reply
[+] [-] dudul|8 years ago|reply
[+] [-] innocentoldguy|8 years ago|reply
I would recommend learning both Erlang and Elixir. They're both amazing languages, I think, and your Erlang skills transfer nicely into Elixir, since you can call any Erlang function from within Elixir code.
[+] [-] toast0|8 years ago|reply