I used to be very excited about Elixir, not because I hate Erlang's syntax (I actually quite like it), but because I saw in it the opportunity for a mainstream, general purpose language with macros on top of the excellent Erlang runtime.
However, after 2 small projects with Clojure, my thoughts have changed. To me it is the general programming language, and it's only a matter of time until clojure-beam sees the light of day (there's already Joxa).
Also, it occupies a weird spot: after v0.4's redesign, it pretty much kept Erlang's semantics, which made it unlikely to be adopted by old Erlangers and, with the whole OO thing was thrown away, it is too much a departure from Ruby.
Thanks for the feedback and for following Elixir all this time! I also enjoy Clojure a lot and it really gave me some great ideas that were imported into Elixir. While we have Lisp based implementations on top of the Erlang VM, I don't think clojure-beam can easily see the daylight unless it contains significant departures from Clojure. Unfortunately, extending the Erlang VM is nowhere close to extending the Java VM. :(
The problem with the OO approach is that OO didn't suit well an immutable language. The Erlang VM forces us to keep Erlang's semantics and it has been this way before and after the redesign. There is no way around, believe me, I tried. :)
I agree its current version is a stronger departure from Ruby, but also simpler and more powerful than before (now we have all of Erlang in our hands!). We are exchanging the OO familiarity by a better/tighter integration with Erlang runtime, which will, hopefully, be a good reason for people to try it out. I also believe there are plenty of reasons for Erlang developers to try it out, it is more familiar (which actually helps) and addresses many of Erlang shortcomings (it provides protocols, dynamic records, dynamic function generation via macros, etc). During the next weeks, I will write a document more specific to Erlang developers on how Elixir addresses these shortcomings.
When you give Elixir a try, join us at #elixir-lang, I would love to chat more!
> Thanks for the feedback and for following Elixir all this time!
I've been closely following Elixir since it was announced and I should've made it clear that I still think Elixir is a fantastic project
At first I though it would be my doorway into Erlang programming (or Reia, at the time), with the familiar syntax and all, but eventually I learned Erlang and wound up actually enjoying it. Then, an opportunity arose to use Elixir but, because of its early stage (this was right between 0.3 and 0.4), I couldn't deploy it in a production environment, so I ended up choosing Clojure.
So now, between Erlang and Clojure, I can't see where I could justify using Elixir. It's just my personal experience, of course.
> Unfortunately, extending the Erlang VM is nowhere close to extending the Java VM. :(
No need to; one could just adapt ClojureScript to spit out Erlang. It would depend on the JVM and wouldn't support native macros, but it would work ok, I guess.
> The problem with the OO approach is that OO didn't suit well an immutable language.
I think you made a very wise choice when you ditched OO. I'm all for functional & immutable.
> We are exchanging the OO familiarity by a better/tighter integration with Erlang runtime, which will, hopefully, be a good reason for people to try it out.
I understand it might be premature, but I would love to know what kind of projects/developers is Elixir attracting?
> Then, an opportunity arose to use Elixir but, because of its early stage (this was right between 0.3 and 0.4), I couldn't deploy it in a production environment, so I ended up choosing Clojure.
At the time (and still today) I would probably have done the same. We still need a couple more months before we can stamp "Production Ready" in it.
> No need to; one could just adapt ClojureScript to spit out Erlang. It would depend on the JVM and wouldn't support native macros, but it would work ok, I guess.
I guess I can eventually take a look at this as well for fun. :)
> I understand it might be premature, but I would love to know what kind of projects/developers is Elixir attracting?
My background is web development, so expect something in this area in the future. It always amazes me how people like the What's App guys can get 2 million TCP connections in a single Erlang node (source: http://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2...). With web sockets and native clients becoming more and more common, having powerful abstractions around TCP connections seems like a good idea.
Clojure on BEAM will be a go to tool to solve really hard problems. I think Joxa dosn't have a goal to implement Clojure, but a compact modern LISP for BEAM. LFE is just a LISP syntax for core Erlang.
I really wish projects like this would put together a basic, downloadable document on their language. Something that tells the reason and acts as a tour of the language.
If you're talking about the comma-semicolon-period thing, it seemed strange and foreign to me as well--until I realized that , and ; are just && and || with different reactions under unification. Basically, Erlang's grammar is defined such that any expression works with all the spaces stripped out--so it has to have some other way to encode things that would normally use the juxtaposition or line-separatation "operators" of other languages, in a more explicit way. Erlang's case statement, for example--and by extension its multiple-function-definition-under-pattern-matching--is basically one long ternary operator chain: (a?b:(c?d:(e?f:g))), and so forth.
What didn't you like about it? I remember hating the syntax when I first start but forgot why.
After I worked through the initial aversion, the syntax no longer feels worse than say, Python, it is just different. In fact, I wouldn't give up Erlang's pattern matching functionality for anything and I miss that feature in any other language I use.
However, after 2 small projects with Clojure, my thoughts have changed. To me it is the general programming language, and it's only a matter of time until clojure-beam sees the light of day (there's already Joxa).
Also, it occupies a weird spot: after v0.4's redesign, it pretty much kept Erlang's semantics, which made it unlikely to be adopted by old Erlangers and, with the whole OO thing was thrown away, it is too much a departure from Ruby.