Elixir i Phoenix

Ostatnimi czasy sporo o słyszę o Elixirze i jego frameworku webowym - Phoenixie, i zastanawiam się, czy rzeczywiście są to takie wspaniałe narzędzia do webdevu? Elixir bardzo mi przypadł do gustu i pisanie w nim sprawia mi przyjemność, ale nie jestem pewien, czy warto iść w tym kierunku w sensie zawodowym - myślicie, że Elixir i Phoenix sprawdzą się i zaistnieją jako poważna konkurencja dla innych jezyków oraz frameworków?

1 Like

Skoro tak wiele osób wypowiada się pozytywnie na ich temat, to najpewniej świadczy o tym, że “coś w tym jest”. Na pewno niektóre rzeczy można uzyskać w Eliksirze/Phoeniksie łatwiej i przyjemniej niż np. w Railsach - w szczególności takie, które wymagają współbieżności, która nie jest najmocniejszym punktem Rubiego. Co do długoterminowych planów - to wg mnie trudno przewidzieć. Można by pewnie z ostatnich lat wyciągnąć kilka przykładów dobrze zapowiadających się technologii, które pomimo swojej wyjątkowości nie zdobyły rynku, nie uzbierały odpowiednio dużej społeczności, itp. Nie wiem czy ktokolwiek jest w stanie przewidzieć jakie języki i frameworki będą dominować za 10 lat… No może poza tym, że najpewniej dalej będziemy pisać w JavaScripcie :-).

@JAKOT - “czy warto w sensie zawodowym”

Przecież to my tworzymy ten zawód i decydujemy o technologii. Nie pozwól innym decydować za Ciebie. Jeśli Elixir mocno Cię wciągnął (to ważne!), dołącz do społeczności Elixira, zostań ekspertem od języka i ekosystemu, ewangelizuj.

Natomiast merytorycznie - tak - Elixir jest duchowym następcą Rubiego i Erlanga jednocześnie.

Wielu pionierów Rubiego i Railsów z lat 2004-2007 dziś eksperymentuje z Elixirem - Dave Thomas, James Edward Gray II, Jaroslaw Zabiello, Ron Jeffries, pół Thoughtbota, …

Społeczność railsowa od kilku lat nie jest już liderem innowacji. Hackerzy od dawna wyciekają do innych technologii, ekosystem się wyjaławia. Ten proces jest nieodwracalny.

Podsumowując: dobra praca - railsy wciąż i jeszcze długo, lepsza technologia (i szansa na stworzenie sobie dobrej pracy) - zdecydowanie Elixir.

2 Likes

Moje zdanie jest takie: dla poszerzenie swoich horyzontów - tak. Natomiast nie wydaje mi się by Elixir został zaadoptowany na większą skalę. Elixir to tak na prawdę Erlang w ładnym przebraniu. Porównywanie go do Rubiego jest idiotyczne. Jedyne co ma z nim wspólnego to chyba słowo kluczowe “def”… A dlaczego się nie przyjmie? Bo to język funkcyjny, który wymaga innego niż “normalny” podejścia do rozwiązywania problemów. Mam swoją teorię, która mówi, że ludziom łatwiej jest myśleć w sposób strukturalny niż funkcyjny gdyż otaczający nas świat działa właśnie w sposób strukturalny (i dodatkowo wszystko jest zmienne - “mutable”). Ileż to już było języków funkcyjnych, o których się mówiło, że zostaną zaadoptowane na wielką skalę? Lisp, Haskell, Erlang to tylko garstka. Ktoś jeszcze pamięta Scalę? Ależ był hype na nią. Wystarczy spojrzeć na ranking języków (nie jest to żadna wyrocznia, ale myslę, że pewne trendy pokazuje): http://www.tiobe.com/tiobe_index?page=index. W pierwszej 20 nie ma żadnego języka funkcyjnego.

Wracając jednak do Elixira/Erlanga (dobre poznanie Elixira na pewnym etapie wymaga dosyć dobrego poznania Erlanga). Na pewno są obszary w których ten język sprawdzi się. Według mnie są to aplikacje, które wymagają wielu połączeń sieciowych (duża skala współbieżności), ale jest mało logiki biznesowej (modelowanie jej za pomocą tak prymitywnych struktur jakie są w tych językach jest uciążliwe).

Bardzo wyidealizowane podejście. Nigdy nie uważałem, że do używania jakiejś technologii potrzebna jest ogromna adaptacja (inaczej wszyscy webowi programiści powinni pisać w php ;)), ale jednak jakiś mnimalny ekosystem musi istnieć. Znam przypadek firmy, która szukała ponad rok programisty erlanga. Ba, była skłonna zapłacić takiej osobie za samą chęć nauki i potem pisania w nim u nich. I nie znalazła.

1 Like

@Radarek,

  1. Scala akurat się przyjęła. Jak ktoś jest fanem Scali to bez problemu znajdzie pracę. W samej Polsce wyskakuje ze 20 ofert, do tego setki pozycji zdalnych. Język nie musi być w top 10, tak jak napisałeś wystarczy pewien minimalny ekosystem.

  2. Języki funkcyjne się nie przyjęły bo ich UX było żałosne. Elixir jest pierwszym językiem funkcyjnym ze świetnym UX (mniej więcej na poziomie Rubiego). W szczególności Elixir daje wygodę mutability podczas gdy pod spodem jest bezpieczne immutability, że tak oględnie się wyrażę.

  3. “Bardzo wyidealizowane podejście” - u mnie działa :wink:

2 Likes

A Swift? Tak samo funcyjny jak Scala (która jest swoją drogą dość popularna).

Poza tym, Tiobe bym się nie kierował. W TOP10 jest jeden język, w którym bym był skłonny pisać, a i to bez specjalnego entuzjazmu.

Ja mam inną teorię: większości obecnych programistów łatwiej jest myśleć w sposób strukturalny, bo tak ich na początku nauczono.

Ale co do Elixir: tak samo jak Ruby nie zastąpił PHP, tak samo Phoenix nie zastąpi Rails. Ot, część programistów się przeniesie, a na ich miejsce przyjdą nowi. Jest tyle projektów webowych do napisania, że nawet i dla pisania w Haskellu się znajdzie miejsce.

1 Like

Hej,
ostatnio tez duzo slysze o Elixir i Phenix. Na pewno dzieje sie w Berlinie - powstal nawet ostanio meetup. Mysle, ze sporo rzeczy mozna w tym napisac i na pewno sa teamy ktore zgodza sie na ich wdrozenie - szczegolnie, jesli bedzie to dzialac.

A do dyskusji o jezykach - wedlug mnie duzo do powiedzenia ma i bedzie mialo Go - sadzac po miedzy innymi ilosci powaznego softu ktory w tym powstaje. Przy czym jest to jezyk “prymitywny” :wink: i nie cool :smiley:

Organizujemy w Poznaniu meetup mający na celu omówienie i porównanie Elixira i Phoenixa z Ruby on Rails. Przewidzane są prezentacje, panel dyskusyjny, czas na networking i burzliwe dyskusje!

Zapraszam więc w czwartek do Poznania :blush: https://web.facebook.com/events/470753353116149/

Myślę, że dziś Elixir jest trochę w fazie w jakiej był Clojure parę lat temu. Choć trudno dziś mówić, że Clojure przebił się do mainstreamu, to jednak można znaleźć trochę dobrych ofert pracy. Uważam, że Elixir i Phoenix ma szansę na stanie się jeszcze popularniejszym rozwiązaniem niż Clojure. Wnosi to, co jest teraz bardzo na czasie, duża wydajność, stabilność i lekkość pracy rozproszonej.

Rails zatrzymał się w pewnym momencie w rozwoju. Świat popędził naprzód wraz z eksplozją Node i rosnącą rolą JavaScriptu. Co prawda w Rails 5 dodano trochę real time za pomocą websocketów, ale to jest żałośnie słabe w porównaniu do Phoenixa. W Phoenixie każdy request ma swój proces, każde połączenie websocketowe ma także swój oddzielny proces. Więcej, nawet każdy kanał w ramach jednego websocketowego połączenia też ma swój niezależny proces. I te procesy są automatycznie nadzorowane przez erlangowe supervisory które restartują te, które z jakiegoś powodu padły. Oczywiście padaka na jednym z kanałów w połączeniu websocketowego zupełnie nie wpływa na pracę innych procesów. Który system dziś potrafi zaoferować, out of box, taki samoleczący się system, lekko, prosto i wydajnie?

Właśnie sobie powoli przebudowuję jedną starszą aplikację z Rails. Uważam Phoenix i Elm za bardzo obiecującą kombinację do budowania złożonych, rozproszonych, samoleczących się, wydajnych aplikacji webowych czasu rzeczywistego. (Na drugim miejscu bym stawiał Clojure & ClojureScript z Re-frame, Luminus itp)