5 ms·
Elixir Users' Survey 2014
- mkohlmyr 12y agoI've been looking at Elixir more and more over the last few weeks since it seems to incorporate many of the things I find lacking in Python. So far the only real hurdle was that I found the introduction text a little obtuse when it came to Mix and OTP (I'm often slow to get through introductory guides, since I'm a learn-by-doing person). Would love to hear from other people who have come from a JavaScript / Python heavy background what their experience has been with the language. Or from people who do web development in general if they feel its a good fit.
- untothebreach 12y agoI come from a javascript/python background, you might want to take a look at the Phoenix web framework[1], as it will give you a good introduction into the language, but also introduce some new concepts (OTP-wise) that will help you think more "elixir-y" (or "erlang-y"). One thing I constantly keep in mind when programming in Elixir is that, using it in the same way you would use Python is a waste. For example, when I use Python, I'm not typically thinking of concurrency (outside of, "how many gunicorn workers will I need?"), because of the situation with concurrency in Python. Using Elixir (or Erlang), you really aren't taking full advantage of the language/runtime/VM if you don't take concurrency into account. If all you want to do is a little string munging, you can do it in Elixir, but it is probably not the best tool for the job. The Mix & OTP guides available on elixir-lang.org are great, but if you want more information on OTP, the OTP chapters in "Learn you some Erlang"[2] are wonderful. You will have to do some translation from Erlang syntax to Elixir, but it is a great way to learn how to think concurrency. 1: https://github.com/phoenixframework/phoenix https://github.com/phoenixframework/phoenix 2: http://learnyousomeerlang.com/content http://learnyousomeerlang.com/content
- mkohlmyr 12y agoPoint well taken as far as concurrency, really reading up on GIL along with working a lot with SOA is part of what is informing my desire to find a more appropriate language. I want to become more proficient in developing web services that scale, as well as expanding my mind somewhat by working with a different model / from a different perspective. I will have a look at the links, for sure. Thanks!
- rubiquity 12y agoI was primarily a Ruby programmer so before I dove into Elixir I mostly wrote Sinatra and Rails apps, and occasionally some Node.js. When I first came to Elixir I mostly approached it as a fun thing to do in my spare time. The language really has some great features for solving problems in concise ways. But as I've spent more and more time with the language I've started to realize it can replace far more of the projects that I used to use Ruby for than I first though. I've worked on a couple projects in Elixir already. I do still like Ruby/Rails for rendering HTML (there's years of hard work in making that an easy thing to do in Rails), so a common web app that I create lately will be Rails as a very thing wrapper around the database for rendering HTML and then an Elixir component for background jobs and WebSockets. That said, a ton of great work is going into Phoenix[0] and I think it's very close to being suitable for both rendering HTML and WebSockets. On my next project I'll probably try and just use Phoenix entirely. 0 - https://github.com/phoenixframework/phoenix https://github.com/phoenixframework/phoenix
- kcorbitt 12y agoI'm really intrigued by Elixir/Erlang and would love to learn more about it. The problem (and this isn't a criticism of the language at all) is that I just can't figure out what I would use it for. Currently I'm mostly working on webapps, and although I have control over the technology I use I'm not sure I can justify using Elixir in my projects. I'm working mostly with rapidly-changing MVPs, and the ability Rails gives me to iterate quickly is valuable to me. If I understand the Erlang value proposition, it's really meant for sending and dealing with millions or billions of messages in a distributed, fault-tolerant way. But since I'm nowhere near that scale (if my MVP can handle 5 concurrent users that's typically good enough to start with), I feel like switching to a language with less of an ecosystem would be almost all downside, even if the resulting code would be more scaleable. I'd love it if someone tells me that I'm wrong.
- davidw 12y agoI'm a fellow Rails user - and also an Erlang user. I think you're mostly right about where Rails and Erlang's sweet spots are, but one thing where you could use Erlang that Rails doesn't do so well is with web sockets, where they hold open a connection. Erlang's a nice complement to Rails in some ways, as it covers some things Rails doesn't do well very, very well. It's definitely a nicer model than Node.js, and for some things, better than Go, which is another one that's strong for some things Ruby's weaker at.
- polskibus 12y agoIf you design your MVP with a REST layer in between written in Erlang/Elixir and use Mnesia for prototyping it could take you a long way and would be v. easy to scale. Mnesia has its limits as a NoSQL database so later you would probably switch to a RDBMS. For HTML-generation it will be better to write the code in Ruby or Python or whatever else.
- Akkuma 12y agoThe large trend of SPA makes this even less of a concern, since nearly all of the views are actually generated on the client.
- 12y ago
- tiffanyh 12y agoI'm really excited about Exilir because it makes creating DSL like the Phoenix Web Framework, trivial. However, I am concerned though that developing in Erlang is a paradigm shift for most developers (eg letting apps crash when unexpected behavior occurs, concurrency model, etc) and Exilir makes it too easy to think you're developing in a procedural language when you're not. I wonder if I'm alone with this concern. One thing simply the Erlang syntax does well is re-enforce the idea of how to fundamentally change how to develop applications to fit its model yet Exilir hides all of that Edit: typo
- tomp 12y agoAre you by any chance familiar with Flask/Sinatra? Is Phoenix in any qualitative way better (more flexible/costumizable/simpler) than those two?
- chrismccord 12y agoPhoenix sits somewhere in b/w Sinatra and Rails custom/simplicity wise, while offering features that neither address, i.e. (realtime communication with browsers, native iOS, & soon android clients). "Qualitatively better" is a loaded question, but by virtue of Erlang VM, Phoenix apps can be distributed across a cluster without extra fanfare. You could run 20 Phoenix routers, load-balanced on a cluster, and everything like Webscokets/pubsub would "just work". i.e., no extra layer in b/w like redis or rabbit, no code changes, and no issues with things like sticky sessions.
- ad_hominem 12y agoFYI it's called Elixir, not Exilir.
- jdeisenberg 12y ago100% agreement here. Erlang doesn't look like an procedural language, so I'm not tempted to think in procedural terms. Also, Erlang's single-binding variables tends to keep me honest.(edit: add next sentence) That being said, Elixir does have some very nice features and is quite well designed; José Valim and other contributors are very open to input.