Hacker News new | past | comments | ask | show | jobs | submit login
Elixir v0.5.0 released (elixir-lang.org)
89 points by loganlinn on May 25, 2012 | hide | past | favorite | 20 comments



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.


I think departing from OOP is good, but I would like to have CLU-style ADT (Abstract Data Types) which is a good fit for Erlang's FP side.


I'm not very familiar with CLU, but isn't that what Elixir's protocols are for (separate the interface from the representation)?


I like Lisp and its descendants, but a long time ago I realized that no s-expr syntax language will ever be "the general programming language".

Use Lisp to find and exploit a niche. Don't fight a popularity battle you will never win.


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.


As an example to this, I really like the xtend docs: http://www.eclipse.org/xtend/#extensionmethods


This is a nice intro. It shows the language features followed by some code examples, sweet, thanks for the link!


I am quite excited about this project. When I was looking at Erlang the syntax totally turned me off, but the rest of it is awesome.


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.


The one thing that really bothers me about its syntax is all the different line terminators. It makes moving around patterns painful.

I sort of dislike other aspects too, but nowhere near as much.


the non s-expr homoiconicity/macro stuff is really cool. http://elixir-lang.org/getting_started/5.html


Is it me or a release notes with a list of what changed is nowhere to be found?


Consider this the initial release. The previous alpha versions were designed completely different, so release notes don't apply for this release. We will maintain a CHANGELOG from now on: https://github.com/elixir-lang/elixir/blob/master/CHANGELOG....


Although it doesn't have a complete list of changes you can check some changes in the blog.

http://elixir-lang.org/blog/

There are some posts with a little summary of what happened during the week.


make try-elixir.org or something )




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: