Hacker News new | ask | show | jobs
by rorydh 4288 days ago
For anyone who's interested in Erlang (or functional programming in general) but thinks it looks a bit daunting, check out Elixir.

It's a new language which has just turned 1.0, has Ruby/Python like syntax and runs on the Erlang OTP VM (kind of like how clojure runs on the JVM). This gives you all of the amazing concurrent power which has helped the Heroku guys here.

Check it out!: http://elixir-lang.org/

3 comments

For anyone who's interested in Elixir (or functional programming in general) but thinks it looks a bit daunting, check out Erlang.

It's a stable production language which has just turned 17.3, has extensive resources, and runs on its own VM (kind of like how Java runs on the JVM). This gives you all of the amazing concurrent power which has helped the Heroku guys here.

Check it out!: http://erlang.org/

Haha! That's very true.

The reason I'm promoting elixir instead is because I feel that it's easier to pick up in terms of how different it is from imperative and OO languages.

While you are right in how Erlang has a much longer reputation, it's odd though how it hasn't gained much popularity like other languages that have been around for that long.

Elixir seems only syntactically different, to me (with a few nifty feature additions). Erlang is a syntax for BEAM more than anything.

What makes Elixir easier to learn for OO programmers?

Three things that make the experience of developing in Elixir completely different from Erlang: Tooling, libraries, and actual language features (that aren't just skip deep).

Spend 5 minutes developing an app in Elixir and you'll realize why it's not just "only syntactically different" from Erlang.

I gave credit insofar as language features, hygienic macros and pipe ops are both wins in my book.

Which libraries and tools do you think set Elixir apart? Do you prefer it to erlang (I've seen you in #elixir-lang ;)?

Here's an old (18 months ago) exhibition of Elixir's improvements upon Erlang oddities and difficulties:

http://devintorr.es/blog/2013/01/22/the-excitement-of-elixir...

Yes, but Elixir gives you some awesome things (on top of everything available in Erlang obviously) - macros, Ecto (LINQ for Postgres) and pipe operator are my top 3.

NB: I don't use it at work or anything, just read up on it during free time.

I love a good troll :)

I'd say: evaluate both and pick what suits you.

But be aware that all of Erlang's libraries and support ecosystem are available to you when you use Elixir.

But all of Elixir's support and ecosystem are available to you from Erlang, only if you install elixir.

Indeed.

Yeah trying both is definitely the best way to go about it.

Also review previous discussions of Elixir for pointers to additional resources:

https://news.ycombinator.com/item?id=8007383 (july)

https://news.ycombinator.com/item?id=7622280 (april)

As an elixir programmer who loves erlang, programming elixir is programming erlang (compiles down to the same thing). It makes some things a lot easier than they are in erlang- a lot- and syntax is just one of them.

But the really are, in a fundamental way, the same "language".

Elixir is just a lot easier for newbies, and rubyists.

I think it's prettier and more fun, which is why I choose it, but I switch to erlang when needed, and regularly use erlang libraries in my elixir projects.

When two languages have different scoping rules, they don't have the same semantics. When two languages differ in their opinion about macros, they don't have the same semantics.

When two languages have different semantics, they are different languages.

And finally, when two languages have fundamentally different syntaxes, the idioms promoted by their creators differ, and thus problems are solved in different ways.

They are not fundamentally the same language, no.

Erlang and Elixir aren't the same language, but they do share a pretty unique architecture in OTP. When people talk about "the advantages of Erlang" they're frequently really talking about OTP (that, or BEAM's reduction-counting ISA.) So people think it's Erlang that gives you those advantages.

Of course, it's not; any language that targets BEAM could pick up those advantages "for free", in the same way Clojure gets a bunch of Java libraries "for free." But people compare programming languages, not abstract machines or library ecosystems. If you treat Erlang and Elixir as black boxes, hiding BEAM and the OTP (the way someone who doesn't know either language would), then they seem to be much more similar to one-another than any other language is to either of them.

Sharing a common subset does not make them "fundamentally the same language".
>they seem to be much more similar to one-another than any other language is to either of them.
Scoping rules? I what way do they differ? Honest question.
Variables in Elixir can be rebound, and there are no unsafe variables at all in Elixir.
I wouldn't call it "scoping" difference, although I can see why one would think about it as such. It would be a real scoping issue if you could assign variables in outer scopes from inside the nested scopes. Can you?
You can. And even if you couldn't, what I mentioned is still different scoping rules, whether you put scare quotes or not.
"language"
Quotes don't magically let you say wrong things.