
Elixir Design Goals (2013) - qubitcoder
http://elixir-lang.org/blog/2013/08/08/elixir-design-goals/
======
iagooar
Once you scratch the surface and get to the functional core, you will never
want to go back to object-oriented programming. Maybe it's just me, but since
I have tried functional programming, I have never felt the need to go back to
OO. Can't say the same about OO, whenever I'm doing it, I kind of tend to
design my code as functional as possible.

Elixir has it all (well, almost). It's fast, it's compiled AND interpreted, it
has a REPL, it has strong concurrency, reliability and scability backed into
the VM. It has a simple and beautiful syntax. It has great tooling and is very
well documented. The only thing you might miss is static typing.

I've been looking for my next programming language of choice after Ruby for
almost 2 years now. Clojure was the closest I got to replacing Ruby, but now
with Elixir it's just such an obvious choice.

If you haven't tried Elixir yet, PLEASE go and do it right now, you won't ever
regret it.

~~~
dozzie
> Elixir has it all (well, almost). It's fast, it's [...]

Dude, Elixir compiles to BEAM, it's slow as hell. Have you ever compared its
processing speed with virtually anything else? It's not processing speed that
Erlang is sold about.

~~~
davedx
This discussion is going in circles.

Fast _at what_?

From what I read, Elixir is very fast at I/O based tasks, especially when
there is lots of blocking involved. For example orchestration layers that push
data between various API's and/or handle many concurrent connections.

Languages that compile to the JVM like Scala or Clojure (or Java of course)
will probably be faster for computation.

I see Elixir as being suitable for the same category of applications as
nodejs.

~~~
pmarreck
> I see Elixir as being suitable for the same category of applications as
> nodejs

While being a hell of a lot saner.

[https://www.quora.com/How-is-Elixir-Phoenix-better-than-
Node...](https://www.quora.com/How-is-Elixir-Phoenix-better-than-Node-
js/answer/Peter-Marreck?__filter__=all&__nsrc__=1&__snid3__=593408976)

------
_nato_
From an Erlang/OTP vantage point, what Elixir _ended up_ being famed for is
its relatively good tooling.

~~~
pfraze
That's interesting, why?

~~~
iagooar
Because Elixir is a modern programming language that ships with out-of-the box
tooling for dependency management, project management, deployment, and so on.
This is something to be observed in any relatively new programming language:
Elixir, Rust, Go, Swift. They all ship with solid tooling that allows
programmers to be more productive from the very beginning without having to
figure out the whole build chain themselves.

------
microcolonel
Elixir is pretty O.K., I use it at work and the restrictions typically have me
writing cleaner code.

~~~
ivoras
Hmmm, the tutorial seems to suggest its strings are linked lists of
characters. Is that true?

~~~
_asummers
You have two -- charlists like you're describing, which are just linked lists
of characters under the hood and UTF-8 binaries. Charlists are denoted with
single quotes and the UTF-8 ones are denoted with double quotes. Truthfully, I
reach for the UTF-8 ones most of the time, but you can get some good
performance gains in e.g. template string building in web frameworks if you
use charlists. In Erlang, all the strings work like charlists FWIU, so they
need to exist at least in some capacity for interop reasons.

[http://elixir-lang.org/getting-started/binaries-strings-
and-...](http://elixir-lang.org/getting-started/binaries-strings-and-char-
lists.html)

~~~
anuragsoni
Are you thinking of IO lists[0] when you talk about templates with respect to
web frameworks?

[0] [https://www.bignerdranch.com/blog/elixir-and-io-lists-
part-2...](https://www.bignerdranch.com/blog/elixir-and-io-lists-part-2-io-
lists-in-phoenix/)

~~~
_asummers
I totally am and now I look silly :) Good catch.

~~~
anuragsoni
Not at all :) If you haven't read that post by bignerdranch, i'd definitely
recommend it. It was interesting read (both parts 1 and 2)

------
tony612
I just wonder what's it's design goals in the future. I noticed that Elixir
team seems working hard on something like GenStage and so on.

