6 ms·
I'm a Ruby guy and I'd love to feel what you're feeling. Where should I start / what should I check out? Bonus points for concept walkthroughs and materials des
by peteforde 8y ago
I'm a Ruby guy and I'd love to feel what you're feeling. Where should I start / what should I check out? Bonus points for concept walkthroughs and materials designed to bring Ruby folks up to speed, specifically concepts that need to be temporarily forgotten or unlearned in order not to get sad.
I like being a polyglot, but my schedule is tight enough that I need to hit the ground running or else I get pulled back to reality pretty quickly. There's a lot of posts and videos out there on Elixir, so curators are incredibly awesome in my world.
- whizzkid 8y agoStart here --> https://elixir-lang.org/getting-started/introduction.html https://elixir-lang.org/getting-started/introduction.html You will start feeling the magic around chapter 4 with pattern matching and the rest gets just better :) Try not to migrate your "how to .." thoughts from other languages into Elixir. It has some uniqe ways to solve everyday problems. Have your interactive elixir console ready to play with as well, good luck!
- peteforde 8y agoAwesome! Thanks so much.
- whizzkid 8y agoNo problem at all! I am also a ruby guy, so i can easily say that Elixir will not disappoint you.
- Klathmon 8y agoPattern matching will break you. I get frustrated at least once a week trying to use it in a language that doesn't have it. My brain just thinks in pattern matching!
- macintux 8y agoIt's unfortunate when I encounter a language that has a crippled implementation of pattern matching (looking at you, Scala). After using Erlang, it's hard to accept anything less.
- vram22 8y agoHow are F#'s and OCaml's implementation of it, in your opinion?
- macintux 8y agoI’ve not tried either, although in my limited exposure to SML it seemed fine. The other related feature whose lack I regularly lament in most languages is multiple function heads, which apparently is rarely used in the ML family tree, bafflingly.
- sgrove 8y agoI haven't heard the term "multiple function heads" - is it similar to Haskell's way of defining functions? e.g. fib 0 = 0 fib 1 = 1 fib n = fib (n-1) + fib (n-2)
- macintux 8y agoExactly. I don’t know what the typical industry term for it might be.
- mgradowski 8y agoPattern matching!
- macintux 8y agoNo, it relies on that, but the creation of multiple function clauses via different matched heads itself isn't simply pattern matching.
- vikingcaffiene 8y agoYou are completely right. I work mostly in TypeScript and JavaScript for day to day and I miss pattern matching so much. Object de-structuring is nice and all but once you've seen the possibilities in a language where its a first class citizen... everything else just seems inadequate.
- Klathmon 8y agoIt's getting there for us in JS land, slowly but surely! There's still a lot of discussions that need to happen (read as "mostly bikeshedding" IMO), but once they settle on the actual syntax, i'd feel comfortable to start using it with compilers. https://github.com/tc39/proposal-pattern-matching https://github.com/tc39/proposal-pattern-matching
- whalesalad 8y agoHighly recommend this: https://codestool.coding-gnome.com/courses/elixir-for-programmers https://codestool.coding-gnome.com/courses/elixir-for-progra... I think it's probably the best way for an experienced programmer to get up to speed on idiomatic Elixir, why you do certain things, etc...
- cuddlecake 8y ago+1 on this. The coding-gnome is the first tutorial that explained OTP, Supervisors and GenServers at a level that helped me understand how to actually use them. Afterwards, official Elixir Documentation also became much more readable and understandable to me. Before that point, some things just seemed to arcane because my understanding of OTP was wrong.
- jypepin 8y agoI'm kind of a ruby guy, and I started with the elixir intro from their website. Very clear and well documented. Then I built a website using Phoenix and learnt through that. Docs in elixir are first class citizen, so everything is very well documented. And just like in ruby/rails land, any question you may google will return a lot of high quality posts with answers!
- w0rd-driven 8y agoThe official docs for Elixir or Phoenix framework go a long way. One thing that sticks out above the rest for me is Elixir koans[0]. They’re extremely rudimentary but I think the project showcases Elixir’s hot reloading if I’m not mistaken and it’s very fluid. Other follow along courses may have taken this approach but I was extremely impressed by how everything fits together. [0] https://github.com/elixirkoans/elixir-koans https://github.com/elixirkoans/elixir-koans
- honkycat 8y agoElixir in Action from Manning, and all of the PragProg books are great
- vikingcaffiene 8y ago"The gateway drug" IMO is the Phoenix framework. It models cleanly to much of what you already know as a Ruby dev. The creator, Chris McCord wrote a book [0] for it that is one of the most well written programming books that I've come across. Chris does a fantastic job of making the information accessible and understandable. You learn by building an app of substance and apply all the concepts that make phoenix a wonderful web framework to use. Towards the end, Chris starts easing you into some of the more "hardcore" concepts and gives you the opportunity to use them on the project you are building throughout the book. That level of quality just seems to permeate the ecosystem as a whole. Others on here have made the point that the waters might start getting muddied as it gets more popular but I've had nothing but great experiences so far and would love to see it really take off. [0] https://www.amazon.com/Programming-Phoenix-1-4-Productive-Reliable/dp/1680502263/ref=sr_1_2?keywords=chris+mccord&qid=1552188771&s=gateway&sr=8-2 https://www.amazon.com/Programming-Phoenix-1-4-Productive-Re...
- mercer 8y agoI found the Programming Phoenix book to be quite nice because it similar to Hartl's Rails tutorial. Seeing where and how the two differed was very useful.