Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Elixir Release v1.0.0 (github.com/elixir-lang)
214 points by lidashuang on Sept 10, 2014 | hide | past | favorite | 40 comments


Really happy to see the 1.0 milestone reached. I've enjoyed my time with Elixir. It's really approachable, and made a lot of Erlang/OTP concepts start to click for me in ways that they just hadn't, before.

Syntactically, it's a pleasure to use as a long-time Ruby guy, which I suppose is no surprise given José's presence in the Ruby community.

However, all of this aside, what makes me the most excited about Elixir is José, himself. It's been my experience that when a language/framework has a BDFL, something of that person gets infused into its community. Anyone who's interacted with José will tell you he's an incredibly friendly, humble, and downright thankful person.

Elixir is set up for success in so many ways, but the community aspect is the one we just can't afford to ignore.


Lack of jobs is a problem :( It is a nice language but has stiff competition from Go.


I had some limited experience with Go, and some limited experience with elixir, but I walked away feeling like Elixir is better for making distributed systems. I guess the learning curve for Elixir is way higher if someone has no experience with functional languages, but the benefits are probably greater as well.

If I wanted to quickly prototype some highly concurrent service, I'd probably use Go. If I wanted to engineer something that is incredibly scaleable and fault tolerant, I'd probably use Elixir.

The C-ish-syntax and procedural nature of Go is likely to give it more mindshare in the programming community, however, and that can't be ignored.


There definitely are jobs though :)

My company is currently looking for Elixir/Erlang devs to help us build a new decentralized communication platform. Based in London/SF.

If you or anyone is interested, please ping me at ryan@spatch.co.


I envision Erlang shops moving to Elixir.


Hah, yeah, let's port everything for no obvious reason.


There actually are good, obvious reasons to prefer Elixir to Erlang. Syntax is actually significant to productivity. For one quick example, Erlang requires you to terminate statements with either a comma, or a period, depending on whether it's the last statement in the section. If you move code around, you need to go back at the end and fix the commas and periods. Typically, this happens in the form of an error message, which leads to a tedious extra step that happens to me maybe 15 times a day when working with Erlang. That problem doesn't exist in Elixir. There are quite a few other nice things too. Elixir increases productivity in real ways.


The syntax reason doesn't matter to existing Erlang developers -- you get used to the Erlang syntax, same as any other syntax.

The meta-programming on the other hand may well be a huge draw to Erlang shops.


Erlang and Elixir play very well together. I imagine Erlang shops "moving to Elixir" will be in the form of Erlang shops hiring people with Ruby experience and letting them use Elixir so they can get up to speed faster.


I knew Ruby pretty well before trying Erlang and used Erlang before trying Elixir -- I still find Erlang easier to write in that Elixir.

Elixir is more visually similar to Ruby, sure, buts its substantively not very similar, so the visual similarity is, if anything, a detriment, IMO.


Perhaps the problem is you used Erlang before trying Elixir.

For the typical programmer coming outside the Erlang/Elixir environment, Elixir is by far the more familiar and easier to pick up.


May be. It also may be that I have a lot less attachment to superficial syntactical similarity than lots of other people seem to -- I see lots of objections to languages not based on substance but based on the lack of familiar superficial structure, and that's not something that's really bothered me (one advantage, perhaps, of having learned -- even if only at a fairly superficial level in some cases -- several languages with radically different syntax in grade school), so "it superficially looks familiar" isn't bypassing, for me, a stumbling block lots of people seem to have.

In any case, yeah, I'm not saying that my personal Erlang vs. Elixir response is anything more than my personal response (or that Elixir isn't valuable; its certainly something I'd like to find time to explore more deeply and I think it has a lot to offer.)


Syntax is the least of your worries when learning a new language. Elixir isn't Ruby. Some new projects may be developed in Elixir but it will never supplant Erlang.


>Some new projects may be developed in Elixir but it will never supplant Erlang.

I vastly prefer Erlang syntax to Elixir's, but IMO it's way too early in the game to say this. In the unlikely event that the people who were attracted to Elixir because they couldn't handle Erlang's syntax can manage to grasp OTP, I imagine that Elixir would ultimately kill Erlang dead. An Erlang that has the same power and expressiveness, runs on the same VM, and is completely compatible - but looks like Algol - would be an irresistible force.


For the uninitiated, there was a fairly positive critique[1] of Elixir by Joe Armstrong, the creator of Erlang, last year (at least that's what got me hooked to Elixir).

[1] http://joearms.github.io/2013/05/31/a-week-with-elixir.html


That's a great read! Were the warts he pointed out ever addressed?


I'll try to cover couple of them. Hopefully, others can fill in:

- funs have an extra dot in the name: not fixed because that will lead to inconsistency [1]

- send operator: removed earlier this year and the operator is reincarnated as comprehension operator (comprehension being more ubiquitous [2]); although, the proposed syntax wasn't adopted

Not sure about funs and def. It appears that not much was discussed about versions in source file and docstrings inside function definition (module doc is already inside); the later one can be dismissed being a common bikeshed in PL design.

So, yeah, most of the proposals couldn't make it because of complications.

[1] https://groups.google.com/d/topic/elixir-lang-core/_kEBXO0NR...

[2] http://elixir-lang.org/getting_started/18.html


For anyone wanting to know more about Elixir, all the videos from this year's ElixirConf are available on the web [1]. The opening keynote by Dave Thomas is an eye opening "must watch" [2].

[1] http://confreaks.com/events/elixirconf2014

[2] http://confreaks.com/videos/4119-elixirconf2014-opening-keyn...


Jose Valim is a pretty incredible person. Ships top-tier code at a high level consistently, thinks thoughtfully and strategically, and engages with the world in such a calm and positive way. The BEAM ecosystem is richer for his presence.


Agreed. Always pleasant to see his name attached to projects. Gives me reason to look into them further.


I had the pleasure to chat with him for awhile after he gave an Elixir talk at a ruby conference a couple years ago. He is one of the friendliest and most humble people I've ever met, and his work speaks (very highly) for itself.


Required self-promotion: If you're interested, I have produced over 12 hours of content across 106+ videos around Elixir, at http://www.elixirsips.com

I started when I was first learning Elixir. Was already a pro with Ruby and had around 3 months of Erlang experience at the time. The first video was nearly my first experience with Elixir ever. Some of the more fun projects I've built with it have included synthesizers, API clients, and websites.

The release of 1.0 gives me goosebumps. José's done great work, and always does.


Congratulations! Great job getting to 1.0!

The Erlang VM is a beautiful piece of engineering - anything that brings people into its orbit is good for programming.


This release is doubly exciting for me because it means my copy of the Programming Elixir book should be shipping very soon!

I think I can very closely relate to Dave Thomas when he expressed his excitement about Elixir and how similar it was to what he felt when he first encountered Ruby. Early last summer I took a fairly deep dive into Elixir and discovered that it left me with the same feelings as when I started to explore Ruby at the suggestion of my then boss many years ago. It just made sense. From the structure of an application to the way pattern matching works and even the larger ecosystem. I know a lot of people compare Ruby and Elixir because of the superficial syntactical similarities but there's something deeper there that makes me almost giddy: once you know the basics a lot of the rest just sort of seems to fall into place. Unlike a lot of other languages the learning process isn't filled with head-tilting moments of confusion, just lots of nodding up and down while thinking "Of course that's how it works!"


In case you are wonder why the excitement about Exilir ... Exilir allows you to easily create DSL in Erlang.

Phoenix is a great example that has used Exilir to create a DSL that is similar to Ruby on Rails.

http://www.littlelines.com/blog/2014/07/08/elixir-vs-ruby-sh...


A genuine non-flamebait question - if one were to write a Whatsapp-like messaging system today, would you use Erlang, Elixir,Scala,Java 8 or Go?

I'm kind of wondering whether Go is not already eating into Erlang (and Scala). I am not an expert, but I understand that Go is not at par with Erlang today, but I am wondering about a 3-year bet for a startup.


From a technical standpoint, I'd say Elixir.

Advantages over Go:

1. Reliability (OTP, supervisor, pre-emptive scheduling)

2. Clean code (error handling, higher order functions)

3. Far superior package management

Advantages over Erlang:

1. Extensible (Macros)

2. Familiar syntax for Rails developers

That being said, Go definitely has the advantage when it comes to marketing/hype (Google, Unix daddy etc), which as you can judge by the success of Node and Mongo, sadly trumps technical merit even in the tech community.


As most people will tell you, it's not really all about the concurrency with Erlang, but more about the reliability that comes with the general programming model, the runtime and OTP. Compared to that, I'm not even willing to bet that within 3 years Go resolves their typesafety issues.


I (personally) would bet on Elixir, particularly if the team writing it would be learning an alternative like Go anyway.

Go can try to reach parity with Erlang one day...but Elixir already is Erlang...That combined with the fact that Elixir's package management already feels light years ahead of Go's disaster and I think it's a winner. I'm sure I'm wrong and the flames of Go lovers will engulf me in the responses, so take this with a mountain of salt.


Are you taking into account the recent efforts in the Go ecosystem to fix the pkg management issue [1]

I may be short sighted, but I seeing the ecosystem around Go to be much more ... accelerated than Erlang.

[1]https://news.ycombinator.com/item?id=7956078


I would definitely go for either Erlang/OTP or Scala+Akka. No other platform you mention has built-in support for clustering to the extent that OTP and Akka do.


Yeah. Go is good for multi-core, but does not provide anything in terms of multi-node distribution. Even Rob Pike admitted (at GopherCon this year) the language would need some fundamental changes to support that.


Awesome power and maturity of the Erlang VM + modern syntax and hygienic macros... such beauty.


Elixir is an amazing language on top of a time-tested VM and incredible concurrency model. It's been a while since I've been so excited about a language.

It's an incredibly cohesive language that doesn't appear to have any serious flaws, as far as I can see. It's impressive that it's come so far along in such a short amount of time.


I am very happy, I can not wait to get my hands on


Great work Valim, Eric and everyone else!

I was following their progress and there was a constant and steady stream of changes over the last years.


Is it recommended that you learn Erlang before you learn Elixir, or can you jump straight into Elixir without Erlang knowledge?


Erlang knowledge is not a requirement to start learning Elixir. You will end up learning about Erlang programming model anyway because Elixir builds on top of it.

By "programming model" I mean things like immutability, concurrency, fault-tolerance, and the way you design systems with OTP.


You should be able to jump straight into Elixir. If anything, Elixir is probably a reasonable gateway into learning Erlang.

Disclaimer: I studied Erlang before Elixir, so I don't have a fresh perspective.


Well done, guys.




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

Search: